/home/techb158/cosmic-risk.abdallabala.com/src/app/api/projects/[projectId]/indicators
Edit: /home/techb158/cosmic-risk.abdallabala.com/src/app/api/projects/[projectId]/indicators/route.js (1476B)
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, "project:read");
const indicators = await prisma.indicator.findMany({
where: { projectId },
orderBy: { createdAt: "desc" }
});
return jsonResponse({ indicators });
} 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, "project:update");
const body = await request.json();
const { name, dimension, measurand, unit, target, interpretationRule } = body;
if (!name || !dimension) {
return jsonResponse({ error: "name and dimension are required" }, 400);
}
const indicator = await prisma.indicator.create({
data: { projectId, name, dimension, measurand: measurand || "", unit: unit || "", target, interpretationRule }
});
return jsonResponse(indicator, 201);
} catch (error) {
return errorResponse(error);
}
}