Query database once in folderByPath

pull/7707/head
Dylan Hart 1 year ago
parent a55158d897
commit 4ac0952573

@ -43,23 +43,23 @@ module.exports = {
}) })
}, },
async folderByPath(obj, args, context) { 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 let parentId = null
for (const slug of parts) { let currentFolder = null
const folder = await WIKI.models.assetFolders.query().where({ let builtPath = ''
parentId: parentId, for (const segment of segments) {
slug: slug currentFolder = allFolders.find(f =>
}).first() f.parentId === parentId && f.slug === segment
if (!folder) { )
if (!currentFolder) return null
builtPath = builtPath ? `${builtPath}/${segment}` : segment
if (!WIKI.auth.checkAccess(context.req.user, ['read:assets'], { path: builtPath })) {
return null return null
} }
const currentPath = [...parts.slice(0, parts.indexOf(slug) + 1)].join('/') parentId = currentFolder.id
if (!WIKI.auth.checkAccess(context.req.user, ['read:assets'], { path: currentPath })) {
throw new WIKI.Error.AssetAccessForbidden()
}
parentId = folder.id
} }
return WIKI.models.assetFolders.query().findById(parentId) return currentFolder
} }
}, },
AssetMutation: { AssetMutation: {

Loading…
Cancel
Save