@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 2.43 kB
JavaScript
import{copy as e}from"../../libs/i18n/copy.mjs";import t from"../../libs/repositories/document-publish-operations.mjs";import n from"../../libs/repositories/queue-jobs.mjs";import r from"../collections/get-single-instance.mjs";import i from"./helpers/create-event.mjs";import a from"./notifications.mjs";const o=async(o,s)=>{if(s.documentIds.length===0)return{error:void 0,data:void 0};let c=new t(o.db.client,o.config.db),l=new n(o.db.client,o.config.db),u=await c.selectMultiple({select:[`id`,`scheduled_job_id`],where:[{key:`collection_key`,operator:`=`,value:s.collectionKey},{key:`document_id`,operator:`in`,value:s.documentIds},{key:`status`,operator:`in`,value:[`pending`,`approved`]},{key:`execution_status`,operator:`in`,value:[`awaiting_approval`,`scheduled`,`executing`,`failed`]}]});if(u.error)return u;let d=u.data??[];if(d.length===0)return{error:void 0,data:void 0};let f=d.map(e=>e.id),p=d.map(e=>e.scheduled_job_id).filter(e=>e!==null),m=[];for(let e of f){let t=await c.selectSingleDetailed({tenantKey:o.request.tenantKey,where:[{key:`lucid_document_publish_operations.id`,operator:`=`,value:e}]});if(t.error)return t;t.data&&m.push(t.data)}let h=new Date().toISOString();if(p.length>0){let e=await l.updateSingle({where:[{key:`job_id`,operator:`in`,value:p}],data:{status:`cancelled`,updated_at:h}});if(e.error)return e}let g=await c.updateSingle({where:[{key:`id`,operator:`in`,value:f}],data:{status:`cancelled`,execution_status:`cancelled`,scheduled_job_id:null,decision_comment:null,decided_at:h,updated_at:h}});if(g.error)return g;let _=r(o,{key:s.collectionKey});if(_.error)return _;for(let e of m){let t=await i(o,{operation:e,collectionInstance:_.data,event:{type:`cancelled`,userId:null,comment:s.comment,metadata:{system:!0}}});if(t.error)return t}for(let t of m){let n=[...t.assignees.map(e=>({id:e.user_id,email:e.email??null})),...t.requested_by&&t.requested_by_email?[{id:t.requested_by,email:t.requested_by_email}]:[]],r=await a(o,{operationId:t.id,collectionKey:t.collection_key,documentId:t.document_id,recipients:n,title:e(`server:core.publish.requests.cancelled.title`),message:e(`server:core.publish.requests.cancelled.for.target.message`,{data:{collection:t.collection_key,documentId:t.document_id,target:t.target,comment:s.comment}}),dedupeAction:`cancelled`});if(r.error)return r}return{error:void 0,data:void 0}};export{o as default};
//# sourceMappingURL=cancel-for-documents.mjs.map