/home/techb158/balavpn.abdallabala.com/src/services
Edit: /home/techb158/balavpn.abdallabala.com/src/services/dashboard-service.js (1109B)
const { prisma } = require("../lib/prisma");
const { calculateDashboard } = require("../domain/risk-engine");
function includeProjectAggregate() {
return {
lifecyclePhases: { orderBy: { sequence: "asc" } },
risks: {
include: {
mitigations: { orderBy: { sequence: "asc" } },
evidence: true
},
orderBy: { createdAt: "asc" }
},
indicators: true,
experiments: {
include: {
metrics: true
}
},
workspace: {
include: {
integrations: { orderBy: { provider: "asc" } }
}
}
};
}
async function getProjectAggregate(projectId) {
return prisma.project.findUnique({
where: { id: projectId },
include: includeProjectAggregate()
});
}
async function getProjectDashboard(projectId) {
const project = await getProjectAggregate(projectId);
if (!project) {
const error = new Error(`Project not found: ${projectId}`);
error.status = 404;
throw error;
}
return calculateDashboard(project);
}
module.exports = {
includeProjectAggregate,
getProjectAggregate,
getProjectDashboard
};