feat(cloud): write worspace slug availability checks to db

This commit is contained in:
Henry
2025-09-10 21:30:52 +01:00
parent 564ba508e7
commit 6b05d5b60f
2 changed files with 43 additions and 0 deletions

View File

@@ -334,6 +334,14 @@ export const workspaceRouter = createTRPCRouter({
}),
)
.query(async ({ ctx, input }) => {
const userId = ctx.user?.id;
if (!userId)
throw new TRPCError({
message: `User not authenticated`,
code: "UNAUTHORIZED",
});
const slug = input.workspaceSlug.toLowerCase();
// check slug is not reserved
const workspaceSlug = await workspaceSlugRepo.getWorkspaceSlug(
@@ -345,6 +353,19 @@ export const workspaceRouter = createTRPCRouter({
const isWorkspaceSlugAvailable =
await workspaceRepo.isWorkspaceSlugAvailable(ctx.db, slug);
const isAvailable =
isWorkspaceSlugAvailable && workspaceSlug?.type !== "reserved";
const isReserved = workspaceSlug?.type === "reserved";
if (env("NEXT_PUBLIC_KAN_ENV") === "cloud") {
await workspaceSlugRepo.createWorkspaceSlugCheck(ctx.db, {
slug,
userId,
available: isAvailable,
reserved: isReserved,
});
}
return {
isAvailable:
isWorkspaceSlugAvailable && workspaceSlug?.type !== "reserved",