Rhys Sullivanclean upa9ff2ff8 months agoHistory
83 lines · 2.9 KB · TypeScript
RawDownload
import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "@effect/platform";import {  OrganizationIdSchema,  WorkspaceIdSchema,  WorkspaceSchema,} from "#schema";import * as Schema from "effect/Schema"; import {  ControlPlaneBadRequestError,  ControlPlaneForbiddenError,  ControlPlaneNotFoundError,  ControlPlaneStorageError,  ControlPlaneUnauthorizedError,} from "../errors";import {  OptionalTrimmedNonEmptyStringSchema,  TrimmedNonEmptyStringSchema,} from "../string-schemas"; export const CreateWorkspacePayloadSchema = Schema.Struct({  name: TrimmedNonEmptyStringSchema,}); export type CreateWorkspacePayload = typeof CreateWorkspacePayloadSchema.Type; export const UpdateWorkspacePayloadSchema = Schema.Struct({  name: OptionalTrimmedNonEmptyStringSchema,}); export type UpdateWorkspacePayload = typeof UpdateWorkspacePayloadSchema.Type; const organizationIdParam = HttpApiSchema.param("organizationId", OrganizationIdSchema);const workspaceIdParam = HttpApiSchema.param("workspaceId", WorkspaceIdSchema); export class WorkspacesApi extends HttpApiGroup.make("workspaces")  .add(    HttpApiEndpoint.get("list")`/organizations/${organizationIdParam}/workspaces`      .addSuccess(Schema.Array(WorkspaceSchema))      .addError(ControlPlaneBadRequestError)      .addError(ControlPlaneUnauthorizedError)      .addError(ControlPlaneForbiddenError)      .addError(ControlPlaneNotFoundError)      .addError(ControlPlaneStorageError),  )  .add(    HttpApiEndpoint.post("create")`/organizations/${organizationIdParam}/workspaces`      .setPayload(CreateWorkspacePayloadSchema)      .addSuccess(WorkspaceSchema)      .addError(ControlPlaneBadRequestError)      .addError(ControlPlaneUnauthorizedError)      .addError(ControlPlaneForbiddenError)      .addError(ControlPlaneNotFoundError)      .addError(ControlPlaneStorageError),  )  .add(    HttpApiEndpoint.get("get")`/workspaces/${workspaceIdParam}`      .addSuccess(WorkspaceSchema)      .addError(ControlPlaneBadRequestError)      .addError(ControlPlaneUnauthorizedError)      .addError(ControlPlaneForbiddenError)      .addError(ControlPlaneNotFoundError)      .addError(ControlPlaneStorageError),  )  .add(    HttpApiEndpoint.patch("update")`/workspaces/${workspaceIdParam}`      .setPayload(UpdateWorkspacePayloadSchema)      .addSuccess(WorkspaceSchema)      .addError(ControlPlaneBadRequestError)      .addError(ControlPlaneUnauthorizedError)      .addError(ControlPlaneForbiddenError)      .addError(ControlPlaneNotFoundError)      .addError(ControlPlaneStorageError),  )  .add(    HttpApiEndpoint.del("remove")`/workspaces/${workspaceIdParam}`      .addSuccess(Schema.Struct({ removed: Schema.Boolean }))      .addError(ControlPlaneBadRequestError)      .addError(ControlPlaneUnauthorizedError)      .addError(ControlPlaneForbiddenError)      .addError(ControlPlaneStorageError),  )  .prefix("/v1") {}