@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 2.49 kB
JavaScript
import e from"../../libs/repositories/media.mjs";import t from"../../libs/repositories/media-folders.mjs";import n from"../../libs/kv/cache-keys.mjs";import r from"../../libs/hooks/execute-hooks.mjs";import{invalidateHttpCacheTags as i}from"../../libs/kv/http-cache.mjs";import a from"./checks/check-has-media-strategy.mjs";import o from"./checks/check-media-access.mjs";import s from"../media-folders/checks/check-folder-access.mjs";import c from"./helpers/clear-client-media-cache.mjs";const l=async(l,u)=>{let d=await a(l);if(d.error)return d;let f=new e(l.db.client,l.config.db),p=new t(l.db.client,l.config.db);if((u.mediaIds?.length??0)===0&&(u.folderIds?.length??0)===0)return{error:void 0,data:void 0};if(u.mediaIds&&u.mediaIds.length>0){let e=await o(l,{ids:u.mediaIds});if(e.error)return e}if(u.folderIds&&u.folderIds.length>0){let e=(await Promise.all(u.folderIds.map(e=>s(l,{folderId:e})))).find(e=>e.error);if(e?.error)return{error:e.error,data:void 0}}let m=[];if(u.recursiveMedia&&u.folderIds&&u.folderIds.length>0){let e=await p.getDescendantIds({folderIds:u.folderIds,tenantKey:l.request.tenantKey,scope:`read`});if(e.error)return e;m=e.data.map(e=>e.id)}let h=u.recursiveMedia&&m.length>0?await f.selectMultipleIdsByFolderIds({folderIds:m,tenantKey:l.request.tenantKey,validation:{enabled:!0}}):void 0;if(h?.error)return h;let g=[...u.mediaIds&&u.mediaIds.length>0?[f.updateMultiple({where:[{key:`id`,operator:`in`,value:u.mediaIds}],data:{is_deleted:!0,is_deleted_at:new Date().toISOString(),deleted_by:u.userId},returning:[`id`]})]:[],...h!==void 0&&h.data.length>0?[f.updateMultiple({where:[{key:`id`,operator:`in`,value:h.data.map(e=>e.id)}],data:{is_deleted:!0,is_deleted_at:new Date().toISOString(),deleted_by:u.userId},returning:[`id`]})]:[]],_=[],v=new Set;if(g.length>0){let e=await Promise.all(g);for(let t of e){if(t.error)return{error:t.error,data:void 0};if(t.data&&t.data.length>0)for(let e of t.data)v.add(e.id),_.push(c(l,e.id))}}if(u.folderIds&&u.folderIds.length>0){let e=await p.deleteMultiple({where:[{key:`id`,operator:`in`,value:u.folderIds}],validation:{enabled:!1}});if(e.error)return e}if(await Promise.all([..._,i(l,[n.http.tags.clientMedia])]),v.size>0){let e=await r(l,{service:`media`,event:`afterDelete`,config:l.config},{meta:{tenantKey:l.request.tenantKey??null},data:{ids:Array.from(v),userId:u.userId,hardDelete:!1}});if(e.error)return e}return{error:void 0,data:void 0}};export{l as default};
//# sourceMappingURL=delete-batch.mjs.map