UNPKG

@lucidcms/core

Version:

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

2 lines 1.83 kB
import e from"./utils/compile-filter-expression.mjs";import t from"./utils/get-filter-operator.mjs";import n from"./utils/get-table-key-value.mjs";const r=(e,r,i)=>{let a=n(e,i?.tableKeys?.filters);if(a)return{key:a,filter:{...r,operator:t(e,r,i?.operators)}}},i=(t,i)=>{let a=t.main,o=t.count,s=Object.entries(i.queryParams.filter||{});for(let[t,n]of s){let s=i.meta?.customFilters?.[t];if(s){a=a.where(e=>s({eb:e,filter:{key:t,...n}})??e.val(!0)),o&&=o.where(e=>s({eb:e,filter:{key:t,...n}})??e.val(!0));continue}let c=r(t,n,i.meta);c&&(a=a.where(t=>e({eb:t,reference:c.key,filter:c.filter,caseInsensitiveLikeOperator:i.database.caseInsensitiveLikeOperator})),o&&=o.where(t=>e({eb:t,reference:c.key,filter:c.filter,caseInsensitiveLikeOperator:i.database.caseInsensitiveLikeOperator})))}let c=(i.queryParams.filterOr||[]).map(e=>e.map(e=>{let t=i.meta?.customFilters?.[e.key];if(t)return{type:`custom`,customFilter:t,filter:e};let n=r(e.key,e,i.meta);if(n)return{type:`mapped`,condition:n}}).filter(e=>!!e)).filter(e=>e.length>0);if(c.length>0){let t=t=>t.where(t=>{let n=[];for(let r of c){let a=[];for(let n of r){if(n.type===`custom`){let e=n.customFilter({eb:t,filter:n.filter});e!==void 0&&a.push(e);continue}a.push(e({eb:t,reference:n.condition.key,filter:n.condition.filter,caseInsensitiveLikeOperator:i.database.caseInsensitiveLikeOperator}))}a.length>0&&n.push(t.and(a))}return n.length>0?t.or(n):t.val(!0)});a=t(a),o&&=t(o)}if(i.queryParams.sort)for(let e of i.queryParams.sort){let t=n(e.key,i.meta?.tableKeys?.sorts);t&&(a=a.orderBy(t,e.direction))}return i.queryParams.perPage!==void 0&&i.queryParams.page!==void 0&&i.queryParams.perPage!==-1&&(a=a.limit(i.queryParams.perPage).offset((i.queryParams.page-1)*i.queryParams.perPage)),{main:a,count:o}};export{i as default}; //# sourceMappingURL=query-builder.mjs.map