UNPKG

@lucidcms/core

Version:

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

12 lines 27.7 kB
import e from"../../constants/constants.mjs";import t from"../db/query-builder/utils/compile-filter-expression.mjs";import n from"../db/query-builder/index.mjs";import{activeMediaCropSelect as r}from"./helpers/media-selects.mjs";import i from"./parents/dynamic-repository.mjs";import{versionTypesSchema as a}from"../../schemas/document-versions.mjs";import o from"../../utils/helpers/resolve-custom-field-sorts.mjs";import s from"zod";import{sql as c}from"kysely";var l=class extends i{constructor(e,t){super(e,t,`lucid_document__collection-key`)}tableSchema=s.object({is_deleted:s.union([s.literal(this.dbAdapter.config.defaults.boolean.true),s.literal(this.dbAdapter.config.defaults.boolean.false)]),is_deleted_at:s.union([s.string(),s.date()]).optional(),deleted_by:s.number().nullable(),id:s.number(),collection_key:s.string(),collection_migration_id:s.number(),tenant_key:s.string().nullable(),order:s.string().nullable(),created_by:s.number().nullable(),created_at:s.union([s.string(),s.date()]).nullable(),updated_by:s.number().nullable(),updated_at:s.union([s.string(),s.date()]).nullable(),versions:s.array(s.object({id:s.number(),type:a,created_by:s.number().nullable(),created_at:s.union([s.string(),s.date()]),updated_by:s.number().nullable(),updated_at:s.union([s.string(),s.date()]).nullable()})),cb_user_id:s.number().nullable(),cb_user_email:s.email().nullable(),cb_user_first_name:s.string().nullable(),cb_user_last_name:s.string().nullable(),cb_user_username:s.string().nullable(),cb_user_profile_picture:s.array(s.any()).optional(),ub_user_id:s.number().nullable(),ub_user_email:s.email().nullable(),ub_user_first_name:s.string().nullable(),ub_user_last_name:s.string().nullable(),ub_user_username:s.string().nullable(),ub_user_profile_picture:s.array(s.any()).optional()});columnFormats={id:this.dbAdapter.getDataType(`primary`),collection_key:this.dbAdapter.getDataType(`text`),collection_migration_id:this.dbAdapter.getDataType(`integer`),tenant_key:this.dbAdapter.getDataType(`text`),order:this.dbAdapter.getDataType(`text`),is_deleted:this.dbAdapter.getDataType(`boolean`),is_deleted_at:this.dbAdapter.getDataType(`timestamp`),deleted_by:this.dbAdapter.getDataType(`integer`),created_by:this.dbAdapter.getDataType(`integer`),created_at:this.dbAdapter.getDataType(`timestamp`),updated_by:this.dbAdapter.getDataType(`integer`),updated_at:this.dbAdapter.getDataType(`timestamp`)};queryConfig=void 0;async upsertSingle(e,t){let n=this.db.insertInto(t.tableName).values(this.formatData(e.data,{type:`insert`,dynamicColumns:t.columns})).onConflict(e=>e.column(`id`).doUpdateSet(e=>({collection_migration_id:e.ref(`excluded.collection_migration_id`),is_deleted:e.ref(`excluded.is_deleted`),is_deleted_at:e.ref(`excluded.is_deleted_at`),deleted_by:e.ref(`excluded.deleted_by`),updated_at:e.ref(`excluded.updated_at`)}))).$if(e.returnAll!==!0&&e.returning!==void 0&&e.returning.length>0,t=>t.returning(e.returning)).$if(e.returnAll??!1,e=>e.returningAll()),r=await this.executeQuery(()=>n.executeTakeFirst(),{method:`upsertSingle`,tableName:t.tableName});return r.response.error?r.response:this.validateResponse(r,{...e.validation,mode:`single`,select:e.returning,selectAll:e.returnAll,schema:this.mergeSchema(t.schema)})}async upsertMultiple(e,t){let n=this.db.insertInto(t.tableName).values(e.data.map(e=>this.formatData(e,{type:`insert`,dynamicColumns:t.columns}))).onConflict(e=>e.column(`id`).doUpdateSet(e=>({collection_migration_id:e.ref(`excluded.collection_migration_id`),is_deleted:e.ref(`excluded.is_deleted`),is_deleted_at:e.ref(`excluded.is_deleted_at`),deleted_by:e.ref(`excluded.deleted_by`),updated_at:e.ref(`excluded.updated_at`)}))).$if(e.returnAll!==!0&&e.returning!==void 0&&e.returning.length>0,t=>t.returning(e.returning)).$if(e.returnAll??!1,e=>e.returningAll()),r=await this.executeQuery(()=>n.executeTakeFirst(),{method:`upsertMultiple`,tableName:t.tableName});return r.response.error?r.response:this.validateResponse(r,{...e.validation,mode:`multiple`,select:e.returning,selectAll:e.returnAll,schema:this.mergeSchema(t.schema)})}async selectSingleById(t,n){let i=this.db.selectFrom(n.tableName).select([`${n.tableName}.id`,`${n.tableName}.collection_key`,`${n.tableName}.tenant_key`,`${n.tableName}.created_by`,`${n.tableName}.created_at`,`${n.tableName}.updated_at`,`${n.tableName}.updated_by`,`${n.tableName}.is_deleted`]).select([r=>this.dbAdapter.jsonArrayFrom(r.selectFrom(t.tables.versions).select([`${t.tables.versions}.id`,`${t.tables.versions}.type`,`${t.tables.versions}.promoted_from`,`${t.tables.versions}.content_id`,`${t.tables.versions}.created_at`,`${t.tables.versions}.created_by`,`${t.tables.versions}.updated_at`,`${t.tables.versions}.updated_by`]).whereRef(`${t.tables.versions}.document_id`,`=`,`${n.tableName}.id`).where(e=>e(`${t.tables.versions}.type`,`!=`,`revision`)).where(n=>n(`${t.tables.versions}.type`,`!=`,e.collectionBuilder.publishing.snapshotVersionType))).as(`versions`)]).$if(t.version!==void 0,e=>e.leftJoin(t.tables.versions,e=>e.onRef(`${t.tables.versions}.document_id`,`=`,`${n.tableName}.id`).on(`${t.tables.versions}.type`,`=`,t.version)).select([`${t.tables.versions}.id as version_id`,`${t.tables.versions}.type as version_type`,`${t.tables.versions}.created_at as version_created_at`,`${t.tables.versions}.created_by as version_created_by`,`${t.tables.versions}.updated_at as version_updated_at`,`${t.tables.versions}.updated_by as version_updated_by`])).$if(t.versionId!==void 0,e=>e.leftJoin(t.tables.versions,e=>e.onRef(`${t.tables.versions}.document_id`,`=`,`${n.tableName}.id`).on(`${t.tables.versions}.id`,`=`,t.versionId)).select([`${t.tables.versions}.id as version_id`,`${t.tables.versions}.type as version_type`,`${t.tables.versions}.created_at as version_created_at`,`${t.tables.versions}.created_by as version_created_by`,`${t.tables.versions}.updated_at as version_updated_at`,`${t.tables.versions}.updated_by as version_updated_by`])).leftJoin(`lucid_users as cb_user`,`cb_user.id`,`${n.tableName}.created_by`).leftJoin(`lucid_users as ub_user`,`ub_user.id`,`${n.tableName}.updated_by`).select([`cb_user.id as cb_user_id`,`cb_user.email as cb_user_email`,`cb_user.first_name as cb_user_first_name`,`cb_user.last_name as cb_user_last_name`,`cb_user.username as cb_user_username`,`ub_user.id as ub_user_id`,`ub_user.email as ub_user_email`,`ub_user.first_name as ub_user_first_name`,`ub_user.last_name as ub_user_last_name`,`ub_user.username as ub_user_username`]).select(e=>[this.dbAdapter.jsonArrayFrom(e.selectFrom(`lucid_media`).select([`lucid_media.id`,`lucid_media.key`,`lucid_media.origin`,`lucid_media.type`,`lucid_media.mime_type`,`lucid_media.file_extension`,`lucid_media.file_name`,`lucid_media.file_size`,`lucid_media.width`,`lucid_media.height`,`lucid_media.focal_x`,`lucid_media.focal_y`,`lucid_media.blur_hash`,`lucid_media.average_color`,`lucid_media.base64`,`lucid_media.is_dark`,`lucid_media.is_light`,r(this.db,this.dbAdapter,`lucid_media.id`)]).whereRef(`lucid_media.id`,`=`,`cb_user.profile_picture_media_id`).where(`lucid_media.is_deleted`,`=`,this.dbAdapter.getDefault(`boolean`,`false`))).as(`cb_user_profile_picture`),this.dbAdapter.jsonArrayFrom(e.selectFrom(`lucid_media`).select([`lucid_media.id`,`lucid_media.key`,`lucid_media.origin`,`lucid_media.type`,`lucid_media.mime_type`,`lucid_media.file_extension`,`lucid_media.file_name`,`lucid_media.file_size`,`lucid_media.width`,`lucid_media.height`,`lucid_media.focal_x`,`lucid_media.focal_y`,`lucid_media.blur_hash`,`lucid_media.average_color`,`lucid_media.base64`,`lucid_media.is_dark`,`lucid_media.is_light`,r(this.db,this.dbAdapter,`lucid_media.id`)]).whereRef(`lucid_media.id`,`=`,`ub_user.profile_picture_media_id`).where(`lucid_media.is_deleted`,`=`,this.dbAdapter.getDefault(`boolean`,`false`))).as(`ub_user_profile_picture`)]).where(`${n.tableName}.id`,`=`,t.id),a=await this.executeQuery(()=>i.executeTakeFirst(),{method:`selectSingleById`,tableName:n.tableName});return a.response.error?a.response:this.validateResponse(a,{...t.validation,mode:`single`,schema:this.mergeSchema(n.schema)})}async selectMultipleFiltered(t,i){let a=await this.executeQuery(async()=>{let a=this.db.selectFrom(i.tableName).leftJoin(t.tables.versions,`${t.tables.versions}.document_id`,`${i.tableName}.id`).select([`${i.tableName}.id`,`${i.tableName}.collection_key`,`${i.tableName}.created_by`,`${i.tableName}.created_at`,`${i.tableName}.updated_at`,`${i.tableName}.updated_by`,`${i.tableName}.is_deleted`]).select([n=>this.dbAdapter.jsonArrayFrom(n.selectFrom(t.tables.versions).select(()=>[`${t.tables.versions}.id`,`${t.tables.versions}.type`,`${t.tables.versions}.promoted_from`,`${t.tables.versions}.content_id`,`${t.tables.versions}.created_at`,`${t.tables.versions}.created_by`,`${t.tables.versions}.updated_at`,`${t.tables.versions}.updated_by`]).whereRef(`${t.tables.versions}.document_id`,`=`,`${i.tableName}.id`).where(e=>e(`${t.tables.versions}.type`,`!=`,`revision`)).where(n=>n(`${t.tables.versions}.type`,`!=`,e.collectionBuilder.publishing.snapshotVersionType))).as(`versions`),this.dbAdapter.jsonArrayFrom(this.db.selectFrom(t.tables.documentFields).innerJoin(t.tables.versions,`${t.tables.versions}.id`,`${t.tables.documentFields}.document_version_id`).where(`${t.tables.versions}.document_id`,`=`,c.ref(`${i.tableName}.id`)).where(`${t.tables.versions}.type`,`=`,t.version).$if(t.versionId!==void 0,e=>e.where(`${t.tables.versions}.id`,`=`,t.versionId)).select(t.documentFieldsTableSchema?.columns.map(e=>`${t.tables.documentFields}.${e.name}`)||[])).as(t.tables.documentFields),...(t.documentFieldRelationTableSchemas??[]).map(e=>this.dbAdapter.jsonArrayFrom(this.db.selectFrom(e.name).innerJoin(t.tables.versions,`${t.tables.versions}.id`,`${e.name}.document_version_id`).where(`${t.tables.versions}.document_id`,`=`,c.ref(`${i.tableName}.id`)).where(`${t.tables.versions}.type`,`=`,t.version).$if(t.versionId!==void 0,e=>e.where(`${t.tables.versions}.id`,`=`,t.versionId)).select(e.columns.map(t=>`${e.name}.${t.name}`))).as(e.name))]).select([`${t.tables.versions}.id as version_id`,`${t.tables.versions}.type as version_type`]).$if(t.includeWorkflow,e=>e.leftJoin(`lucid_document_workflows`,e=>e.on(`lucid_document_workflows.collection_key`,`=`,t.collection.getData.key).onRef(`lucid_document_workflows.document_id`,`=`,`${i.tableName}.id`)).select([`lucid_document_workflows.id as workflow_id`,`lucid_document_workflows.stage_key as workflow_stage_key`,`lucid_document_workflows.created_by as workflow_created_by`,`lucid_document_workflows.created_at as workflow_created_at`,`lucid_document_workflows.updated_by as workflow_updated_by`,`lucid_document_workflows.updated_at as workflow_updated_at`]).select(e=>[this.dbAdapter.jsonArrayFrom(e.selectFrom(`lucid_document_workflow_assignees`).leftJoin(`lucid_users`,`lucid_users.id`,`lucid_document_workflow_assignees.user_id`).select(e=>[`lucid_document_workflow_assignees.id`,`lucid_document_workflow_assignees.workflow_id`,`lucid_document_workflow_assignees.user_id`,`lucid_document_workflow_assignees.assigned_by`,`lucid_document_workflow_assignees.assigned_at`,`lucid_users.email`,`lucid_users.username`,`lucid_users.first_name`,`lucid_users.last_name`,this.dbAdapter.jsonArrayFrom(e.selectFrom(`lucid_media`).select(e=>[`lucid_media.id`,`lucid_media.key`,`lucid_media.origin`,`lucid_media.type`,`lucid_media.mime_type`,`lucid_media.file_extension`,`lucid_media.file_name`,`lucid_media.file_size`,`lucid_media.width`,`lucid_media.height`,`lucid_media.focal_x`,`lucid_media.focal_y`,`lucid_media.blur_hash`,`lucid_media.average_color`,`lucid_media.base64`,`lucid_media.is_dark`,`lucid_media.is_light`,r(this.db,this.dbAdapter,`lucid_media.id`),this.dbAdapter.jsonArrayFrom(e.selectFrom(`lucid_media_translations`).select([`lucid_media_translations.title`,`lucid_media_translations.alt`,`lucid_media_translations.description`,`lucid_media_translations.summary`,`lucid_media_translations.locale_code`]).whereRef(`lucid_media_translations.media_id`,`=`,`lucid_media.id`)).as(`translations`)]).whereRef(`lucid_media.id`,`=`,`lucid_users.profile_picture_media_id`).where(`lucid_media.is_deleted`,`=`,this.dbAdapter.getDefault(`boolean`,`false`))).as(`profile_picture`)]).whereRef(`lucid_document_workflow_assignees.workflow_id`,`=`,`lucid_document_workflows.id`).orderBy(`lucid_document_workflow_assignees.assigned_at`,`asc`)).as(`workflow_assignees`)])).leftJoin(`lucid_users as cb_user`,`cb_user.id`,`${i.tableName}.created_by`).leftJoin(`lucid_users as ub_user`,`ub_user.id`,`${i.tableName}.updated_by`).select([`cb_user.id as cb_user_id`,`cb_user.email as cb_user_email`,`cb_user.first_name as cb_user_first_name`,`cb_user.last_name as cb_user_last_name`,`cb_user.username as cb_user_username`,`ub_user.id as ub_user_id`,`ub_user.email as ub_user_email`,`ub_user.first_name as ub_user_first_name`,`ub_user.last_name as ub_user_last_name`,`ub_user.username as ub_user_username`]).select(e=>[this.dbAdapter.jsonArrayFrom(e.selectFrom(`lucid_media`).select([`lucid_media.id`,`lucid_media.key`,`lucid_media.origin`,`lucid_media.type`,`lucid_media.mime_type`,`lucid_media.file_extension`,`lucid_media.file_name`,`lucid_media.file_size`,`lucid_media.width`,`lucid_media.height`,`lucid_media.focal_x`,`lucid_media.focal_y`,`lucid_media.blur_hash`,`lucid_media.average_color`,`lucid_media.base64`,`lucid_media.is_dark`,`lucid_media.is_light`,r(this.db,this.dbAdapter,`lucid_media.id`)]).whereRef(`lucid_media.id`,`=`,`cb_user.profile_picture_media_id`).where(`lucid_media.is_deleted`,`=`,this.dbAdapter.getDefault(`boolean`,`false`))).as(`cb_user_profile_picture`),this.dbAdapter.jsonArrayFrom(e.selectFrom(`lucid_media`).select([`lucid_media.id`,`lucid_media.key`,`lucid_media.origin`,`lucid_media.type`,`lucid_media.mime_type`,`lucid_media.file_extension`,`lucid_media.file_name`,`lucid_media.file_size`,`lucid_media.width`,`lucid_media.height`,`lucid_media.focal_x`,`lucid_media.focal_y`,`lucid_media.blur_hash`,`lucid_media.average_color`,`lucid_media.base64`,`lucid_media.is_dark`,`lucid_media.is_light`,r(this.db,this.dbAdapter,`lucid_media.id`)]).whereRef(`lucid_media.id`,`=`,`ub_user.profile_picture_media_id`).where(`lucid_media.is_deleted`,`=`,this.dbAdapter.getDefault(`boolean`,`false`))).as(`ub_user_profile_picture`)]).where(`${t.tables.versions}.type`,`=`,t.version).$if(t.versionId!==void 0,e=>e.where(`${t.tables.versions}.id`,`=`,t.versionId)),s=this.db.selectFrom(i.tableName).leftJoin(t.tables.versions,`${t.tables.versions}.document_id`,`${i.tableName}.id`).leftJoin(`lucid_users as cb_user`,`cb_user.id`,`${i.tableName}.created_by`).leftJoin(`lucid_users as ub_user`,`ub_user.id`,`${i.tableName}.updated_by`).select(()=>c`count(distinct ${c.ref(`${i.tableName}.id`)})`.as(`count`)).$if(t.includeWorkflow,e=>e.leftJoin(`lucid_document_workflows`,e=>e.on(`lucid_document_workflows.collection_key`,`=`,t.collection.getData.key).onRef(`lucid_document_workflows.document_id`,`=`,`${i.tableName}.id`))).where(`${t.tables.versions}.type`,`=`,t.version).$if(t.versionId!==void 0,e=>e.where(`${t.tables.versions}.id`,`=`,t.versionId));if(t.includeWorkflow&&t.workflowAssigneeFilterValues!==void 0){let e=t.workflowAssigneeFilterValues.length>0?c`exists ( select 1 from lucid_document_workflow_assignees where lucid_document_workflow_assignees.workflow_id = lucid_document_workflows.id and lucid_document_workflow_assignees.user_id in (${c.join(t.workflowAssigneeFilterValues.map(e=>c`${e}`))}) )`:c`1 = 0`;a=a.where(e),s=s.where(e)}a=this.applyBrickFiltersToQuery(a,t.brickFilters,i.tableName,t.tables.versions),s=this.applyBrickFiltersToQuery(s,t.brickFilters,i.tableName,t.tables.versions),a=this.applyRelationDocumentFiltersToQuery(a,t.relationDocumentFilters,i.tableName,t.tables.versions,t.tenantKey),s=this.applyRelationDocumentFiltersToQuery(s,t.relationDocumentFilters,i.tableName,t.tables.versions,t.tenantKey),a=this.applyDocumentFilterOrToQuery(a,t.filterOr,i.tableName,t.tables.versions,t.includeWorkflow,t.tenantKey),s=this.applyDocumentFilterOrToQuery(s,t.filterOr,i.tableName,t.tables.versions,t.includeWorkflow,t.tenantKey),a=n.tenantScope(a,{tenantKey:t.tenantKey,column:`${i.tableName}.tenant_key`}),s=n.tenantScope(s,{tenantKey:t.tenantKey,column:`${i.tableName}.tenant_key`});let l=o(t.documentFieldsTableSchema,t.query.sort),u=n.main({main:a,count:s},{queryParams:{filter:t.documentFilters,sort:t.query.sort,page:t.query.page,perPage:t.query.perPage},database:this.dbAdapter.config,meta:{tableKeys:{filters:{id:`${i.tableName}.id`,collectionKey:`${i.tableName}.collection_key`,createdBy:`${i.tableName}.created_by`,updatedBy:`${i.tableName}.updated_by`,createdAt:`${i.tableName}.created_at`,updatedAt:`${i.tableName}.updated_at`,isDeleted:`${i.tableName}.is_deleted`,deletedBy:`${i.tableName}.deleted_by`,...t.includeWorkflow?{workflowStage:c.ref(`lucid_document_workflows.stage_key`)}:{}},sorts:{createdAt:`${i.tableName}.created_at`,updatedAt:`${i.tableName}.updated_at`,...t.collection.getData.orderable?{order:`${i.tableName}.order`}:{},...this.buildCustomFieldSortRefs({customFieldSorts:l,documentFieldsTable:t.tables.documentFields,versionsTable:t.tables.versions,defaultLocale:t.config.localization.defaultLocale})}}}}),d=u.main,f=u.count;l.length>0&&(d=d.orderBy(`${i.tableName}.id`,`asc`));let[p,m]=await Promise.all([d.execute(),f?.executeTakeFirst()]);return[p,m]},{method:`selectMultipleFiltered`,tableName:i.tableName});return a.response.error?a.response:this.validateResponse(a,{mode:`multiple-count`,schema:this.mergeSchema(i.schema)})}async selectSingleFiltered(t,i){let a=await this.executeQuery(async()=>{let a=this.db.selectFrom(i.tableName).leftJoin(t.tables.versions,`${t.tables.versions}.document_id`,`${i.tableName}.id`).select([`${i.tableName}.id`,`${i.tableName}.collection_key`,`${i.tableName}.created_by`,`${i.tableName}.created_at`,`${i.tableName}.updated_at`,`${i.tableName}.updated_by`,`${i.tableName}.is_deleted`]).select([n=>this.dbAdapter.jsonArrayFrom(n.selectFrom(t.tables.versions).select(()=>[`${t.tables.versions}.id`,`${t.tables.versions}.type`,`${t.tables.versions}.promoted_from`,`${t.tables.versions}.content_id`,`${t.tables.versions}.created_at`,`${t.tables.versions}.created_by`,`${t.tables.versions}.updated_at`,`${t.tables.versions}.updated_by`]).whereRef(`${t.tables.versions}.document_id`,`=`,`${i.tableName}.id`).where(e=>e(`${t.tables.versions}.type`,`!=`,`revision`)).where(n=>n(`${t.tables.versions}.type`,`!=`,e.collectionBuilder.publishing.snapshotVersionType))).as(`versions`)]).select([`${t.tables.versions}.id as version_id`,`${t.tables.versions}.type as version_type`]).leftJoin(`lucid_users as cb_user`,`cb_user.id`,`${i.tableName}.created_by`).leftJoin(`lucid_users as ub_user`,`ub_user.id`,`${i.tableName}.updated_by`).select([`cb_user.id as cb_user_id`,`cb_user.email as cb_user_email`,`cb_user.first_name as cb_user_first_name`,`cb_user.last_name as cb_user_last_name`,`cb_user.username as cb_user_username`,`ub_user.id as ub_user_id`,`ub_user.email as ub_user_email`,`ub_user.first_name as ub_user_first_name`,`ub_user.last_name as ub_user_last_name`,`ub_user.username as ub_user_username`]).select(e=>[this.dbAdapter.jsonArrayFrom(e.selectFrom(`lucid_media`).select([`lucid_media.id`,`lucid_media.key`,`lucid_media.origin`,`lucid_media.type`,`lucid_media.mime_type`,`lucid_media.file_extension`,`lucid_media.file_name`,`lucid_media.file_size`,`lucid_media.width`,`lucid_media.height`,`lucid_media.focal_x`,`lucid_media.focal_y`,`lucid_media.blur_hash`,`lucid_media.average_color`,`lucid_media.base64`,`lucid_media.is_dark`,`lucid_media.is_light`,r(this.db,this.dbAdapter,`lucid_media.id`)]).whereRef(`lucid_media.id`,`=`,`cb_user.profile_picture_media_id`).where(`lucid_media.is_deleted`,`=`,this.dbAdapter.getDefault(`boolean`,`false`))).as(`cb_user_profile_picture`),this.dbAdapter.jsonArrayFrom(e.selectFrom(`lucid_media`).select([`lucid_media.id`,`lucid_media.key`,`lucid_media.origin`,`lucid_media.type`,`lucid_media.mime_type`,`lucid_media.file_extension`,`lucid_media.file_name`,`lucid_media.file_size`,`lucid_media.width`,`lucid_media.height`,`lucid_media.focal_x`,`lucid_media.focal_y`,`lucid_media.blur_hash`,`lucid_media.average_color`,`lucid_media.base64`,`lucid_media.is_dark`,`lucid_media.is_light`,r(this.db,this.dbAdapter,`lucid_media.id`)]).whereRef(`lucid_media.id`,`=`,`ub_user.profile_picture_media_id`).where(`lucid_media.is_deleted`,`=`,this.dbAdapter.getDefault(`boolean`,`false`))).as(`ub_user_profile_picture`)]).where(`${t.tables.versions}.type`,`=`,t.version).$if(t.versionId!==void 0,e=>e.where(`${t.tables.versions}.id`,`=`,t.versionId));a=this.applyBrickFiltersToQuery(a,t.brickFilters,i.tableName,t.tables.versions),a=this.applyRelationDocumentFiltersToQuery(a,t.relationDocumentFilters,i.tableName,t.tables.versions,t.tenantKey),a=this.applyDocumentFilterOrToQuery(a,t.filterOr,i.tableName,t.tables.versions,!1,t.tenantKey),a=n.tenantScope(a,{tenantKey:t.tenantKey,column:`${i.tableName}.tenant_key`});let{main:o}=n.main({main:a},{queryParams:{filter:t.documentFilters},database:this.dbAdapter.config,meta:{tableKeys:{filters:{id:`${i.tableName}.id`,collectionKey:`${i.tableName}.collection_key`,createdBy:`${i.tableName}.created_by`,updatedBy:`${i.tableName}.updated_by`,createdAt:`${i.tableName}.created_at`,updatedAt:`${i.tableName}.updated_at`,isDeleted:`${i.tableName}.is_deleted`,deletedBy:`${i.tableName}.deleted_by`},sorts:{createdAt:`${i.tableName}.created_at`,updatedAt:`${i.tableName}.updated_at`}}}});return o.executeTakeFirst()},{method:`selectSingleFiltered`,tableName:i.tableName});return a.response.error?a.response:this.validateResponse(a,{mode:`single`,schema:this.mergeSchema(i.schema)})}async selectMultipleValidationIds(e,t){let r=this.db.selectFrom(t.tableName).select(`id`).where(`id`,`in`,e.ids);r=n.tenantScope(r,{tenantKey:e.tenantKey,column:`${t.tableName}.tenant_key`});let i=await this.executeQuery(()=>r.execute(),{method:`selectMultipleValidationIds`,tableName:t.tableName});return i.response.error?i.response:this.validateResponse(i,{...e.validation,mode:`multiple`,select:[`id`],schema:this.mergeSchema(t.schema)})}async selectMultipleCollectionDocumentIds(e,t){let r=this.db.selectFrom(t.tableName).select(`id`).where(`collection_key`,`=`,e.collectionKey);e.isDeleted!==void 0&&(r=r.where(`is_deleted`,`=`,e.isDeleted)),r=n.tenantScope(r,{tenantKey:e.tenantKey,column:`${t.tableName}.tenant_key`});let i=await this.executeQuery(()=>r.execute(),{method:`selectMultipleCollectionDocumentIds`,tableName:t.tableName});return i.response.error?i.response:this.validateResponse(i,{...e.validation,mode:`multiple`,select:[`id`],schema:this.mergeSchema(t.schema)})}async selectHighestOrderKey(e,t){let r=this.db.selectFrom(t.tableName).select(`order`).where(`order`,`is not`,null).where(`is_deleted`,`=`,this.dbAdapter.getDefault(`boolean`,`false`)).orderBy(`order`,`desc`).limit(1);r=n.tenantScope(r,{tenantKey:e.tenantKey,column:`${t.tableName}.tenant_key`});let i=await this.executeQuery(()=>r.executeTakeFirst(),{method:`selectHighestOrderKey`,tableName:t.tableName});return i.response.error?i.response:this.validateResponse(i,{enabled:!1,mode:`single`})}async selectOrderKeysByIds(e,t){if(e.ids.length===0)return{error:void 0,data:[]};let n=this.db.selectFrom(t.tableName).select([`id`,`order`]).where(`id`,`in`,e.ids),r=await this.executeQuery(()=>n.execute(),{method:`selectOrderKeysByIds`,tableName:t.tableName});return r.response.error?r.response:this.validateResponse(r,{enabled:!1,mode:`multiple`})}async selectMultipleUnion(e){if(e.tables.length===0)return{error:void 0,data:[]};let t=e.tables.map(e=>this.db.selectFrom(e).select([`${e}.id`,`${e}.collection_key`])),n=t[0];if(n===void 0)return{error:void 0,data:[]};for(let e=1;e<t.length;e++){let r=t[e];r!==void 0&&(n=n.unionAll(r))}let r=await this.executeQuery(()=>n.execute(),{method:`selectMultipleUnion`});return r.response.error?r.response:this.validateResponse(r,{enabled:!1,mode:`multiple`})}buildCustomFieldSortRefs(e){return Object.fromEntries(e.customFieldSorts.map(t=>[t.key,c`(select cf_sort.${c.ref(t.column)} from ${c.table(e.documentFieldsTable)} as cf_sort where cf_sort.document_version_id = ${c.ref(`${e.versionsTable}.id`)} and cf_sort.locale = ${e.defaultLocale} limit 1)`]))}getDocumentFilterValues(e){return(Array.isArray(e.value)?e.value:[e.value]).filter(e=>e!==null)}buildDocumentFilterExpression(e,n,r,i){if(n.key===`workflowAssignee`){if(!i)return;let e=this.getDocumentFilterValues(n);return e.length===0?c`1 = 0`:c`exists ( select 1 from lucid_document_workflow_assignees where lucid_document_workflow_assignees.workflow_id = lucid_document_workflows.id and lucid_document_workflow_assignees.user_id in (${c.join(e.map(e=>c`${e}`))}) )`}let a={id:`${r}.id`,collectionKey:`${r}.collection_key`,createdBy:`${r}.created_by`,updatedBy:`${r}.updated_by`,createdAt:`${r}.created_at`,updatedAt:`${r}.updated_at`,isDeleted:`${r}.is_deleted`,deletedBy:`${r}.deleted_by`,...i?{workflowStage:`lucid_document_workflows.stage_key`}:{}}[n.key];if(!a)return;let{ref:o}=this.db.dynamic;return t({eb:e,reference:o(a),filter:n,caseInsensitiveLikeOperator:this.dbAdapter.config.caseInsensitiveLikeOperator})}buildBrickFilterExpressions(e,n,r,i){let{table:a,ref:o}=this.db.dynamic;return n.map(n=>{let s=this.db.selectFrom(a(n.table).as(`bf`)).whereRef(o(`bf.document_id`),`=`,o(`${r}.id`));i!==void 0&&(s=s.whereRef(o(`bf.document_version_id`),`=`,o(`${i}.id`)));for(let e of n.filters)s=s.where(n=>t({eb:n,reference:o(`bf.${e.column}`),filter:e,caseInsensitiveLikeOperator:this.dbAdapter.config.caseInsensitiveLikeOperator}));return e.exists(s.select(c.lit(1).as(`exists`)))})}buildRelationDocumentFilterExpressions(e,t,n,r,i){let{ref:a}=this.db.dynamic;return t.map(t=>{let o=this.db.selectFrom(c.table(t.relation.table).as(`rdf_relation`)).innerJoin(c.table(t.target.tables.document).as(`rdf_document`),e=>e.onRef(a(`rdf_document.id`),`=`,a(`rdf_relation.${t.relation.documentIdColumn}`))).innerJoin(c.table(t.target.tables.versions).as(`rdf_version`),e=>e.onRef(a(`rdf_version.document_id`),`=`,a(`rdf_document.id`))).whereRef(a(`rdf_relation.document_id`),`=`,a(`${n}.id`)).whereRef(a(`rdf_relation.document_version_id`),`=`,a(`${r}.id`)).where(a(`rdf_relation.${t.relation.collectionKeyColumn}`),`=`,t.target.collectionKey).where(a(`rdf_version.type`),`=`,t.target.versionType).where(a(`rdf_document.is_deleted`),`=`,this.dbAdapter.getDefault(`boolean`,`false`));i!=null&&(o=o.where(e=>e.or([e(a(`rdf_document.tenant_key`),`=`,i),e(a(`rdf_document.tenant_key`),`is`,null)])));for(let e of t.target.documentFilters)o=o.where(t=>this.buildDocumentFilterExpression(t,e,`rdf_document`,!1)??t.val(!0));return t.target.brickFilters.length>0&&(o=o.where(e=>e.and(this.buildBrickFilterExpressions(e,t.target.brickFilters,`rdf_document`,`rdf_version`)))),e.exists(o.select(c.lit(1).as(`exists`)))})}applyDocumentFilterOrToQuery(e,t,n,r,i,a){return!t||t.length===0?e:e.where(e=>{let o=[];for(let s of t){let t=[];for(let r of s.documentFilters){let a=this.buildDocumentFilterExpression(e,r,n,i);a!==void 0&&t.push(a)}t.push(...this.buildBrickFilterExpressions(e,s.brickFilters,n,r)),r!==void 0&&t.push(...this.buildRelationDocumentFilterExpressions(e,s.relationDocumentFilters,n,r,a)),t.length>0&&o.push(e.and(t))}return o.length>0?e.or(o):e.val(!0)})}applyRelationDocumentFiltersToQuery(e,t,n,r,i){return t.length===0?e:e.where(e=>e.and(this.buildRelationDocumentFilterExpressions(e,t,n,r,i)))}applyBrickFiltersToQuery(e,t,n,r){return!t||t.length===0?e:e.where(e=>{let i=this.buildBrickFilterExpressions(e,t,n,r);return e.and(i)})}};export{l as default}; //# sourceMappingURL=documents.mjs.map