6aee42ab22
closes https://github.com/twentyhq/core-team-issues/issues/1113 Three things I am not sure about - - Should we have a variable just like DISABLE_DB_MIGRATIONS to control cron job registration behavior, i.e., DISABLE_CRON_JOBS_REGISTRATION? - The location of the command ie, folder placement - https://github.com/twentyhq/twenty/pull/12791/files#r2161734131
95 lines
3.7 KiB
TypeScript
95 lines
3.7 KiB
TypeScript
import { Logger } from '@nestjs/common';
|
|
|
|
import { Command, CommandRunner } from 'nest-commander';
|
|
|
|
import { CalendarEventListFetchCronCommand } from 'src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-event-list-fetch.cron.command';
|
|
import { CalendarEventsImportCronCommand } from 'src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-import.cron.command';
|
|
import { CalendarOngoingStaleCronCommand } from 'src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-ongoing-stale.cron.command';
|
|
import { MessagingMessageListFetchCronCommand } from 'src/modules/messaging/message-import-manager/crons/commands/messaging-message-list-fetch.cron.command';
|
|
import { MessagingMessagesImportCronCommand } from 'src/modules/messaging/message-import-manager/crons/commands/messaging-messages-import.cron.command';
|
|
import { MessagingOngoingStaleCronCommand } from 'src/modules/messaging/message-import-manager/crons/commands/messaging-ongoing-stale.cron.command';
|
|
import { CronTriggerCronCommand } from 'src/modules/workflow/workflow-trigger/automated-trigger/crons/commands/cron-trigger.cron.command';
|
|
|
|
@Command({
|
|
name: 'cron:register:all',
|
|
description: 'Register all background sync cron jobs',
|
|
})
|
|
export class CronRegisterAllCommand extends CommandRunner {
|
|
private readonly logger = new Logger(CronRegisterAllCommand.name);
|
|
|
|
constructor(
|
|
private readonly messagingMessagesImportCronCommand: MessagingMessagesImportCronCommand,
|
|
private readonly messagingMessageListFetchCronCommand: MessagingMessageListFetchCronCommand,
|
|
private readonly messagingOngoingStaleCronCommand: MessagingOngoingStaleCronCommand,
|
|
private readonly calendarEventListFetchCronCommand: CalendarEventListFetchCronCommand,
|
|
private readonly calendarEventsImportCronCommand: CalendarEventsImportCronCommand,
|
|
private readonly calendarOngoingStaleCronCommand: CalendarOngoingStaleCronCommand,
|
|
private readonly cronTriggerCronCommand: CronTriggerCronCommand,
|
|
) {
|
|
super();
|
|
}
|
|
|
|
async run(): Promise<void> {
|
|
this.logger.log('Registering all background sync cron jobs...');
|
|
|
|
const commands = [
|
|
{
|
|
name: 'MessagingMessagesImport',
|
|
command: this.messagingMessagesImportCronCommand,
|
|
},
|
|
{
|
|
name: 'MessagingMessageListFetch',
|
|
command: this.messagingMessageListFetchCronCommand,
|
|
},
|
|
{
|
|
name: 'MessagingOngoingStale',
|
|
command: this.messagingOngoingStaleCronCommand,
|
|
},
|
|
{
|
|
name: 'CalendarEventListFetch',
|
|
command: this.calendarEventListFetchCronCommand,
|
|
},
|
|
{
|
|
name: 'CalendarEventsImport',
|
|
command: this.calendarEventsImportCronCommand,
|
|
},
|
|
{
|
|
name: 'CalendarOngoingStale',
|
|
command: this.calendarOngoingStaleCronCommand,
|
|
},
|
|
{ name: 'CronTrigger', command: this.cronTriggerCronCommand },
|
|
];
|
|
|
|
let successCount = 0;
|
|
let failureCount = 0;
|
|
const failures: string[] = [];
|
|
const successes: string[] = [];
|
|
|
|
for (const { name, command } of commands) {
|
|
try {
|
|
this.logger.log(`Registering ${name} cron job...`);
|
|
await command.run();
|
|
this.logger.log(`Successfully registered ${name} cron job`);
|
|
successCount++;
|
|
successes.push(name);
|
|
} catch (error) {
|
|
this.logger.error(`Failed to register ${name} cron job:`, error);
|
|
failureCount++;
|
|
failures.push(name);
|
|
}
|
|
}
|
|
|
|
this.logger.log(
|
|
`Cron job registration completed: ${successCount} successful, ${failureCount} failed`,
|
|
);
|
|
|
|
if (failures.length > 0) {
|
|
this.logger.warn(`Failed commands: ${failures.join(', ')}`);
|
|
}
|
|
|
|
if (successCount > 0) {
|
|
this.logger.log(`Successful commands: ${successes.join(', ')}`);
|
|
}
|
|
}
|
|
}
|