diff --git a/src/lib/queue/workers/maintenance.ts b/src/lib/queue/workers/maintenance.ts index 6348cdd..b982433 100644 --- a/src/lib/queue/workers/maintenance.ts +++ b/src/lib/queue/workers/maintenance.ts @@ -1,6 +1,9 @@ import { Worker, type Job } from 'bullmq'; +import { and, eq, lt } from 'drizzle-orm'; import type { ConnectionOptions } from 'bullmq'; +import { db } from '@/lib/db'; +import { formSubmissions } from '@/lib/db/schema/documents'; import { logger } from '@/lib/logger'; import { QUEUE_CONFIGS } from '@/lib/queue'; @@ -15,8 +18,14 @@ export const maintenanceWorker = new Worker( break; } case 'form-expiry-check': { - // TODO(L3): mark expired form submissions - logger.info('Form expiry check — not yet implemented'); + const result = await db + .update(formSubmissions) + .set({ status: 'expired' }) + .where( + and(eq(formSubmissions.status, 'pending'), lt(formSubmissions.expiresAt, new Date())), + ) + .returning({ id: formSubmissions.id }); + logger.info({ expired: result.length }, 'Form expiry check complete'); break; } default: