/home/techb158/cosmic-risk.abdallabala.com/src/app/api/workspaces
Edit: /home/techb158/cosmic-risk.abdallabala.com/src/app/api/workspaces/route.js (1308B)
const { prisma } = require("../../../lib/prisma");
const { requireOrganizationActor } = require("../../../lib/request-context");
const { jsonResponse, errorResponse, parseJson } = require("../../../lib/http");
function slug(value) {
return String(value || "workspace").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "");
}
export async function GET(request) {
try {
const organizationId = new URL(request.url).searchParams.get("organizationId");
await requireOrganizationActor(request, organizationId, "project:read");
const workspaces = await prisma.workspace.findMany({ where: { organizationId }, orderBy: { createdAt: "desc" } });
return jsonResponse({ workspaces });
} catch (error) {
return errorResponse(error);
}
}
export async function POST(request) {
try {
const body = await parseJson(request);
await requireOrganizationActor(request, body.organizationId, "workspace:manage");
const workspace = await prisma.workspace.create({
data: {
organizationId: body.organizationId,
name: body.name,
slug: body.slug || slug(body.name),
type: body.type || "B2B_TEAM",
status: "TRIAL"
}
});
return jsonResponse({ workspace }, 201);
} catch (error) {
return errorResponse(error);
}
}