@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 2.94 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"./checks/check-collection.mjs";import o from"./checks/check-document-access.mjs";import s from"./helpers/invalidate-client-cache.mjs";import c from"./nullify-document-references.mjs";import l from"../preview-sessions/delete-for-documents.mjs";const u=async(u,d)=>{if(d.ids.length===0)return{error:void 0,data:void 0};let f=await a(u,{key:d.collectionKey});if(f.error)return f;if(f.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 p=new t(u.db.client,u.config.db),m=await n(u,d.collectionKey);if(m.error)return m;let h=await o(u,{collectionKey:d.collectionKey,ids:d.ids});if(h.error)return h;let g=await p.selectMultiple({select:[`id`],where:[{key:`id`,operator:`in`,value:d.ids},{key:`is_deleted`,operator:`=`,value:u.config.db.getDefault(`boolean`,`false`)}],validation:{enabled:!0}},{tableName:m.data.document});if(g.error)return g;if(g.data.length!==d.ids.length)return{error:{type:`basic`,message:e(`server:core.documents.not.found.message`),errors:{ids:{message:g.data.length>0?e(`server:core.documents.ids.not.found.partial`,{data:{ids:g.data.map(e=>e.id).join(`, `)}}):e(`server:core.documents.ids.not.found.none`)}},status:404},data:void 0};let _=await r(u,{service:`documents`,event:`beforeDelete`,config:u.config,collectionInstance:f.data},{meta:{collection:f.data,collectionKey:d.collectionKey,userId:d.userId,collectionTableNames:m.data,tenantKey:u.request.tenantKey??null,hardDelete:!1},data:{ids:d.ids}});if(_.error)return _;let v=d.ids.map(e=>c(u,{collectionKey:f.data.key,documentId:e})),[y,b,...x]=await Promise.all([p.updateSingle({returning:[`id`],where:[{key:`id`,operator:`in`,value:d.ids}],data:{is_deleted:!0,is_deleted_at:new Date().toISOString(),deleted_by:d.userId},validation:{enabled:!0}},{tableName:m.data.document}),l(u,{collectionKey:d.collectionKey,documentIds:d.ids}),...v]);if(y.error)return y;if(b.error)return b;let S=x.find(e=>e.error);if(S)return S;let C=await i(u,{collectionKey:d.collectionKey,documentIds:d.ids,comment:u.translate(`server:core.documents.deleted.publish.request.comment`)});if(C.error)return C;let w=await r(u,{service:`documents`,event:`afterDelete`,config:u.config,collectionInstance:f.data},{meta:{collection:f.data,collectionKey:d.collectionKey,userId:d.userId,collectionTableNames:m.data,tenantKey:u.request.tenantKey??null,hardDelete:!1},data:{ids:d.ids}});return w.error?w:(await s(u,d.collectionKey),{data:void 0,error:void 0})};export{u as default};
//# sourceMappingURL=delete-multiple.mjs.map