feat: custom workspace slugs

This commit is contained in:
Henry
2025-01-23 22:22:29 +00:00
parent 0bd23d24ac
commit f78dd07c38
14 changed files with 57 additions and 58 deletions

View File

@@ -3,6 +3,7 @@ import { z } from "zod";
import * as workspaceRepo from "@kan/db/repository/workspace.repo";
import * as workspaceSlugRepo from "@kan/db/repository/workspaceSlug.repo";
import { generateUID } from "@kan/utils";
import { createTRPCRouter, protectedProcedure, publicProcedure } from "../trpc";
@@ -123,9 +124,12 @@ export const workspaceRouter = createTRPCRouter({
code: "UNAUTHORIZED",
});
const result = await workspaceRepo.create(ctx.db, {
const workspacePublicId = generateUID();
const result = await workspaceRepo.create(ctx.adminDb, {
publicId: workspacePublicId,
name: input.name,
slug: input.name,
slug: workspacePublicId,
createdBy: userId,
});
@@ -251,12 +255,11 @@ export const workspaceRouter = createTRPCRouter({
z.object({
isAvailable: z.boolean(),
isReserved: z.boolean(),
isPremium: z.boolean(),
}),
)
.query(async ({ ctx, input }) => {
const slug = input.workspaceSlug.toLowerCase();
// check list of reserved or premium slugs
// check slug is not reserved
const workspaceSlug = await workspaceSlugRepo.getWorkspaceSlug(
ctx.adminDb,
slug,
@@ -270,7 +273,6 @@ export const workspaceRouter = createTRPCRouter({
isAvailable:
isWorkspaceSlugAvailable && workspaceSlug?.type !== "reserved",
isReserved: workspaceSlug?.type === "reserved",
isPremium: workspaceSlug?.type === "premium",
};
}),
});