feat: create workspace
This commit is contained in:
@@ -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({
|
||||
|
||||
@@ -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)),
|
||||
});
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
});
|
||||
}),
|
||||
});
|
||||
Reference in New Issue
Block a user