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.53 kB
import{copy as e}from"../../libs/i18n/copy.mjs";import t from"../../utils/helpers/get-base-url.mjs";import n from"../../libs/repositories/document-bricks.mjs";import r from"../../libs/repositories/document-publish-operations.mjs";import i from"../../libs/repositories/document-versions.mjs";import{getTableNames as a}from"../../libs/collection/schema/runtime/runtime-schema-selectors.mjs";import o from"../collections/get-single-instance.mjs";import{hasCollectionPermission as s,unresolvedPublishOperationExecutionStatuses as c}from"./helpers/index.mjs";import l from"./helpers/get-document-label.mjs";import u from"../../libs/formatters/document-publish-operations.mjs";const d=async(d,f)=>{let p=await new r(d.db.client,d.config.db).selectSingleDetailed({tenantKey:d.request.tenantKey,where:[{key:`lucid_document_publish_operations.id`,operator:`=`,value:f.id}]});if(p.error)return p;if(!p.data)return{error:{message:e(`server:core.publish.requests.not.found`),status:404},data:void 0};let m=o(d,{key:p.data.collection_key});if(m.error)return m;let h=s({user:f.user,collection:m.data,action:`review`});if(!h)return{error:{type:`basic`,name:e(`server:core.collections.permission.error.name`),message:e(`server:core.collections.permission.error.message`,{data:{collection:m.data.key,action:`review`}}),status:403},data:void 0};let g=s({user:f.user,collection:m.data,action:`publish`}),_=p.data.requested_by===f.user.id,v=c.some(e=>e===p.data?.execution_status),y=p.data.operation_type===`direct`?g:h,b=await a(d,p.data.collection_key);if(b.error)return b;let x=new i(d.db.client,d.config.db),S=new n(d.db.client,d.config.db),C=await x.selectSingle({select:[`content_id`],where:[{key:`collection_key`,operator:`=`,value:p.data.collection_key},{key:`document_id`,operator:`=`,value:p.data.document_id},{key:`type`,operator:`=`,value:`latest`}]},{tableName:b.data.version});if(C.error)return C;let w=await l({context:d,bricks:S,collection:m.data,tables:b.data,operation:p.data});return w.error?w:{error:void 0,data:u.formatSingle({operation:p.data,documentLabel:w.data,latestContentId:C.data?.content_id??null,host:t(d),permissions:{review:h,cancel:p.data.status===`pending`?_||h:p.data.status===`approved`&&v&&y,reschedule:p.data.status===`pending`?_||h:p.data.status===`approved`&&v&&y,retry:p.data.status===`approved`&&p.data.execution_status===`failed`&&y,updateReviewers:p.data.operation_type===`request`&&p.data.status===`pending`&&(_||h||f.user.superAdmin)}})}};export{d as default}; //# sourceMappingURL=get-single.mjs.map