Files
kan/src/server/api/routers/label.ts
2024-04-22 22:44:35 +01:00

53 lines
1.2 KiB
TypeScript

import { z } from "zod";
import { generateUID } from "~/utils/generateUID";
import { createTRPCRouter, protectedProcedure } from "~/server/api/trpc";
export const labelRouter = createTRPCRouter({
create: protectedProcedure
.input(
z.object({
name: z.string().min(1).max(36),
cardPublicId: z.string().min(12),
colourCode: z.string().length(7),
}),
)
.mutation(async ({ ctx, input }) => {
const userId = ctx.user?.id;
if (!userId) return;
const card = await ctx.db
.from("card")
.select(`id, list (boardId)`)
.eq("publicId", input.cardPublicId)
.is("deletedAt", null)
.limit(1)
.single();
if (!card.data?.list) return;
const newLabel = await ctx.db
.from("label")
.insert({
publicId: generateUID(),
name: input.name,
colourCode: input.colourCode,
createdBy: userId,
boardId: card.data.list.boardId,
})
.select(`id`)
.limit(1)
.single();
if (!newLabel.data) return;
await ctx.db.from("_card_labels").insert({
cardId: card.data.id,
labelId: newLabel.data.id,
});
return newLabel.data;
}),
});