@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 2.91 kB
JavaScript
import{copy as e}from"../../libs/i18n/copy.mjs";import t from"../../libs/repositories/documents.mjs";import{getTableNames as n}from"../../libs/collection/schema/runtime/runtime-schema-selectors.mjs";import r from"../../libs/hooks/execute-hooks.mjs";import i from"../document-publish-operations/cancel-for-documents.mjs";import a from"../document-workflows/delete-for-documents.mjs";import o from"./checks/check-collection.mjs";import s from"./checks/check-document-access.mjs";import c from"./helpers/invalidate-client-cache.mjs";import l from"./nullify-document-references.mjs";import u from"../preview-sessions/delete-for-documents.mjs";const d=async(d,f)=>{if(f.ids.length===0)return{error:void 0,data:void 0};let p=await o(d,{key:f.collectionKey});if(p.error)return p;if(p.data.getData.locked)return{error:{type:`basic`,name:e(`server:core.error.locked.collection.name`),message:e(`server:core.error.locked.collection.message.delete`),status:400},data:void 0};let m=new t(d.db.client,d.config.db),h=await n(d,f.collectionKey);if(h.error)return h;let g=await s(d,{collectionKey:f.collectionKey,ids:f.ids});if(g.error)return g;let _=await m.selectMultiple({select:[`id`],where:[{key:`id`,operator:`in`,value:f.ids}],validation:{enabled:!0}},{tableName:h.data.document});if(_.error)return _;let v=new Set(_.data.map(e=>e.id));if(f.ids.filter(e=>!v.has(e)).length>0)return{error:{type:`basic`,message:e(`server:core.documents.not.found.message`),errors:{ids:{message:e(`server:core.documents.ids.not.found.partial`,{data:{ids:_.data.map(e=>e.id).join(`, `)}})}},status:404},data:void 0};let y=await r(d,{service:`documents`,event:`beforeDelete`,config:d.config,collectionInstance:p.data},{meta:{collection:p.data,collectionKey:f.collectionKey,userId:f.userId,collectionTableNames:h.data,tenantKey:d.request.tenantKey??null,hardDelete:!0},data:{ids:f.ids}});if(y.error)return y;let b=f.ids.map(e=>l(d,{collectionKey:p.data.key,documentId:e})),[x,S,C,w,...T]=await Promise.all([m.deleteMultiple({where:[{key:`id`,operator:`in`,value:f.ids}],returning:[`id`],validation:{enabled:!0}},{tableName:h.data.document}),u(d,{collectionKey:f.collectionKey,documentIds:f.ids}),i(d,{collectionKey:f.collectionKey,documentIds:f.ids,comment:d.translate(`server:core.documents.permanently.deleted.publish.request.comment`)}),a(d,{collectionKey:f.collectionKey,documentIds:f.ids}),...b]);if(x.error)return x;if(S.error)return S;if(C.error)return C;if(w.error)return w;let E=T.find(e=>e.error);if(E)return E;let D=await r(d,{service:`documents`,event:`afterDelete`,config:d.config,collectionInstance:p.data},{meta:{collection:p.data,collectionKey:f.collectionKey,userId:f.userId,collectionTableNames:h.data,tenantKey:d.request.tenantKey??null,hardDelete:!0},data:{ids:f.ids}});return D.error?D:(await c(d,f.collectionKey),{error:void 0,data:void 0})};export{d as default};
//# sourceMappingURL=delete-multiple-permanently.mjs.map