/home/techb158/cosmic-risk.abdallabala.com/src/app/api/workspaces/[workspaceId]/sync-runs
Edit: /home/techb158/cosmic-risk.abdallabala.com/src/app/api/workspaces/[workspaceId]/sync-runs/route.js (1379B)
const { prisma } = require("../../../../../lib/prisma");
const { getActorFromRequest } = require("../../../../../lib/request-context");
const { hasPermission } = require("../../../../../domain/permissions");
const { jsonResponse, errorResponse } = require("../../../../../lib/http");
async function requireWorkspace(request, workspaceId, permission) {
const actor = await getActorFromRequest(request);
const workspace = await prisma.workspace.findUniqueOrThrow({ where: { id: workspaceId } });
const membership = actor.memberships.find(m => m.organizationId === workspace.organizationId && m.status === "ACTIVE");
if (!membership || !hasPermission(membership.role.permissions, permission)) {
const error = new Error(`Permission denied: ${permission}`);
error.status = 403;
throw error;
}
return { actor, workspace };
}
export async function GET(request, { params }) {
try {
const { workspaceId } = await params;
await requireWorkspace(request, workspaceId, "integration:read");
const syncRuns = await prisma.integrationSyncRun.findMany({
where: { integration: { workspaceId } },
include: { integration: { select: { id: true, provider: true, workspaceName: true } } },
orderBy: { createdAt: "desc" },
take: 50
});
return jsonResponse({ syncRuns });
} catch (error) {
return errorResponse(error);
}
}