/home/techb158/cosmic-risk.abdallabala.com/src/app/api/projects/[projectId]/risks
Edit: /home/techb158/cosmic-risk.abdallabala.com/src/app/api/projects/[projectId]/risks/route.js (1814B)
const { getActorFromRequest } = require("../../../../../lib/request-context");
const { requireProjectAccess } = require("../../../../../lib/tenant-guard");
const { listRisks, createRisk } = require("../../../../../services/risk-service");
const { jsonResponse, errorResponse, parseJson } = require("../../../../../lib/http");
const { withIdempotency, getIdempotencyKey } = require("../../../../../lib/idempotency");
const { trackRequest } = require("../../../../../lib/metrics");
export async function GET(request, { params }) {
const start = Date.now();
try {
const { projectId } = await params;
const actor = await getActorFromRequest(request);
await requireProjectAccess(actor, projectId, "risk:read");
trackRequest("GET", "/api/projects/[projectId]/risks", 200, Date.now() - start);
return jsonResponse({ risks: await listRisks(projectId) });
} catch (error) {
trackRequest("GET", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start);
return errorResponse(error);
}
}
export async function POST(request, { params }) {
const start = Date.now();
try {
const { projectId } = await params;
const actor = await getActorFromRequest(request);
const projectScope = await requireProjectAccess(actor, projectId, "risk:write");
const payload = await parseJson(request);
const idempotencyKey = getIdempotencyKey(request);
const risk = await withIdempotency(idempotencyKey, () =>
createRisk({ projectScope, actor, payload, request })
);
trackRequest("POST", "/api/projects/[projectId]/risks", 201, Date.now() - start);
return jsonResponse({ risk }, 201);
} catch (error) {
trackRequest("POST", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start);
return errorResponse(error);
}
}