37 lines
1.2 KiB
JavaScript
37 lines
1.2 KiB
JavaScript
import { createQueue, defaultJobOpts } from "../index.js";
|
|
import { cleanRemoteFiles } from "./clean-remote-files.js";
|
|
import { deleteFile } from "./delete-file.js";
|
|
import config from "../../../config/index.js";
|
|
const processors = {
|
|
cleanRemoteFiles,
|
|
deleteFile
|
|
};
|
|
async function process(job) {
|
|
const processor = processors[job.name];
|
|
if (processor === undefined) return "skip: unknown job name";
|
|
return await processor(job);
|
|
}
|
|
const [objectStorageQueue_, objectStorageInitQueue] = createQueue("objectStorage", process, {
|
|
concurrency: 16
|
|
});
|
|
export const objectStorageQueue = objectStorageQueue_;
|
|
export async function objectStorageInit() {
|
|
await objectStorageInitQueue();
|
|
if (config.mediaCleanup?.cron) {
|
|
await objectStorageQueue.upsertJobScheduler("cleanRemoteFiles", {
|
|
pattern: "0 0 * * *"
|
|
}, {
|
|
name: "cleanRemoteFiles",
|
|
opts: defaultJobOpts
|
|
});
|
|
}
|
|
}
|
|
export function createDeleteObjectStorageFileJob(key) {
|
|
return objectStorageQueue.add("deleteFile", {
|
|
key: key
|
|
}, defaultJobOpts);
|
|
}
|
|
export function createCleanRemoteFilesJob() {
|
|
return objectStorageQueue.add("cleanRemoteFiles", {}, defaultJobOpts);
|
|
}
|