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 })),