@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 3.95 kB
JavaScript
import{copy as e}from"../../../libs/i18n/copy.mjs";import t from"../../../utils/helpers/apply-default-query-filters.mjs";import n from"../../../utils/helpers/get-base-url.mjs";import r from"../../../libs/repositories/documents.mjs";import{getCollectionClientScope as i}from"../../../libs/permission/client-scopes.mjs";import{getBricksTableSchema as a,getDocumentFieldsTableSchema as o,getTableNames as s}from"../../../libs/collection/schema/runtime/runtime-schema-selectors.mjs";import c from"../../collections/get-single-instance.mjs";import l from"../../documents-bricks/helpers/extract-related-entity-ids.mjs";import u from"../../documents-bricks/helpers/fetch-ref-data.mjs";import d from"../helpers/resolve-relation-version-type.mjs";import f from"../../preview-sessions/authorize.mjs";import p from"../helpers/resolve-document-includes.mjs";import m from"../helpers/resolve-relation-document-filters.mjs";import h from"../helpers/validate-client-version-target.mjs";import g,{groupDocumentFilterConditions as _}from"../../../utils/helpers/group-document-filters.mjs";import v from"../../../libs/formatters/documents.mjs";import y from"../../../libs/formatters/index.mjs";const b=async(b,x)=>{let S=await h({versionType:x.versionType,versionId:x.versionId});if(S.error)return S;let C=x.versionType,w=S.data.versionId,T;if(x.preview!==void 0){let t=await f(b,{token:x.preview,collectionKey:x.collectionKey,versionType:C,versionId:w});if(t.error)return t;if(t.data.mode===`scoped`&&t.data.target===`entry`)return{error:{type:`forbidden`,code:`preview_scope`,message:e(`server:core.documents.preview.scoped.message`),status:403},data:void 0};T=t.data,C=T.versionType,w=T.versionId}let E=c(b,{key:x.collectionKey});if(E.error)return E;let D=x.clientScopes?b.config.collections.filter(e=>x.clientScopes?.includes(i(e.key))).map(e=>e.key):void 0,O=new r(b.db.client,b.config.db),k=await a(b,x.collectionKey);if(k.error)return k;let A=await o(b,x.collectionKey);if(A.error)return A;let j={...x.query,filter:t(x.query.filter,{isDeleted:{value:b.config.db.getDefault(`boolean`,`false`)}})},M=p(j.include),[N,P]=await Promise.all([s(b,x.collectionKey),d(b,{collectionKey:x.collectionKey,versionId:w,versionType:C})]);if(N.error)return N;if(P.error)return P;let F=await m(b,{collection:E.data,bricksTableSchema:k.data,filter:j.filter,filterOr:j.filterOr,relationVersionType:P.data.versionType,resolveVersionType:P.data.resolveVersionType,allowedCollectionKeys:D});if(F.error)return F;let{documentFilters:I,brickFilters:L}=g(k.data,j.filter,{relationCollectionDefaults:F.data.relationCollectionDefaults}),R=j.filterOr?.map((e,t)=>({..._(k.data,e,{relationCollectionDefaults:F.data.relationCollectionDefaults}),relationDocumentFilters:F.data.filterOr[t]??[]})),z=k.data.filter(e=>e.key.brick===void 0),B=z.filter(e=>e.type!==`document-fields`),V=await O.selectMultipleFiltered({version:C,versionId:w,query:j,documentFilters:I,filterOr:R,brickFilters:L,relationDocumentFilters:F.data.filters,collection:E.data,config:b.config,relationVersionType:P.data.versionType,tables:{versions:N.data.version,documentFields:N.data.documentFields},documentFieldsTableSchema:A.data,documentFieldRelationTableSchemas:B,includeWorkflow:!1,tenantKey:b.request.tenantKey},{tableName:N.data.document});if(V.error)return V;let H=V.data?.[0]??[],U=n(b),W;if(M.refs){let e=await l(b,{collection:E.data,brickSchema:z,responses:H,includeTypes:M.refTypes});if(e.error)return e;let t=await u(b,{values:e.data,versionType:P.data.versionType,resolveVersionType:P.data.resolveVersionType,allowedDocumentCollectionKeys:D});if(t.error)return t;W=t.data}return{error:void 0,data:{data:v.formatClientMultiple({documents:H,collection:E.data,config:b.config,host:U,refData:W,refTypes:M.refTypes,hasFields:!0,hasBricks:!1,bricksTableSchema:z,include:{bricks:!1,refs:M.refs,meta:M.meta}}),count:y.parseCount(V.data?.[1]?.count)}}};export{b as default};
//# sourceMappingURL=get-multiple.mjs.map