feat: billing portal

This commit is contained in:
Henry
2025-01-03 15:12:31 +00:00
parent 67e714b8b0
commit 3ee0c0039c
14 changed files with 2383 additions and 693 deletions

View File

@@ -126,6 +126,31 @@ export const workspaceRouter = createTRPCRouter({
)
.output(z.custom<Awaited<ReturnType<typeof workspaceRepo.update>>>())
.mutation(async ({ ctx, input }) => {
if (input.slug) {
const workspace = await workspaceRepo.getByPublicId(
ctx.db,
input.workspacePublicId,
);
const reservedOrPremiumWorkspaceSlug =
await workspaceSlugRepo.getWorkspaceSlug(ctx.db, input.slug);
const isWorkspaceSlugAvailable =
await workspaceRepo.isWorkspaceSlugAvailable(ctx.db, input.slug);
if (
reservedOrPremiumWorkspaceSlug?.type === "reserved" ||
(workspace?.plan !== "pro" &&
reservedOrPremiumWorkspaceSlug?.type === "premium") ||
!isWorkspaceSlugAvailable
) {
throw new TRPCError({
message: `Workspace slug already taken`,
code: "CONFLICT",
});
}
}
const result = await workspaceRepo.update(
ctx.db,
input.workspacePublicId,