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);
}
