export class WorkspaceOpsService extends Context.Tag(
"@mason/workspace/WorkspaceOpsService"
)<
WorkspaceOpsService,
{
checkSlug: (
params: WorkspaceCheckSlugRequest
) => Effect.Effect<
WorkspaceCheckSlugResponse,
WorkspaceSlugAlreadyExistsError | MasonError
>;
}
>() {
static readonly live = Layer.effect(
WorkspaceOpsService,
Effect.gen(function* () {
const workspaceRepo = yield* WorkspaceRepository;
return WorkspaceOpsService.of({
checkSlug: (params) =>
WorkspaceCheckSlugAction(params).pipe(
Effect.provideService(WorkspaceRepository, workspaceRepo),
Effect.catchTags({
"shared/DatabaseError": (e) =>
Effect.fail(new MasonError({ cause: e })),
})
),
});
})
);
}
export class WorkspaceOpsService extends Context.Tag(
"@mason/workspace/WorkspaceOpsService"
)<
WorkspaceOpsService,
{
checkSlug: (
params: WorkspaceCheckSlugRequest
) => Effect.Effect<
WorkspaceCheckSlugResponse,
WorkspaceSlugAlreadyExistsError | MasonError
>;
}
>() {
static readonly live = Layer.effect(
WorkspaceOpsService,
Effect.gen(function* () {
const workspaceRepo = yield* WorkspaceRepository;
return WorkspaceOpsService.of({
checkSlug: (params) =>
WorkspaceCheckSlugAction(params).pipe(
Effect.provideService(WorkspaceRepository, workspaceRepo),
Effect.catchTags({
"shared/DatabaseError": (e) =>
Effect.fail(new MasonError({ cause: e })),
})
),
});
})
);
}