/home/techb158/balavpn.abdallabala.com/src/app/api/projects/[projectId]/scheduled-reports
NameSizeModeActions
[scheduledReportId]/-0755rm
route.js15230644editdlrm
Edit: /home/techb158/balavpn.abdallabala.com/src/app/api/projects/[projectId]/scheduled-reports/route.js (1523B)
const { prisma } = require("../../../../../lib/prisma"); const { getActorFromRequest } = require("../../../../../lib/request-context"); const { requireProjectAccess } = require("../../../../../lib/tenant-guard"); const { jsonResponse, errorResponse } = require("../../../../../lib/http"); export async function GET(request, { params }) { try { const { projectId } = await params; const actor = await getActorFromRequest(request); await requireProjectAccess(actor, projectId, "report:export"); const schedules = await prisma.scheduledReport.findMany({ where: { projectId }, orderBy: { createdAt: "desc" } }); return jsonResponse(schedules); } catch (error) { return errorResponse(error); } } export async function POST(request, { params }) { try { const { projectId } = await params; const actor = await getActorFromRequest(request); await requireProjectAccess(actor, projectId, "report:export"); const body = await request.json(); const { reportType, format, cronExpr, recipients } = body; const schedule = await prisma.scheduledReport.create({ data: { projectId, reportType: reportType || "executive.html", format: format || "html", cronExpr: cronExpr || "0 8 * * 1", recipients: recipients || [], createdById: actor.userId, nextRunAt: new Date(Date.now() + 86400000) } }); return jsonResponse(schedule, 201); } catch (error) { return errorResponse(error); } }