/home/techb158/cosmic-risk.abdallabala.com/src/app/api/workspaces
NameSizeModeActions
[workspaceId]/-0755rm
route.js13080644editdlrm
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); } }