/api/category/[id]/file/list Endpoint에서, recursive 쿼리 파라미터의 값을 false로 설정해도 재귀적으로 검색되던 버그 수정

This commit is contained in:
static
2025-01-23 12:57:37 +09:00
parent b8b87877d2
commit ca67f5a81c
4 changed files with 14 additions and 9 deletions

View File

@@ -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");
}

View File

@@ -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<number>`0`.as("depth"))
.where("id", "=", categoryId)
.$if(recursive, (qb) =>
.$if(recurse, (qb) =>
qb.unionAll((db) =>
db
.selectFrom("category")

View File

@@ -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 };
};

View File

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