diff --git a/apps/workers/src/workers/schedule.ts b/apps/workers/src/workers/schedule.ts index 268a82340d..4221984455 100644 --- a/apps/workers/src/workers/schedule.ts +++ b/apps/workers/src/workers/schedule.ts @@ -51,4 +51,11 @@ export async function setupSchedules() { { pattern: '0 0 1 * * *' }, { opts: { attempts: 1 } }, ) + + // Every day at 11 AM to add smth - This will be deleted after its run once + await maintenanceQueue.upsertJobScheduler( + 'fillOnboardingsAsCompletedJob', + { pattern: '0 0 11 * * *' }, + { opts: { attempts: 1 } }, + ) } diff --git a/apps/workers/src/workers/worker-definitions/maintenanceWorker.ts b/apps/workers/src/workers/worker-definitions/maintenanceWorker.ts index 2f338ef652..440a896e95 100644 --- a/apps/workers/src/workers/worker-definitions/maintenanceWorker.ts +++ b/apps/workers/src/workers/worker-definitions/maintenanceWorker.ts @@ -16,6 +16,7 @@ const jobMappings = { requestDocumentSuggestionsJob: jobs.requestDocumentSuggestionsJob, scaleDownMcpServerJob: jobs.scaleDownMcpServerJob, updateMcpServerLastUsedJob: jobs.updateMcpServerLastUsedJob, + fillOnboardingsAsCompletedJob: jobs.fillOnboardingsAsCompletedJob, } export function startMaintenanceWorker() { diff --git a/packages/core/src/jobs/job-definitions/maintenance/fillOnboardingsAsCompletedJob.ts b/packages/core/src/jobs/job-definitions/maintenance/fillOnboardingsAsCompletedJob.ts new file mode 100644 index 0000000000..f6f1cbb52d --- /dev/null +++ b/packages/core/src/jobs/job-definitions/maintenance/fillOnboardingsAsCompletedJob.ts @@ -0,0 +1,24 @@ +import { Job } from 'bullmq' +import { Result } from '../../../lib/Result' +import { workspaceOnboarding } from '../../../schema/models/workspaceOnboarding' +import { database } from '../../../client' +import { isNull } from 'drizzle-orm' + +export type FillOnboardingsAsCompletedJobData = Record + +export const fillOnboardingsAsCompletedJob = async ( + _: Job, +) => { + const updatedOnboardings = await database + .update(workspaceOnboarding) + .set({ + completedAt: new Date(), + }) + .where(isNull(workspaceOnboarding.completedAt)) + .returning() + + return Result.ok({ + success: true, + updatedOnboardings: updatedOnboardings.length, + }) +} diff --git a/packages/core/src/jobs/job-definitions/maintenance/index.ts b/packages/core/src/jobs/job-definitions/maintenance/index.ts index 796fa8d728..2473edadb6 100644 --- a/packages/core/src/jobs/job-definitions/maintenance/index.ts +++ b/packages/core/src/jobs/job-definitions/maintenance/index.ts @@ -4,3 +4,4 @@ export * from './refreshProjectsStatsCacheJob' export * from './refreshProjectStatsCacheJob' export * from './scheduleWorkspaceCleanupJobs' export * from './cleanupWorkspaceOldLogsJob' +export * from './fillOnboardingsAsCompletedJob'