From ca67f5a81c48bc2d143905e45eb72eb26298be4f Mon Sep 17 00:00:00 2001 From: static Date: Thu, 23 Jan 2025 12:57:37 +0900 Subject: [PATCH] =?UTF-8?q?/api/category/[id]/file/list=20Endpoint?= =?UTF-8?q?=EC=97=90=EC=84=9C,=20recursive=20=EC=BF=BC=EB=A6=AC=20?= =?UTF-8?q?=ED=8C=8C=EB=9D=BC=EB=AF=B8=ED=84=B0=EC=9D=98=20=EA=B0=92?= =?UTF-8?q?=EC=9D=84=20false=EB=A1=9C=20=EC=84=A4=EC=A0=95=ED=95=B4?= =?UTF-8?q?=EB=8F=84=20=EC=9E=AC=EA=B7=80=EC=A0=81=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EA=B2=80=EC=83=89=EB=90=98=EB=8D=98=20=EB=B2=84=EA=B7=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/modules/filesystem.ts | 2 +- src/lib/server/db/file.ts | 4 ++-- src/lib/server/services/category.ts | 4 ++-- src/routes/api/category/[id]/file/list/+server.ts | 13 +++++++++---- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/lib/modules/filesystem.ts b/src/lib/modules/filesystem.ts index dc1208e..ce2c35a 100644 --- a/src/lib/modules/filesystem.ts +++ b/src/lib/modules/filesystem.ts @@ -281,7 +281,7 @@ const fetchCategoryInfoFromServer = async ( const { dataKey } = await unwrapDataKey(metadata!.dek, masterKey); const name = await decryptString(metadata!.name, metadata!.nameIv, dataKey); - res = await callGetApi(`/api/category/${id}/file/list?recursive=true`); + res = await callGetApi(`/api/category/${id}/file/list?recurse=true`); if (!res.ok) { throw new Error("Failed to fetch category files"); } diff --git a/src/lib/server/db/file.ts b/src/lib/server/db/file.ts index 6a53c5b..219dc42 100644 --- a/src/lib/server/db/file.ts +++ b/src/lib/server/db/file.ts @@ -294,7 +294,7 @@ export const getAllFilesByParent = async (userId: number, parentId: DirectoryId) export const getAllFilesByCategory = async ( userId: number, categoryId: number, - recursive: boolean, + recurse: boolean, ) => { const files = await db .withRecursive("cte", (db) => @@ -304,7 +304,7 @@ export const getAllFilesByCategory = async ( .select(["id", "parent_id", "user_id", "file_category.file_id"]) .select(sql`0`.as("depth")) .where("id", "=", categoryId) - .$if(recursive, (qb) => + .$if(recurse, (qb) => qb.unionAll((db) => db .selectFrom("category") diff --git a/src/lib/server/services/category.ts b/src/lib/server/services/category.ts index 0d03696..cb3db7a 100644 --- a/src/lib/server/services/category.ts +++ b/src/lib/server/services/category.ts @@ -66,13 +66,13 @@ export const addCategoryFile = async (userId: number, categoryId: number, fileId } }; -export const getCategoryFiles = async (userId: number, categoryId: number, recursive: boolean) => { +export const getCategoryFiles = async (userId: number, categoryId: number, recurse: boolean) => { const category = await getCategory(userId, categoryId); if (!category) { error(404, "Invalid category id"); } - const files = await getAllFilesByCategory(userId, categoryId, recursive); + const files = await getAllFilesByCategory(userId, categoryId, recurse); return { files }; }; diff --git a/src/routes/api/category/[id]/file/list/+server.ts b/src/routes/api/category/[id]/file/list/+server.ts index db55ba5..5d80474 100644 --- a/src/routes/api/category/[id]/file/list/+server.ts +++ b/src/routes/api/category/[id]/file/list/+server.ts @@ -13,12 +13,17 @@ export const GET: RequestHandler = async ({ locals, url, params }) => { const { id } = paramsZodRes.data; const queryZodRes = z - .object({ recursive: z.coerce.boolean().nullable() }) - .safeParse({ recursive: url.searchParams.get("recursive") }); + .object({ + recurse: z + .enum(["true", "false"]) + .transform((value) => value === "true") + .nullable(), + }) + .safeParse({ recurse: url.searchParams.get("recurse") }); if (!queryZodRes.success) error(400, "Invalid query parameters"); - const { recursive } = queryZodRes.data; + const { recurse } = queryZodRes.data; - const { files } = await getCategoryFiles(userId, id, recursive ?? false); + const { files } = await getCategoryFiles(userId, id, recurse ?? false); return json( categoryFileListResponse.parse({ files: files.map(({ id, isRecursive }) => ({ file: id, isRecursive })),