From a3219678a6e60b05076d306884bcc9baa703dbfb Mon Sep 17 00:00:00 2001 From: Henry Date: Mon, 4 Mar 2024 10:50:05 +0000 Subject: [PATCH] fix: set workspaceId on new board --- src/app/boards/components/ImportBoardsForm.tsx | 3 +++ src/app/boards/components/NewBoardForm.tsx | 3 +++ src/server/api/routers/board.ts | 12 +++++++++++- src/server/api/routers/import.ts | 12 ++++++++++-- 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/app/boards/components/ImportBoardsForm.tsx b/src/app/boards/components/ImportBoardsForm.tsx index 30779691..fd36bae1 100644 --- a/src/app/boards/components/ImportBoardsForm.tsx +++ b/src/app/boards/components/ImportBoardsForm.tsx @@ -8,6 +8,7 @@ import { FaTrello } from "react-icons/fa"; import { HiChevronUpDown, HiXMark } from "react-icons/hi2"; import { useModal } from "~/app/providers/modal"; +import { useWorkspace } from "~/app/providers/workspace"; import { useFormik } from "formik"; @@ -102,6 +103,7 @@ const ImportTrello: React.FC = () => { const [apiKey, setApiKey] = useState(""); const [token, setToken] = useState(""); const { closeModal } = useModal(); + const { workspace } = useWorkspace(); const refetchBoards = () => utils.board.all.refetch(); @@ -153,6 +155,7 @@ const ImportTrello: React.FC = () => { boardIds, apiKey: formik.values.apiKey, token: formik.values.token, + workspacePublicId: workspace?.publicId, }); }, enableReinitialize: true, diff --git a/src/app/boards/components/NewBoardForm.tsx b/src/app/boards/components/NewBoardForm.tsx index 2c9f89c6..5ce43e2f 100644 --- a/src/app/boards/components/NewBoardForm.tsx +++ b/src/app/boards/components/NewBoardForm.tsx @@ -5,6 +5,7 @@ import { api } from "~/trpc/react"; import { HiXMark } from "react-icons/hi2"; import { useModal } from "~/app/providers/modal"; +import { useWorkspace } from "~/app/providers/workspace"; import { Formik, Form, Field } from "formik"; @@ -15,6 +16,7 @@ interface FormValues { export function NewBoardForm() { const utils = api.useUtils(); const { closeModal } = useModal(); + const { workspace } = useWorkspace(); const refetchBoards = () => utils.board.all.refetch(); @@ -44,6 +46,7 @@ export function NewBoardForm() { onSubmit={(values: FormValues) => { createBoard.mutate({ name: values.name, + workspacePublicId: workspace?.publicId, }); }} > diff --git a/src/server/api/routers/board.ts b/src/server/api/routers/board.ts index 32c6b74d..feda9698 100644 --- a/src/server/api/routers/board.ts +++ b/src/server/api/routers/board.ts @@ -90,17 +90,27 @@ export const boardRouter = createTRPCRouter({ .input( z.object({ name: z.string().min(1), + workspacePublicId: z.string().min(12) }), ) - .mutation(({ ctx, input }) => { + .mutation(async ({ ctx, input }) => { const userId = ctx.session?.user.id; if (!userId) return; + const workspace = await ctx.db.query.workspaces.findFirst({ + where: eq(workspaces.publicId, input.workspacePublicId), + }) + + console.log({ workspace }) + + if (!workspace) return; + return ctx.db.insert(boards).values({ publicId: generateUID(), name: input.name, createdBy: userId, + workspaceId: workspace.id }); }), update: publicProcedure diff --git a/src/server/api/routers/import.ts b/src/server/api/routers/import.ts index cabacda2..0184b5af 100644 --- a/src/server/api/routers/import.ts +++ b/src/server/api/routers/import.ts @@ -6,7 +6,7 @@ import { publicProcedure, } from "~/server/api/trpc"; -import { boards, cards, imports, lists } from "~/server/db/schema"; +import { boards, cards, imports, lists, workspaces } from "~/server/db/schema"; import { generateUID } from "~/utils/generateUID"; const TRELLO_API_URL = 'https://api.trello.com/1'; @@ -81,6 +81,7 @@ export const importRouter = createTRPCRouter({ boardIds: z.array(z.string()), apiKey: z.string().length(32), token: z.string().length(76), + workspacePublicId: z.string().min(12) }), ) .mutation(async ({ ctx, input }) => { @@ -114,12 +115,19 @@ export const importRouter = createTRPCRouter({ })) } + const workspace = await ctx.db.query.workspaces.findFirst({ + where: eq(workspaces.publicId, input.workspacePublicId), + }) + + if (!workspace) return; + await ctx.db.transaction(async (tx) => { const newBoard = await tx.insert(boards).values({ publicId: generateUID(), name: data.name, createdBy: userId, - importId: newImport.insertId + importId: newImport.insertId, + workspaceId: workspace.id }); if (!newBoard?.insertId) return;