/home/techb158/cosmic-risk.abdallabala.com/src/app/api/risks/[riskId]
Edit: /home/techb158/cosmic-risk.abdallabala.com/src/app/api/risks/[riskId]/route.js (1516B)
const { prisma } = require("../../../../lib/prisma");
const { getActorFromRequest } = require("../../../../lib/request-context");
const { requireProjectAccess } = require("../../../../lib/tenant-guard");
const { updateRisk, deleteRisk } = require("../../../../services/risk-service");
const { jsonResponse, errorResponse, parseJson } = require("../../../../lib/http");
async function scopeForRisk(request, riskId, permission) {
const risk = await prisma.risk.findUnique({ where: { id: riskId } });
if (!risk) {
const error = new Error(`Risk not found: ${riskId}`);
error.status = 404;
throw error;
}
const actor = await getActorFromRequest(request);
const projectScope = await requireProjectAccess(actor, risk.projectId, permission);
return { actor, projectScope };
}
export async function PATCH(request, { params }) {
try {
const { riskId } = await params;
const { actor, projectScope } = await scopeForRisk(request, riskId, "risk:write");
const payload = await parseJson(request);
return jsonResponse({ risk: await updateRisk({ projectScope, riskId, actor, payload, request }) });
} catch (error) {
return errorResponse(error);
}
}
export async function DELETE(request, { params }) {
try {
const { riskId } = await params;
const { actor, projectScope } = await scopeForRisk(request, riskId, "risk:delete");
return jsonResponse(await deleteRisk({ projectScope, riskId, actor, request }));
} catch (error) {
return errorResponse(error);
}
}