From 4ac09525734760797d8998735db44374f87e6308 Mon Sep 17 00:00:00 2001 From: Dylan Hart Date: Thu, 17 Jul 2025 20:44:18 -0400 Subject: [PATCH] Query database once in folderByPath --- server/graph/resolvers/asset.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/server/graph/resolvers/asset.js b/server/graph/resolvers/asset.js index 618c3769..2b11f184 100644 --- a/server/graph/resolvers/asset.js +++ b/server/graph/resolvers/asset.js @@ -43,23 +43,23 @@ module.exports = { }) }, async folderByPath(obj, args, context) { - const parts = args.path.toLowerCase().split('/').filter(Boolean) + const segments = args.path.toLowerCase().split('/').filter(Boolean) + const allFolders = await WIKI.models.assetFolders.query() let parentId = null - for (const slug of parts) { - const folder = await WIKI.models.assetFolders.query().where({ - parentId: parentId, - slug: slug - }).first() - if (!folder) { + let currentFolder = null + let builtPath = '' + for (const segment of segments) { + currentFolder = allFolders.find(f => + f.parentId === parentId && f.slug === segment + ) + if (!currentFolder) return null + builtPath = builtPath ? `${builtPath}/${segment}` : segment + if (!WIKI.auth.checkAccess(context.req.user, ['read:assets'], { path: builtPath })) { return null } - const currentPath = [...parts.slice(0, parts.indexOf(slug) + 1)].join('/') - if (!WIKI.auth.checkAccess(context.req.user, ['read:assets'], { path: currentPath })) { - throw new WIKI.Error.AssetAccessForbidden() - } - parentId = folder.id + parentId = currentFolder.id } - return WIKI.models.assetFolders.query().findById(parentId) + return currentFolder } }, AssetMutation: {