Download apps/worker/src/processors/inbox/initial-setup.ts from AUXteam/Midday: direct link, hf CLI and curl.
- Browser
- Download file 2.39 kB
-
https://huggingface.co/spaces/AUXteam/Midday/resolve/main/apps/worker/src/processors/inbox/initial-setup.ts
- Command line
-
hf download hf://spaces/AUXteam/Midday/apps/worker/src/processors/inbox/initial-setup.ts
-
curl -L -o initial-setup.ts https://huggingface.co/spaces/AUXteam/Midday/resolve/main/apps/worker/src/processors/inbox/initial-setup.ts
2.39 kB
| import { updateInboxAccount } from "@midday/db/queries"; | |
| import { triggerJob } from "@midday/job-client"; | |
| import type { Job } from "bullmq"; | |
| import { registerDynamicScheduler } from "../../schedulers/registry"; | |
| import type { InboxProviderInitialSetupPayload } from "../../schemas/inbox"; | |
| import { getDb } from "../../utils/db"; | |
| import { generateQuarterDailyCronTag } from "../../utils/generate-cron-tag"; | |
| import { BaseProcessor } from "../base"; | |
| /** | |
| * Initial inbox setup processor | |
| * Registers a dynamic scheduler for the inbox account and triggers initial sync | |
| */ | |
| export class InitialSetupProcessor extends BaseProcessor<InboxProviderInitialSetupPayload> { | |
| async process(job: Job<InboxProviderInitialSetupPayload>): Promise<{ | |
| inboxAccountId: string; | |
| schedulerRegistered: boolean; | |
| }> { | |
| const { inboxAccountId } = job.data; | |
| const db = getDb(); | |
| this.logger.info("Starting initial inbox setup", { inboxAccountId }); | |
| // Register dynamic scheduler for this inbox account | |
| // The scheduler will run every 6 hours with a random minute based on account ID | |
| const cronPattern = generateQuarterDailyCronTag(inboxAccountId); | |
| try { | |
| await registerDynamicScheduler({ | |
| template: "inbox-sync-scheduler", | |
| accountId: inboxAccountId, | |
| cronPattern, | |
| }); | |
| this.logger.info("Dynamic scheduler registered for inbox account", { | |
| inboxAccountId, | |
| cronPattern, | |
| }); | |
| // Store the scheduler job key in the database (similar to scheduleId in Trigger.dev) | |
| // The job key is: `inbox-sync-${inboxAccountId}` | |
| const schedulerJobKey = `inbox-sync-${inboxAccountId}`; | |
| await updateInboxAccount(db, { | |
| id: inboxAccountId, | |
| scheduleId: schedulerJobKey, // Store the BullMQ repeatable job key | |
| }); | |
| // Trigger initial sync | |
| await triggerJob( | |
| "sync-scheduler", | |
| { | |
| id: inboxAccountId, | |
| manualSync: true, | |
| }, | |
| "inbox-provider", | |
| ); | |
| this.logger.info("Initial inbox setup completed", { inboxAccountId }); | |
| return { | |
| inboxAccountId, | |
| schedulerRegistered: true, | |
| }; | |
| } catch (error) { | |
| this.logger.error("Failed to register inbox scheduler", { | |
| inboxAccountId, | |
| error: error instanceof Error ? error.message : "Unknown error", | |
| }); | |
| throw error; | |
| } | |
| } | |
| } | |