import type { NextRequest } from "next/server"; import { NextResponse } from "next/server"; import logger from "@calcom/lib/logger"; import { PrismaQueuedFormResponseRepository } from "@calcom/lib/server/repository/routingForm/queuedFormResponse/PrismaQueuedFormResponseRepository"; import { QueuedFormResponseService } from "@calcom/lib/server/service/routingForm/queuedFormResponse/QueuedFormResponseService"; import prisma from "@calcom/prisma"; function validateRequest(request: NextRequest) { const apiKey = request.headers.get("authorization") || request.nextUrl.searchParams.get("apiKey"); if (![process.env.CRON_API_KEY, `Bearer ${process.env.CRON_SECRET}`].includes(`${apiKey}`)) { return NextResponse.json({ message: "Not authenticated" }, { status: 401 }); } return null; } export async function handleQueuedFormResponseCleanup(request: NextRequest) { const authError = validateRequest(request); if (authError) { return authError; } try { const queuedFormResponseRepo = new PrismaQueuedFormResponseRepository(prisma); const queuedFormResponseService = new QueuedFormResponseService({ logger, queuedFormResponseRepo, }); const result = await queuedFormResponseService.cleanupExpiredResponses({ batchSize: 1000, }); return NextResponse.json({ status: "success", data: result, }); } catch (error) { console.error("Error during queued form response cleanup:", error); return NextResponse.json( { status: "error", message: "Failed to cleanup queued form responses" }, { status: 500 } ); } }