feat: create workspace

This commit is contained in:
Henry
2024-03-18 22:41:19 +00:00
parent 7aa64db983
commit 96bcc2afc7
11 changed files with 190 additions and 45 deletions

View File

@@ -122,8 +122,6 @@ export const boardRouter = createTRPCRouter({
where: eq(workspaces.publicId, input.workspacePublicId),
})
console.log({ workspace })
if (!workspace) return;
return ctx.db.insert(boards).values({

View File

@@ -109,8 +109,6 @@ export const cardRouter = createTRPCRouter({
if (!card || !member) return;
console.log({ member })
const memberExists = await tx.query.cardToWorkspaceMembers.findFirst({
where: and(eq(cardToWorkspaceMembers.cardId, card.id), eq(cardToWorkspaceMembers.workspaceMemberId, member.id)),
});

View File

@@ -3,6 +3,8 @@ import { and, eq, isNull } from "drizzle-orm";
import { workspaces, workspaceMembers } from "~/server/db/schema";
import { generateUID } from "~/utils/generateUID";
import {
createTRPCRouter,
publicProcedure,
@@ -61,4 +63,38 @@ export const workspaceRouter = createTRPCRouter({
}
});
}),
create: publicProcedure
.input(
z.object({
name: z.string().min(1),
}),
)
.mutation(async ({ ctx, input }) => {
const userId = ctx.session?.user.id;
if (!userId) return;
const workspace = await ctx.db.insert(workspaces).values({
publicId: generateUID(),
name: input.name,
slug: input.name.toLowerCase(),
createdBy: userId,
});
await ctx.db.insert(workspaceMembers).values({
publicId: generateUID(),
userId,
workspaceId: Number(workspace.insertId),
createdBy: userId,
role: 'admin'
})
return ctx.db.query.workspaces.findFirst({
where: eq(workspaces.id, Number(workspace.insertId)),
columns: {
publicId: true,
name: true,
},
});
}),
});