@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 1.88 kB
JavaScript
import{copy as e}from"../../../libs/i18n/copy.mjs";import t from"../../../libs/repositories/media.mjs";import n from"../../../libs/repositories/processed-images.mjs";import{resolveMediaKeyTenant as r}from"../../../utils/media/media-key-tenant.mjs";import i from"../../../libs/kv/cache-keys.mjs";import{invalidateHttpCacheTags as a}from"../../../libs/kv/http-cache.mjs";import o from"../checks/check-has-media-strategy.mjs";import s from"./clear-client-media-cache.mjs";import c from"../strategies/delete.mjs";const l=async(u,d)=>{let f=await o(u);if(f.error)return f;let p=new t(u.db.client,u.config.db),m=new n(u.db.client,u.config.db),h=await p.selectSingleById({id:d.id,tenantKey:u.request.tenantKey,includeOwned:!0,validation:{enabled:!0,defaultError:{message:e(`server:core.media.not.found.message`),status:404}}});if(h.error)return h;let g=await p.selectMultiple({select:[`id`],where:[{key:`parent_media_id`,operator:`=`,value:h.data.id}],validation:{enabled:!0}});if(g.error)return g;let _=(await Promise.all(g.data.map(e=>l(u,{id:e.id,invalidateCache:!1})))).find(e=>e.error);if(_)return _;let[v,y]=await Promise.all([m.selectMultiple({select:[`key`,`file_size`],where:[{key:`media_key`,operator:`=`,value:h.data.key}],validation:{enabled:!0}}),p.deleteSingle({where:[{key:`id`,operator:`=`,value:d.id}],returning:[`file_size`,`id`,`key`,`tenant_key`],validation:{enabled:!0}})]);if(v.error)return v;if(y.error)return y;let b=r(u.config,y.data.key),[x,S]=await Promise.all([f.data.deleteMultiple(u,{keys:v.data.map(e=>e.key),tenant:b}),c(u,{key:y.data.key,size:y.data.file_size,processedSize:v.data.reduce((e,t)=>e+t.file_size,0),tenantKey:y.data.tenant_key})]);return S.error?S:(d.invalidateCache!==!1&&await Promise.all([s(u,d.id),a(u,[i.http.tags.clientMedia])]),{error:void 0,data:void 0})};export{l as default};
//# sourceMappingURL=permanently-delete-media.mjs.map