Files
outline/server/routes/api/cron.ts
2022-05-16 12:44:22 -07:00

37 lines
1.1 KiB
TypeScript

import { Context } from "koa";
import Router from "koa-router";
import { AuthenticationError } from "@server/errors";
import CleanupDeletedDocumentsTask from "@server/queues/tasks/CleanupDeletedDocumentsTask";
import CleanupDeletedTeamsTask from "@server/queues/tasks/CleanupDeletedTeamsTask";
import CleanupExpiredFileOperationsTask from "@server/queues/tasks/CleanupExpiredFileOperationsTask";
import InviteReminderTask from "@server/queues/tasks/InviteReminderTask";
const router = new Router();
const cronHandler = async (ctx: Context) => {
const { token, limit = 500 } = ctx.body as { token?: string; limit: number };
if (process.env.UTILS_SECRET !== token) {
throw AuthenticationError("Invalid secret token");
}
await CleanupDeletedDocumentsTask.schedule({ limit });
await CleanupExpiredFileOperationsTask.schedule({ limit });
await CleanupDeletedTeamsTask.schedule({ limit });
await InviteReminderTask.schedule();
ctx.body = {
success: true,
};
};
router.post("cron.:period", cronHandler);
// For backwards compatibility
router.post("utils.gc", cronHandler);
export default router;