mirror of
https://github.com/nicotsx/zerobyte.git
synced 2026-06-03 21:59:36 -04:00
42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import { Job } from "../core/scheduler";
|
|
import { backupsService } from "../modules/backups/backups.service";
|
|
import { logger } from "@zerobyte/core/node";
|
|
import { db } from "../db/db";
|
|
import { withContext } from "../core/request-context";
|
|
|
|
export class BackupExecutionJob extends Job {
|
|
async run() {
|
|
logger.debug("Checking for backup schedules to execute...");
|
|
|
|
const organizations = await db.query.organization.findMany({});
|
|
|
|
let totalExecuted = 0;
|
|
|
|
for (const org of organizations) {
|
|
await withContext({ organizationId: org.id }, async () => {
|
|
const scheduleIds = await backupsService.getSchedulesToExecute();
|
|
|
|
if (scheduleIds.length === 0) {
|
|
return;
|
|
}
|
|
|
|
logger.info(`Found ${scheduleIds.length} backup schedule(s) to execute for organization ${org.name}`);
|
|
|
|
for (const scheduleId of scheduleIds) {
|
|
backupsService.executeBackup(scheduleId).catch((err: Error) => {
|
|
logger.error(`Error executing backup for schedule ${scheduleId}:`, err);
|
|
});
|
|
}
|
|
|
|
totalExecuted += scheduleIds.length;
|
|
});
|
|
}
|
|
|
|
if (totalExecuted === 0) {
|
|
logger.debug("No backup schedules to execute");
|
|
}
|
|
|
|
return { done: true, timestamp: new Date(), executed: totalExecuted };
|
|
}
|
|
}
|