UNPKG

@lucidcms/core

Version:

The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.

2 lines 2.18 kB
import{copy as e}from"../../libs/i18n/copy.mjs";import t from"../../libs/repositories/document-publish-operation-assignees.mjs";import n from"../../libs/repositories/document-publish-operations.mjs";import r from"../collections/get-single-instance.mjs";import{hasCollectionPermission as i}from"./helpers/index.mjs";import a from"./helpers/create-event.mjs";import o from"./get-reviewers.mjs";const s=async(s,c)=>{let l=new n(s.db.client,s.config.db),u=new t(s.db.client,s.config.db),d=await l.selectSingleDetailed({tenantKey:s.request.tenantKey,where:[{key:`lucid_document_publish_operations.id`,operator:`=`,value:c.id}]});if(d.error)return d;if(d.data?.operation_type!==`request`||d.data.status!==`pending`)return{error:{type:`basic`,message:e(`server:core.publish.requests.not.pending`),status:400},data:void 0};let f=d.data,p=r(s,{key:f.collection_key});if(p.error)return p;let m=f.requested_by===c.user.id,h=i({user:c.user,collection:p.data,action:`review`});if(!m&&!h&&!c.user.superAdmin)return{error:{type:`basic`,name:e(`server:core.collections.permission.error.name`),message:e(`server:core.collections.permission.error.message`,{data:{collection:f.collection_key,action:`review`}}),status:403},data:void 0};let g=Array.from(new Set(c.assigneeIds??[])),_=await o(s,{collectionKey:f.collection_key,target:f.target});if(_.error)return _;let v=new Set(_.data.map(e=>e.id));if(g.find(e=>!v.has(e))!==void 0)return{error:{type:`basic`,message:e(`server:core.publish.requests.invalid.assignees`),status:400},data:void 0};let y=new Date().toISOString(),b=await u.deleteMultiple({where:[{key:`operation_id`,operator:`=`,value:f.id}]});if(b.error)return b;if(g.length>0){let e=await u.createMultiple({data:g.map(e=>({operation_id:f.id,user_id:e,assigned_by:c.user.id,assigned_at:y}))});if(e.error)return e}let x=await l.updateSingle({where:[{key:`id`,operator:`=`,value:f.id}],data:{updated_at:y}});if(x.error)return x;let S=await a(s,{operation:f,collectionInstance:p.data,event:{type:`reviewers_updated`,userId:c.user.id,comment:null,metadata:{assigneeIds:g}}});return S.error?S:{error:void 0,data:void 0}};export{s as default}; //# sourceMappingURL=update-reviewers.mjs.map