{"version":3,"file":"documents.mjs","names":["constants","queryBuilder"],"sources":["../../../src/libs/repositories/documents.ts"],"sourcesContent":["import type { ExpressionBuilder, OperandExpression, SqlBool } from \"kysely\";\nimport { type SelectQueryBuilder, sql } from \"kysely\";\nimport z from \"zod\";\nimport constants from \"../../constants/constants.js\";\nimport { versionTypesSchema } from \"../../schemas/document-versions.js\";\nimport type {\n\tClientGetSingleQueryParams,\n\tGetMultipleQueryParams,\n} from \"../../schemas/documents.js\";\nimport type {\n\tQueryParamFilterCondition,\n\tQueryParamFilters,\n} from \"../../types/query-params.js\";\nimport type {\n\tConfig,\n\tLucidBricksTable,\n\tLucidBrickTableName,\n\tLucidVersionTable,\n} from \"../../types.js\";\nimport type {\n\tBrickFilters,\n\tDocumentFilterGroup,\n\tRelationDocumentFilter,\n} from \"../../utils/helpers/group-document-filters.js\";\nimport resolveCustomFieldSorts, {\n\ttype CustomFieldSort,\n} from \"../../utils/helpers/resolve-custom-field-sorts.js\";\nimport type CollectionBuilder from \"../collection/builders/collection-builder/index.js\";\nimport type { CollectionSchemaTable } from \"../collection/schema/types.js\";\nimport type DatabaseAdapter from \"../db/adapter-base.js\";\nimport queryBuilder from \"../db/query-builder/index.js\";\nimport compileFilterExpression from \"../db/query-builder/utils/compile-filter-expression.js\";\nimport type {\n\tDocumentVersionType,\n\tInsert,\n\tKyselyDB,\n\tLucidDocumentTable,\n\tLucidDocumentTableName,\n\tLucidVersionTableName,\n\tSelect,\n} from \"../db/types.js\";\nimport type { MediaPosterPropsT } from \"../formatters/media.js\";\nimport type { DocumentWorkflowDetailedQueryResponse } from \"./document-workflows.js\";\nimport { activeMediaCropSelect } from \"./helpers/media-selects.js\";\nimport DynamicRepository from \"./parents/dynamic-repository.js\";\nimport type { DynamicConfig, QueryProps } from \"./types.js\";\n\nexport interface DocumentQueryResponse extends Select<LucidDocumentTable> {\n\t// Created by user join\n\tcb_user_id?: number | null;\n\tcb_user_email?: string | null;\n\tcb_user_first_name?: string | null;\n\tcb_user_last_name?: string | null;\n\tcb_user_username?: string | null;\n\tcb_user_profile_picture?: MediaPosterPropsT[];\n\t// Updated by user join\n\tub_user_id?: number | null;\n\tub_user_email?: string | null;\n\tub_user_first_name?: string | null;\n\tub_user_last_name?: string | null;\n\tub_user_username?: string | null;\n\tub_user_profile_picture?: MediaPosterPropsT[];\n\t// Target Version\n\tversion_id?: number | null;\n\tversion_type?: DocumentVersionType | null;\n\tversion_promoted_from?: number | null;\n\tversion_created_at?: Date | string | null;\n\tversion_created_by?: number | null;\n\tworkflow_id?: number | null;\n\tworkflow_stage_key?: string | null;\n\tworkflow_created_by?: number | null;\n\tworkflow_created_at?: Date | string | null;\n\tworkflow_updated_by?: number | null;\n\tworkflow_updated_at?: Date | string | null;\n\tworkflow_assignees?: DocumentWorkflowDetailedQueryResponse[\"assignees\"];\n\tversions: Select<LucidVersionTable>[];\n\t[key: LucidBrickTableName]: Select<LucidBricksTable>[];\n}\n\nexport default class DocumentsRepository extends DynamicRepository<LucidDocumentTableName> {\n\tconstructor(db: KyselyDB, dbAdapter: DatabaseAdapter) {\n\t\tsuper(db, dbAdapter, \"lucid_document__collection-key\");\n\t}\n\ttableSchema = z.object({\n\t\tis_deleted: z.union([\n\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.true),\n\t\t\tz.literal(this.dbAdapter.config.defaults.boolean.false),\n\t\t]),\n\t\tis_deleted_at: z.union([z.string(), z.date()]).optional(),\n\t\tdeleted_by: z.number().nullable(),\n\n\t\tid: z.number(),\n\t\tcollection_key: z.string(),\n\t\tcollection_migration_id: z.number(),\n\t\ttenant_key: z.string().nullable(),\n\t\torder: z.string().nullable(),\n\t\tcreated_by: z.number().nullable(),\n\t\tcreated_at: z.union([z.string(), z.date()]).nullable(),\n\t\tupdated_by: z.number().nullable(),\n\t\tupdated_at: z.union([z.string(), z.date()]).nullable(),\n\t\tversions: z.array(\n\t\t\tz.object({\n\t\t\t\tid: z.number(),\n\t\t\t\ttype: versionTypesSchema,\n\t\t\t\tcreated_by: z.number().nullable(),\n\t\t\t\tcreated_at: z.union([z.string(), z.date()]),\n\t\t\t\tupdated_by: z.number().nullable(),\n\t\t\t\tupdated_at: z.union([z.string(), z.date()]).nullable(),\n\t\t\t}),\n\t\t),\n\t\tcb_user_id: z.number().nullable(),\n\t\tcb_user_email: z.email().nullable(),\n\t\tcb_user_first_name: z.string().nullable(),\n\t\tcb_user_last_name: z.string().nullable(),\n\t\tcb_user_username: z.string().nullable(),\n\t\tcb_user_profile_picture: z.array(z.any()).optional(),\n\t\tub_user_id: z.number().nullable(),\n\t\tub_user_email: z.email().nullable(),\n\t\tub_user_first_name: z.string().nullable(),\n\t\tub_user_last_name: z.string().nullable(),\n\t\tub_user_username: z.string().nullable(),\n\t\tub_user_profile_picture: z.array(z.any()).optional(),\n\t});\n\tcolumnFormats = {\n\t\tid: this.dbAdapter.getDataType(\"primary\"),\n\t\tcollection_key: this.dbAdapter.getDataType(\"text\"),\n\t\tcollection_migration_id: this.dbAdapter.getDataType(\"integer\"),\n\t\ttenant_key: this.dbAdapter.getDataType(\"text\"),\n\t\torder: this.dbAdapter.getDataType(\"text\"),\n\t\tis_deleted: this.dbAdapter.getDataType(\"boolean\"),\n\t\tis_deleted_at: this.dbAdapter.getDataType(\"timestamp\"),\n\t\tdeleted_by: this.dbAdapter.getDataType(\"integer\"),\n\t\tcreated_by: this.dbAdapter.getDataType(\"integer\"),\n\t\tcreated_at: this.dbAdapter.getDataType(\"timestamp\"),\n\t\tupdated_by: this.dbAdapter.getDataType(\"integer\"),\n\t\tupdated_at: this.dbAdapter.getDataType(\"timestamp\"),\n\t};\n\tqueryConfig = undefined;\n\n\t// ----------------------------------------\n\t// queries\n\tasync upsertSingle<\n\t\tK extends keyof Select<LucidDocumentTable>,\n\t\tV extends boolean = false,\n\t>(\n\t\tprops: QueryProps<\n\t\t\tV,\n\t\t\t{\n\t\t\t\tdata: Partial<Insert<LucidDocumentTable>>;\n\t\t\t\treturning?: K[];\n\t\t\t\treturnAll?: true;\n\t\t\t}\n\t\t>,\n\t\tdynamicConfig: DynamicConfig<LucidDocumentTableName>,\n\t) {\n\t\tconst query = this.db\n\t\t\t.insertInto(dynamicConfig.tableName)\n\t\t\t.values(\n\t\t\t\tthis.formatData(props.data, {\n\t\t\t\t\ttype: \"insert\",\n\t\t\t\t\tdynamicColumns: dynamicConfig.columns,\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.onConflict((oc) =>\n\t\t\t\toc.column(\"id\").doUpdateSet((eb) => ({\n\t\t\t\t\tcollection_migration_id: eb.ref(\"excluded.collection_migration_id\"),\n\t\t\t\t\tis_deleted: eb.ref(\"excluded.is_deleted\"),\n\t\t\t\t\tis_deleted_at: eb.ref(\"excluded.is_deleted_at\"),\n\t\t\t\t\tdeleted_by: eb.ref(\"excluded.deleted_by\"),\n\t\t\t\t\tupdated_at: eb.ref(\"excluded.updated_at\"),\n\t\t\t\t})),\n\t\t\t)\n\t\t\t.$if(\n\t\t\t\tprops.returnAll !== true &&\n\t\t\t\t\tprops.returning !== undefined &&\n\t\t\t\t\tprops.returning.length > 0,\n\t\t\t\t(qb) => qb.returning(props.returning as K[]),\n\t\t\t)\n\t\t\t.$if(props.returnAll ?? false, (qb) => qb.returningAll());\n\n\t\tconst exec = await this.executeQuery(\n\t\t\t() =>\n\t\t\t\tquery.executeTakeFirst() as Promise<\n\t\t\t\t\tPick<Select<LucidDocumentTable>, K> | undefined\n\t\t\t\t>,\n\t\t\t{\n\t\t\t\tmethod: \"upsertSingle\",\n\t\t\t\ttableName: dynamicConfig.tableName,\n\t\t\t},\n\t\t);\n\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn this.validateResponse(exec, {\n\t\t\t...props.validation,\n\t\t\tmode: \"single\",\n\t\t\tselect: props.returning as string[],\n\t\t\tselectAll: props.returnAll,\n\t\t\tschema: this.mergeSchema(dynamicConfig.schema),\n\t\t});\n\t}\n\tasync upsertMultiple<\n\t\tK extends keyof Select<LucidDocumentTable>,\n\t\tV extends boolean = false,\n\t>(\n\t\tprops: QueryProps<\n\t\t\tV,\n\t\t\t{\n\t\t\t\tdata: Partial<Insert<LucidDocumentTable>>[];\n\t\t\t\treturning?: K[];\n\t\t\t\treturnAll?: true;\n\t\t\t}\n\t\t>,\n\t\tdynamicConfig: DynamicConfig<LucidDocumentTableName>,\n\t) {\n\t\tconst query = this.db\n\t\t\t.insertInto(dynamicConfig.tableName)\n\t\t\t.values(\n\t\t\t\tprops.data.map((d) =>\n\t\t\t\t\tthis.formatData(d, {\n\t\t\t\t\t\ttype: \"insert\",\n\t\t\t\t\t\tdynamicColumns: dynamicConfig.columns,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t)\n\t\t\t.onConflict((oc) =>\n\t\t\t\toc.column(\"id\").doUpdateSet((eb) => ({\n\t\t\t\t\tcollection_migration_id: eb.ref(\"excluded.collection_migration_id\"),\n\t\t\t\t\tis_deleted: eb.ref(\"excluded.is_deleted\"),\n\t\t\t\t\tis_deleted_at: eb.ref(\"excluded.is_deleted_at\"),\n\t\t\t\t\tdeleted_by: eb.ref(\"excluded.deleted_by\"),\n\t\t\t\t\tupdated_at: eb.ref(\"excluded.updated_at\"),\n\t\t\t\t})),\n\t\t\t)\n\t\t\t.$if(\n\t\t\t\tprops.returnAll !== true &&\n\t\t\t\t\tprops.returning !== undefined &&\n\t\t\t\t\tprops.returning.length > 0,\n\t\t\t\t(qb) => qb.returning(props.returning as K[]),\n\t\t\t)\n\t\t\t.$if(props.returnAll ?? false, (qb) => qb.returningAll());\n\n\t\tconst exec = await this.executeQuery(\n\t\t\t() =>\n\t\t\t\tquery.executeTakeFirst() as Promise<\n\t\t\t\t\tPick<Select<LucidDocumentTable>, K> | undefined\n\t\t\t\t>,\n\t\t\t{\n\t\t\t\tmethod: \"upsertMultiple\",\n\t\t\t\ttableName: dynamicConfig.tableName,\n\t\t\t},\n\t\t);\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn this.validateResponse(exec, {\n\t\t\t...props.validation,\n\t\t\tmode: \"multiple\",\n\t\t\tselect: props.returning as string[],\n\t\t\tselectAll: props.returnAll,\n\t\t\tschema: this.mergeSchema(dynamicConfig.schema),\n\t\t});\n\t}\n\tasync selectSingleById<V extends boolean = false>(\n\t\tprops: QueryProps<\n\t\t\tV,\n\t\t\t{\n\t\t\t\tid: number;\n\t\t\t\tversion?: DocumentVersionType;\n\t\t\t\tversionId?: number;\n\t\t\t\ttables: {\n\t\t\t\t\tversions: LucidVersionTableName;\n\t\t\t\t};\n\t\t\t}\n\t\t>,\n\t\tdynamicConfig: DynamicConfig<LucidDocumentTableName>,\n\t) {\n\t\tconst query = this.db\n\t\t\t.selectFrom(dynamicConfig.tableName)\n\t\t\t.select([\n\t\t\t\t`${dynamicConfig.tableName}.id`,\n\t\t\t\t`${dynamicConfig.tableName}.collection_key`,\n\t\t\t\t`${dynamicConfig.tableName}.tenant_key`,\n\t\t\t\t`${dynamicConfig.tableName}.created_by`,\n\t\t\t\t`${dynamicConfig.tableName}.created_at`,\n\t\t\t\t`${dynamicConfig.tableName}.updated_at`,\n\t\t\t\t`${dynamicConfig.tableName}.updated_by`,\n\t\t\t\t`${dynamicConfig.tableName}.is_deleted`,\n\t\t\t])\n\t\t\t.select([\n\t\t\t\t(eb) =>\n\t\t\t\t\tthis.dbAdapter\n\t\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\t\teb\n\t\t\t\t\t\t\t\t.selectFrom(props.tables.versions)\n\t\t\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\t`${props.tables.versions}.id`,\n\t\t\t\t\t\t\t\t\t`${props.tables.versions}.type`,\n\t\t\t\t\t\t\t\t\t`${props.tables.versions}.promoted_from`,\n\t\t\t\t\t\t\t\t\t`${props.tables.versions}.content_id`,\n\t\t\t\t\t\t\t\t\t`${props.tables.versions}.created_at`,\n\t\t\t\t\t\t\t\t\t`${props.tables.versions}.created_by`,\n\t\t\t\t\t\t\t\t\t`${props.tables.versions}.updated_at`,\n\t\t\t\t\t\t\t\t\t`${props.tables.versions}.updated_by`,\n\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\t\t\t\t`${props.tables.versions}.document_id`,\n\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t`${dynamicConfig.tableName}.id`,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.where((eb) =>\n\t\t\t\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\t\t\t\teb(`${props.tables.versions}.type`, \"!=\", \"revision\"),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.where((eb) =>\n\t\t\t\t\t\t\t\t\teb(\n\t\t\t\t\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.type`,\n\t\t\t\t\t\t\t\t\t\t\"!=\",\n\t\t\t\t\t\t\t\t\t\tconstants.collectionBuilder.publishing.snapshotVersionType,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.as(\"versions\"),\n\t\t\t])\n\t\t\t.$if(props.version !== undefined, (qb) =>\n\t\t\t\tqb\n\t\t\t\t\t.leftJoin(props.tables.versions, (join) =>\n\t\t\t\t\t\tjoin\n\t\t\t\t\t\t\t.onRef(\n\t\t\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\t\t\t`${props.tables.versions}.document_id`,\n\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t`${dynamicConfig.tableName}.id`,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\t\t.on(`${props.tables.versions}.type`, \"=\", props.version),\n\t\t\t\t\t)\n\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t.select([\n\t\t\t\t\t\t`${props.tables.versions}.id as version_id`,\n\t\t\t\t\t\t`${props.tables.versions}.type as version_type`,\n\t\t\t\t\t\t`${props.tables.versions}.created_at as version_created_at`,\n\t\t\t\t\t\t`${props.tables.versions}.created_by as version_created_by`,\n\t\t\t\t\t\t`${props.tables.versions}.updated_at as version_updated_at`,\n\t\t\t\t\t\t`${props.tables.versions}.updated_by as version_updated_by`,\n\t\t\t\t\t]),\n\t\t\t)\n\t\t\t.$if(props.versionId !== undefined, (qb) =>\n\t\t\t\tqb\n\t\t\t\t\t.leftJoin(props.tables.versions, (join) =>\n\t\t\t\t\t\tjoin\n\t\t\t\t\t\t\t.onRef(\n\t\t\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\t\t\t`${props.tables.versions}.document_id`,\n\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t`${dynamicConfig.tableName}.id`,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.on(\n\t\t\t\t\t\t\t\t`${props.tables.versions}.id`,\n\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\tprops.versionId as number,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t.select([\n\t\t\t\t\t\t`${props.tables.versions}.id as version_id`,\n\t\t\t\t\t\t`${props.tables.versions}.type as version_type`,\n\t\t\t\t\t\t`${props.tables.versions}.created_at as version_created_at`,\n\t\t\t\t\t\t`${props.tables.versions}.created_by as version_created_by`,\n\t\t\t\t\t\t`${props.tables.versions}.updated_at as version_updated_at`,\n\t\t\t\t\t\t`${props.tables.versions}.updated_by as version_updated_by`,\n\t\t\t\t\t]),\n\t\t\t)\n\t\t\t.leftJoin(\n\t\t\t\t\"lucid_users as cb_user\",\n\t\t\t\t\"cb_user.id\",\n\t\t\t\t`${dynamicConfig.tableName}.created_by`,\n\t\t\t)\n\t\t\t.leftJoin(\n\t\t\t\t\"lucid_users as ub_user\",\n\t\t\t\t\"ub_user.id\",\n\t\t\t\t`${dynamicConfig.tableName}.updated_by`,\n\t\t\t)\n\t\t\t.select([\n\t\t\t\t// created by\n\t\t\t\t\"cb_user.id as cb_user_id\",\n\t\t\t\t\"cb_user.email as cb_user_email\",\n\t\t\t\t\"cb_user.first_name as cb_user_first_name\",\n\t\t\t\t\"cb_user.last_name as cb_user_last_name\",\n\t\t\t\t\"cb_user.username as cb_user_username\",\n\t\t\t\t// updated by\n\t\t\t\t\"ub_user.id as ub_user_id\",\n\t\t\t\t\"ub_user.email as ub_user_email\",\n\t\t\t\t\"ub_user.first_name as ub_user_first_name\",\n\t\t\t\t\"ub_user.last_name as ub_user_last_name\",\n\t\t\t\t\"ub_user.username as ub_user_username\",\n\t\t\t])\n\t\t\t.select((eb) => [\n\t\t\t\tthis.dbAdapter\n\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\teb\n\t\t\t\t\t\t\t.selectFrom(\"lucid_media\")\n\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\"lucid_media.key\",\n\t\t\t\t\t\t\t\t\"lucid_media.origin\",\n\t\t\t\t\t\t\t\t\"lucid_media.type\",\n\t\t\t\t\t\t\t\t\"lucid_media.mime_type\",\n\t\t\t\t\t\t\t\t\"lucid_media.file_extension\",\n\t\t\t\t\t\t\t\t\"lucid_media.file_name\",\n\t\t\t\t\t\t\t\t\"lucid_media.file_size\",\n\t\t\t\t\t\t\t\t\"lucid_media.width\",\n\t\t\t\t\t\t\t\t\"lucid_media.height\",\n\t\t\t\t\t\t\t\t\"lucid_media.focal_x\",\n\t\t\t\t\t\t\t\t\"lucid_media.focal_y\",\n\t\t\t\t\t\t\t\t\"lucid_media.blur_hash\",\n\t\t\t\t\t\t\t\t\"lucid_media.average_color\",\n\t\t\t\t\t\t\t\t\"lucid_media.base64\",\n\t\t\t\t\t\t\t\t\"lucid_media.is_dark\",\n\t\t\t\t\t\t\t\t\"lucid_media.is_light\",\n\t\t\t\t\t\t\t\tactiveMediaCropSelect(\n\t\t\t\t\t\t\t\t\tthis.db,\n\t\t\t\t\t\t\t\t\tthis.dbAdapter,\n\t\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\"cb_user.profile_picture_media_id\",\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.where(\n\t\t\t\t\t\t\t\t\"lucid_media.is_deleted\",\n\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\tthis.dbAdapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\t.as(\"cb_user_profile_picture\"),\n\t\t\t\tthis.dbAdapter\n\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\teb\n\t\t\t\t\t\t\t.selectFrom(\"lucid_media\")\n\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\"lucid_media.key\",\n\t\t\t\t\t\t\t\t\"lucid_media.origin\",\n\t\t\t\t\t\t\t\t\"lucid_media.type\",\n\t\t\t\t\t\t\t\t\"lucid_media.mime_type\",\n\t\t\t\t\t\t\t\t\"lucid_media.file_extension\",\n\t\t\t\t\t\t\t\t\"lucid_media.file_name\",\n\t\t\t\t\t\t\t\t\"lucid_media.file_size\",\n\t\t\t\t\t\t\t\t\"lucid_media.width\",\n\t\t\t\t\t\t\t\t\"lucid_media.height\",\n\t\t\t\t\t\t\t\t\"lucid_media.focal_x\",\n\t\t\t\t\t\t\t\t\"lucid_media.focal_y\",\n\t\t\t\t\t\t\t\t\"lucid_media.blur_hash\",\n\t\t\t\t\t\t\t\t\"lucid_media.average_color\",\n\t\t\t\t\t\t\t\t\"lucid_media.base64\",\n\t\t\t\t\t\t\t\t\"lucid_media.is_dark\",\n\t\t\t\t\t\t\t\t\"lucid_media.is_light\",\n\t\t\t\t\t\t\t\tactiveMediaCropSelect(\n\t\t\t\t\t\t\t\t\tthis.db,\n\t\t\t\t\t\t\t\t\tthis.dbAdapter,\n\t\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\"ub_user.profile_picture_media_id\",\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.where(\n\t\t\t\t\t\t\t\t\"lucid_media.is_deleted\",\n\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\tthis.dbAdapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t\t.as(\"ub_user_profile_picture\"),\n\t\t\t])\n\t\t\t.where(`${dynamicConfig.tableName}.id`, \"=\", props.id);\n\n\t\tconst exec = await this.executeQuery(\n\t\t\t() =>\n\t\t\t\tquery.executeTakeFirst() as unknown as Promise<DocumentQueryResponse>,\n\t\t\t{\n\t\t\t\tmethod: \"selectSingleById\",\n\t\t\t\ttableName: dynamicConfig.tableName,\n\t\t\t},\n\t\t);\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn this.validateResponse(exec, {\n\t\t\t...props.validation,\n\t\t\tmode: \"single\",\n\t\t\tschema: this.mergeSchema(dynamicConfig.schema),\n\t\t});\n\t}\n\tasync selectMultipleFiltered(\n\t\tprops: {\n\t\t\tversion: DocumentVersionType;\n\t\t\tversionId?: number;\n\t\t\t/** The version used to determine which version of the relation custom field refs to fetch */\n\t\t\trelationVersionType: Exclude<DocumentVersionType, \"revision\">;\n\t\t\tdocumentFilters: QueryParamFilters;\n\t\t\tbrickFilters: BrickFilters[];\n\t\t\trelationDocumentFilters: RelationDocumentFilter[];\n\t\t\tquery: GetMultipleQueryParams;\n\t\t\tcollection: CollectionBuilder;\n\t\t\tdocumentFieldsTableSchema:\n\t\t\t\t| CollectionSchemaTable<LucidBrickTableName>\n\t\t\t\t| undefined;\n\t\t\tdocumentFieldRelationTableSchemas?: CollectionSchemaTable<LucidBrickTableName>[];\n\t\t\tconfig: Config;\n\t\t\tincludeWorkflow: boolean;\n\t\t\tworkflowAssigneeFilterValues?: Array<string | number>;\n\t\t\ttenantKey?: string | null;\n\t\t\tfilterOr?: DocumentFilterGroup[];\n\t\t\ttables: {\n\t\t\t\tversions: LucidVersionTableName;\n\t\t\t\tdocumentFields: LucidBrickTableName;\n\t\t\t};\n\t\t},\n\t\tdynamicConfig: DynamicConfig<LucidDocumentTableName>,\n\t) {\n\t\tconst queryFn = async () => {\n\t\t\tlet query = this.db\n\t\t\t\t.selectFrom(dynamicConfig.tableName)\n\t\t\t\t.leftJoin(\n\t\t\t\t\tprops.tables.versions,\n\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t`${props.tables.versions}.document_id`,\n\t\t\t\t\t`${dynamicConfig.tableName}.id`,\n\t\t\t\t)\n\t\t\t\t.select([\n\t\t\t\t\t`${dynamicConfig.tableName}.id`,\n\t\t\t\t\t`${dynamicConfig.tableName}.collection_key`,\n\t\t\t\t\t`${dynamicConfig.tableName}.created_by`,\n\t\t\t\t\t`${dynamicConfig.tableName}.created_at`,\n\t\t\t\t\t`${dynamicConfig.tableName}.updated_at`,\n\t\t\t\t\t`${dynamicConfig.tableName}.updated_by`,\n\t\t\t\t\t`${dynamicConfig.tableName}.is_deleted`,\n\t\t\t\t])\n\t\t\t\t.select([\n\t\t\t\t\t(eb) =>\n\t\t\t\t\t\tthis.dbAdapter\n\t\t\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\t\t\teb\n\t\t\t\t\t\t\t\t\t.selectFrom(props.tables.versions)\n\t\t\t\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\t\t\t\t.select(() => [\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.id`,\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.type`,\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.promoted_from`,\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.content_id`,\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.created_at`,\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.created_by`,\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.updated_at`,\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.updated_by`,\n\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.document_id`,\n\t\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\t`${dynamicConfig.tableName}.id`,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.where((eb) =>\n\t\t\t\t\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\t\t\t\t\teb(`${props.tables.versions}.type`, \"!=\", \"revision\"),\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.where((eb) =>\n\t\t\t\t\t\t\t\t\t\teb(\n\t\t\t\t\t\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.type`,\n\t\t\t\t\t\t\t\t\t\t\t\"!=\",\n\t\t\t\t\t\t\t\t\t\t\tconstants.collectionBuilder.publishing\n\t\t\t\t\t\t\t\t\t\t\t\t.snapshotVersionType,\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.as(\"versions\"),\n\t\t\t\t\tthis.dbAdapter\n\t\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\t\tthis.db\n\t\t\t\t\t\t\t\t.selectFrom(props.tables.documentFields)\n\t\t\t\t\t\t\t\t.innerJoin(\n\t\t\t\t\t\t\t\t\tprops.tables.versions,\n\t\t\t\t\t\t\t\t\t`${props.tables.versions}.id`,\n\t\t\t\t\t\t\t\t\t`${props.tables.documentFields}.document_version_id`,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.where(\n\t\t\t\t\t\t\t\t\t`${props.tables.versions}.document_id`,\n\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\t\t\t\tsql.ref(`${dynamicConfig.tableName}.id`),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.where(`${props.tables.versions}.type`, \"=\", props.version)\n\t\t\t\t\t\t\t\t.$if(props.versionId !== undefined, (qb) =>\n\t\t\t\t\t\t\t\t\tqb.where(\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.id`,\n\t\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\tprops.versionId as number,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.select(\n\t\t\t\t\t\t\t\t\tprops.documentFieldsTableSchema?.columns.map(\n\t\t\t\t\t\t\t\t\t\t(c) => `${props.tables.documentFields}.${c.name}`,\n\t\t\t\t\t\t\t\t\t) || [],\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.as(props.tables.documentFields),\n\t\t\t\t\t...(props.documentFieldRelationTableSchemas ?? []).map((schema) =>\n\t\t\t\t\t\tthis.dbAdapter\n\t\t\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\t\t\tthis.db\n\t\t\t\t\t\t\t\t\t.selectFrom(schema.name)\n\t\t\t\t\t\t\t\t\t.innerJoin(\n\t\t\t\t\t\t\t\t\t\tprops.tables.versions,\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.id`,\n\t\t\t\t\t\t\t\t\t\t`${schema.name}.document_version_id`,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.where(\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.document_id`,\n\t\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\t\t\t\t\tsql.ref(`${dynamicConfig.tableName}.id`),\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.where(`${props.tables.versions}.type`, \"=\", props.version)\n\t\t\t\t\t\t\t\t\t.$if(props.versionId !== undefined, (qb) =>\n\t\t\t\t\t\t\t\t\t\tqb.where(\n\t\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.id`,\n\t\t\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\t\tprops.versionId as number,\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.select(\n\t\t\t\t\t\t\t\t\t\tschema.columns.map((c) => `${schema.name}.${c.name}`),\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.as(schema.name),\n\t\t\t\t\t),\n\t\t\t\t])\n\t\t\t\t// @ts-expect-error\n\t\t\t\t.select([\n\t\t\t\t\t`${props.tables.versions}.id as version_id`,\n\t\t\t\t\t`${props.tables.versions}.type as version_type`,\n\t\t\t\t])\n\t\t\t\t.$if(props.includeWorkflow, (qb) =>\n\t\t\t\t\tqb\n\t\t\t\t\t\t.leftJoin(\"lucid_document_workflows\", (join) =>\n\t\t\t\t\t\t\tjoin\n\t\t\t\t\t\t\t\t.on(\n\t\t\t\t\t\t\t\t\t\"lucid_document_workflows.collection_key\",\n\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\tprops.collection.getData.key,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.onRef(\n\t\t\t\t\t\t\t\t\t\"lucid_document_workflows.document_id\",\n\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t`${dynamicConfig.tableName}.id`,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\"lucid_document_workflows.id as workflow_id\",\n\t\t\t\t\t\t\t\"lucid_document_workflows.stage_key as workflow_stage_key\",\n\t\t\t\t\t\t\t\"lucid_document_workflows.created_by as workflow_created_by\",\n\t\t\t\t\t\t\t\"lucid_document_workflows.created_at as workflow_created_at\",\n\t\t\t\t\t\t\t\"lucid_document_workflows.updated_by as workflow_updated_by\",\n\t\t\t\t\t\t\t\"lucid_document_workflows.updated_at as workflow_updated_at\",\n\t\t\t\t\t\t])\n\t\t\t\t\t\t.select((eb) => [\n\t\t\t\t\t\t\tthis.dbAdapter\n\t\t\t\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\t\t\t\teb\n\t\t\t\t\t\t\t\t\t\t.selectFrom(\"lucid_document_workflow_assignees\")\n\t\t\t\t\t\t\t\t\t\t.leftJoin(\n\t\t\t\t\t\t\t\t\t\t\t\"lucid_users\",\n\t\t\t\t\t\t\t\t\t\t\t\"lucid_users.id\",\n\t\t\t\t\t\t\t\t\t\t\t\"lucid_document_workflow_assignees.user_id\",\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t.select((userEb) => [\n\t\t\t\t\t\t\t\t\t\t\t\"lucid_document_workflow_assignees.id\",\n\t\t\t\t\t\t\t\t\t\t\t\"lucid_document_workflow_assignees.workflow_id\",\n\t\t\t\t\t\t\t\t\t\t\t\"lucid_document_workflow_assignees.user_id\",\n\t\t\t\t\t\t\t\t\t\t\t\"lucid_document_workflow_assignees.assigned_by\",\n\t\t\t\t\t\t\t\t\t\t\t\"lucid_document_workflow_assignees.assigned_at\",\n\t\t\t\t\t\t\t\t\t\t\t\"lucid_users.email\",\n\t\t\t\t\t\t\t\t\t\t\t\"lucid_users.username\",\n\t\t\t\t\t\t\t\t\t\t\t\"lucid_users.first_name\",\n\t\t\t\t\t\t\t\t\t\t\t\"lucid_users.last_name\",\n\t\t\t\t\t\t\t\t\t\t\tthis.dbAdapter\n\t\t\t\t\t\t\t\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\t\t\t\t\t\t\t\tuserEb\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.selectFrom(\"lucid_media\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.select((mediaEb) => [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media.key\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media.origin\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media.type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media.mime_type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media.file_extension\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media.file_name\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media.file_size\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media.width\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media.height\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media.focal_x\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media.focal_y\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media.blur_hash\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media.average_color\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media.base64\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media.is_dark\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media.is_light\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tactiveMediaCropSelect(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.db,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.dbAdapter,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.dbAdapter\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmediaEb\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.selectFrom(\"lucid_media_translations\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.title\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.alt\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.description\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.summary\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.locale_code\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media_translations.media_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.as(\"translations\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_users.profile_picture_media_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.where(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_media.is_deleted\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.dbAdapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t.as(\"profile_picture\"),\n\t\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\t\t\t\"lucid_document_workflow_assignees.workflow_id\",\n\t\t\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\t\t\"lucid_document_workflows.id\",\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t.orderBy(\n\t\t\t\t\t\t\t\t\t\t\t\"lucid_document_workflow_assignees.assigned_at\",\n\t\t\t\t\t\t\t\t\t\t\t\"asc\",\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.as(\"workflow_assignees\"),\n\t\t\t\t\t\t]),\n\t\t\t\t)\n\t\t\t\t.leftJoin(\n\t\t\t\t\t\"lucid_users as cb_user\",\n\t\t\t\t\t\"cb_user.id\",\n\t\t\t\t\t`${dynamicConfig.tableName}.created_by`,\n\t\t\t\t)\n\t\t\t\t.leftJoin(\n\t\t\t\t\t\"lucid_users as ub_user\",\n\t\t\t\t\t\"ub_user.id\",\n\t\t\t\t\t`${dynamicConfig.tableName}.updated_by`,\n\t\t\t\t)\n\t\t\t\t.select([\n\t\t\t\t\t\"cb_user.id as cb_user_id\",\n\t\t\t\t\t\"cb_user.email as cb_user_email\",\n\t\t\t\t\t\"cb_user.first_name as cb_user_first_name\",\n\t\t\t\t\t\"cb_user.last_name as cb_user_last_name\",\n\t\t\t\t\t\"cb_user.username as cb_user_username\",\n\t\t\t\t\t\"ub_user.id as ub_user_id\",\n\t\t\t\t\t\"ub_user.email as ub_user_email\",\n\t\t\t\t\t\"ub_user.first_name as ub_user_first_name\",\n\t\t\t\t\t\"ub_user.last_name as ub_user_last_name\",\n\t\t\t\t\t\"ub_user.username as ub_user_username\",\n\t\t\t\t])\n\t\t\t\t.select((eb) => [\n\t\t\t\t\tthis.dbAdapter\n\t\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\t\teb\n\t\t\t\t\t\t\t\t.selectFrom(\"lucid_media\")\n\t\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.key\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.origin\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.type\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.mime_type\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.file_extension\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.file_name\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.file_size\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.width\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.height\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.focal_x\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.focal_y\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.blur_hash\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.average_color\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.base64\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.is_dark\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.is_light\",\n\t\t\t\t\t\t\t\t\tactiveMediaCropSelect(\n\t\t\t\t\t\t\t\t\t\tthis.db,\n\t\t\t\t\t\t\t\t\t\tthis.dbAdapter,\n\t\t\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\"cb_user.profile_picture_media_id\",\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.where(\n\t\t\t\t\t\t\t\t\t\"lucid_media.is_deleted\",\n\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\tthis.dbAdapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.as(\"cb_user_profile_picture\"),\n\t\t\t\t\tthis.dbAdapter\n\t\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\t\teb\n\t\t\t\t\t\t\t\t.selectFrom(\"lucid_media\")\n\t\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.key\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.origin\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.type\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.mime_type\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.file_extension\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.file_name\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.file_size\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.width\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.height\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.focal_x\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.focal_y\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.blur_hash\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.average_color\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.base64\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.is_dark\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.is_light\",\n\t\t\t\t\t\t\t\t\tactiveMediaCropSelect(\n\t\t\t\t\t\t\t\t\t\tthis.db,\n\t\t\t\t\t\t\t\t\t\tthis.dbAdapter,\n\t\t\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\"ub_user.profile_picture_media_id\",\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.where(\n\t\t\t\t\t\t\t\t\t\"lucid_media.is_deleted\",\n\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\tthis.dbAdapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.as(\"ub_user_profile_picture\"),\n\t\t\t\t])\n\t\t\t\t// @ts-expect-error\n\t\t\t\t.where(`${props.tables.versions}.type`, \"=\", props.version)\n\t\t\t\t.$if(props.versionId !== undefined, (qb) =>\n\t\t\t\t\tqb.where(\n\t\t\t\t\t\t`${props.tables.versions}.id`,\n\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\tprops.versionId as number,\n\t\t\t\t\t),\n\t\t\t\t);\n\n\t\t\tlet queryCount = this.db\n\t\t\t\t.selectFrom(dynamicConfig.tableName)\n\t\t\t\t.leftJoin(\n\t\t\t\t\tprops.tables.versions,\n\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t`${props.tables.versions}.document_id`,\n\t\t\t\t\t`${dynamicConfig.tableName}.id`,\n\t\t\t\t)\n\t\t\t\t.leftJoin(\n\t\t\t\t\t\"lucid_users as cb_user\",\n\t\t\t\t\t\"cb_user.id\",\n\t\t\t\t\t`${dynamicConfig.tableName}.created_by`,\n\t\t\t\t)\n\t\t\t\t.leftJoin(\n\t\t\t\t\t\"lucid_users as ub_user\",\n\t\t\t\t\t\"ub_user.id\",\n\t\t\t\t\t`${dynamicConfig.tableName}.updated_by`,\n\t\t\t\t)\n\t\t\t\t.select(() =>\n\t\t\t\t\tsql`count(distinct ${sql.ref(`${dynamicConfig.tableName}.id`)})`.as(\n\t\t\t\t\t\t\"count\",\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.$if(props.includeWorkflow, (qb) =>\n\t\t\t\t\tqb.leftJoin(\"lucid_document_workflows\", (join) =>\n\t\t\t\t\t\tjoin\n\t\t\t\t\t\t\t.on(\n\t\t\t\t\t\t\t\t\"lucid_document_workflows.collection_key\",\n\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\tprops.collection.getData.key,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.onRef(\n\t\t\t\t\t\t\t\t\"lucid_document_workflows.document_id\",\n\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t`${dynamicConfig.tableName}.id`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t// @ts-expect-error\n\t\t\t\t.where(`${props.tables.versions}.type`, \"=\", props.version)\n\t\t\t\t.$if(props.versionId !== undefined, (qb) =>\n\t\t\t\t\tqb.where(\n\t\t\t\t\t\t`${props.tables.versions}.id`,\n\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\tprops.versionId as number,\n\t\t\t\t\t),\n\t\t\t\t);\n\n\t\t\tif (\n\t\t\t\tprops.includeWorkflow &&\n\t\t\t\tprops.workflowAssigneeFilterValues !== undefined\n\t\t\t) {\n\t\t\t\tconst assigneeFilter =\n\t\t\t\t\tprops.workflowAssigneeFilterValues.length > 0\n\t\t\t\t\t\t? sql<boolean>`exists (\n\t\t\t\t\t\t\t\tselect 1\n\t\t\t\t\t\t\t\tfrom lucid_document_workflow_assignees\n\t\t\t\t\t\t\t\twhere lucid_document_workflow_assignees.workflow_id = lucid_document_workflows.id\n\t\t\t\t\t\t\t\tand lucid_document_workflow_assignees.user_id in (${sql.join(props.workflowAssigneeFilterValues.map((id) => sql`${id}`))})\n\t\t\t\t\t\t\t)`\n\t\t\t\t\t\t: sql<boolean>`1 = 0`;\n\t\t\t\tquery = query.where(assigneeFilter);\n\t\t\t\tqueryCount = queryCount.where(assigneeFilter);\n\t\t\t}\n\n\t\t\tquery = this.applyBrickFiltersToQuery(\n\t\t\t\tquery,\n\t\t\t\tprops.brickFilters,\n\t\t\t\tdynamicConfig.tableName,\n\t\t\t\tprops.tables.versions,\n\t\t\t);\n\t\t\tqueryCount = this.applyBrickFiltersToQuery(\n\t\t\t\tqueryCount,\n\t\t\t\tprops.brickFilters,\n\t\t\t\tdynamicConfig.tableName,\n\t\t\t\tprops.tables.versions,\n\t\t\t);\n\t\t\tquery = this.applyRelationDocumentFiltersToQuery(\n\t\t\t\tquery,\n\t\t\t\tprops.relationDocumentFilters,\n\t\t\t\tdynamicConfig.tableName,\n\t\t\t\tprops.tables.versions,\n\t\t\t\tprops.tenantKey,\n\t\t\t);\n\t\t\tqueryCount = this.applyRelationDocumentFiltersToQuery(\n\t\t\t\tqueryCount,\n\t\t\t\tprops.relationDocumentFilters,\n\t\t\t\tdynamicConfig.tableName,\n\t\t\t\tprops.tables.versions,\n\t\t\t\tprops.tenantKey,\n\t\t\t);\n\t\t\tquery = this.applyDocumentFilterOrToQuery(\n\t\t\t\tquery,\n\t\t\t\tprops.filterOr,\n\t\t\t\tdynamicConfig.tableName,\n\t\t\t\tprops.tables.versions,\n\t\t\t\tprops.includeWorkflow,\n\t\t\t\tprops.tenantKey,\n\t\t\t);\n\t\t\tqueryCount = this.applyDocumentFilterOrToQuery(\n\t\t\t\tqueryCount,\n\t\t\t\tprops.filterOr,\n\t\t\t\tdynamicConfig.tableName,\n\t\t\t\tprops.tables.versions,\n\t\t\t\tprops.includeWorkflow,\n\t\t\t\tprops.tenantKey,\n\t\t\t);\n\n\t\t\tquery = queryBuilder.tenantScope(query, {\n\t\t\t\ttenantKey: props.tenantKey,\n\t\t\t\tcolumn: `${dynamicConfig.tableName}.tenant_key`,\n\t\t\t});\n\t\t\tqueryCount = queryBuilder.tenantScope(queryCount, {\n\t\t\t\ttenantKey: props.tenantKey,\n\t\t\t\tcolumn: `${dynamicConfig.tableName}.tenant_key`,\n\t\t\t});\n\n\t\t\tconst customFieldSorts = resolveCustomFieldSorts(\n\t\t\t\tprops.documentFieldsTableSchema,\n\t\t\t\tprops.query.sort,\n\t\t\t);\n\n\t\t\tconst builtQueries = queryBuilder.main(\n\t\t\t\t{\n\t\t\t\t\tmain: query,\n\t\t\t\t\tcount: queryCount,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tfilter: props.documentFilters,\n\t\t\t\t\t\tsort: props.query.sort,\n\t\t\t\t\t\tpage: props.query.page,\n\t\t\t\t\t\tperPage: props.query.perPage,\n\t\t\t\t\t},\n\t\t\t\t\tdatabase: this.dbAdapter.config,\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\ttableKeys: {\n\t\t\t\t\t\t\tfilters: {\n\t\t\t\t\t\t\t\tid: `${dynamicConfig.tableName}.id`,\n\t\t\t\t\t\t\t\tcollectionKey: `${dynamicConfig.tableName}.collection_key`,\n\t\t\t\t\t\t\t\tcreatedBy: `${dynamicConfig.tableName}.created_by`,\n\t\t\t\t\t\t\t\tupdatedBy: `${dynamicConfig.tableName}.updated_by`,\n\t\t\t\t\t\t\t\tcreatedAt: `${dynamicConfig.tableName}.created_at`,\n\t\t\t\t\t\t\t\tupdatedAt: `${dynamicConfig.tableName}.updated_at`,\n\t\t\t\t\t\t\t\tisDeleted: `${dynamicConfig.tableName}.is_deleted`,\n\t\t\t\t\t\t\t\tdeletedBy: `${dynamicConfig.tableName}.deleted_by`,\n\t\t\t\t\t\t\t\t...(props.includeWorkflow\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\tworkflowStage: sql.ref(\n\t\t\t\t\t\t\t\t\t\t\t\t\"lucid_document_workflows.stage_key\",\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tsorts: {\n\t\t\t\t\t\t\t\tcreatedAt: `${dynamicConfig.tableName}.created_at`,\n\t\t\t\t\t\t\t\tupdatedAt: `${dynamicConfig.tableName}.updated_at`,\n\t\t\t\t\t\t\t\t//* ignore manual order sort for non-orderable collections\n\t\t\t\t\t\t\t\t...(props.collection.getData.orderable\n\t\t\t\t\t\t\t\t\t? { order: `${dynamicConfig.tableName}.order` }\n\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t\t...this.buildCustomFieldSortRefs({\n\t\t\t\t\t\t\t\t\tcustomFieldSorts,\n\t\t\t\t\t\t\t\t\tdocumentFieldsTable: props.tables.documentFields,\n\t\t\t\t\t\t\t\t\tversionsTable: props.tables.versions,\n\t\t\t\t\t\t\t\t\tdefaultLocale: props.config.localization.defaultLocale,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\t\t\tlet main = builtQueries.main;\n\t\t\tconst count = builtQueries.count;\n\n\t\t\t//* keep custom field sorts stable when values are missing or duplicated\n\t\t\tif (customFieldSorts.length > 0) {\n\t\t\t\tmain = main.orderBy(`${dynamicConfig.tableName}.id`, \"asc\");\n\t\t\t}\n\n\t\t\tconst [mainResult, countResult] = await Promise.all([\n\t\t\t\tmain.execute() as unknown as Promise<DocumentQueryResponse[]>,\n\t\t\t\tcount?.executeTakeFirst() as Promise<{ count: string } | undefined>,\n\t\t\t]);\n\n\t\t\treturn [mainResult, countResult] as const;\n\t\t};\n\n\t\tconst exec = await this.executeQuery(queryFn, {\n\t\t\tmethod: \"selectMultipleFiltered\",\n\t\t\ttableName: dynamicConfig.tableName,\n\t\t});\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn this.validateResponse(exec, {\n\t\t\tmode: \"multiple-count\",\n\t\t\tschema: this.mergeSchema(dynamicConfig.schema),\n\t\t});\n\t}\n\tasync selectSingleFiltered(\n\t\tprops: {\n\t\t\tversion: DocumentVersionType;\n\t\t\tversionId?: number;\n\t\t\t/** The version used to determine which version of the relation custom field refs to fetch */\n\t\t\trelationVersionType: Exclude<DocumentVersionType, \"revision\">;\n\t\t\tdocumentFilters: QueryParamFilters;\n\t\t\tbrickFilters: BrickFilters[];\n\t\t\trelationDocumentFilters: RelationDocumentFilter[];\n\t\t\tquery: ClientGetSingleQueryParams;\n\t\t\tcollection: CollectionBuilder;\n\t\t\tconfig: Config;\n\t\t\ttenantKey?: string | null;\n\t\t\tfilterOr?: DocumentFilterGroup[];\n\t\t\ttables: {\n\t\t\t\tversions: LucidVersionTableName;\n\t\t\t};\n\t\t},\n\t\tdynamicConfig: DynamicConfig<LucidDocumentTableName>,\n\t) {\n\t\tconst queryFn = async () => {\n\t\t\tlet query = this.db\n\t\t\t\t.selectFrom(dynamicConfig.tableName)\n\t\t\t\t.leftJoin(\n\t\t\t\t\tprops.tables.versions,\n\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t`${props.tables.versions}.document_id`,\n\t\t\t\t\t`${dynamicConfig.tableName}.id`,\n\t\t\t\t)\n\t\t\t\t.select([\n\t\t\t\t\t`${dynamicConfig.tableName}.id`,\n\t\t\t\t\t`${dynamicConfig.tableName}.collection_key`,\n\t\t\t\t\t`${dynamicConfig.tableName}.created_by`,\n\t\t\t\t\t`${dynamicConfig.tableName}.created_at`,\n\t\t\t\t\t`${dynamicConfig.tableName}.updated_at`,\n\t\t\t\t\t`${dynamicConfig.tableName}.updated_by`,\n\t\t\t\t\t`${dynamicConfig.tableName}.is_deleted`,\n\t\t\t\t])\n\t\t\t\t.select([\n\t\t\t\t\t(eb) =>\n\t\t\t\t\t\tthis.dbAdapter\n\t\t\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\t\t\teb\n\t\t\t\t\t\t\t\t\t.selectFrom(props.tables.versions)\n\t\t\t\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\t\t\t\t.select(() => [\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.id`,\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.type`,\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.promoted_from`,\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.content_id`,\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.created_at`,\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.created_by`,\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.updated_at`,\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.updated_by`,\n\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.document_id`,\n\t\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\t`${dynamicConfig.tableName}.id`,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.where((eb) =>\n\t\t\t\t\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\t\t\t\t\teb(`${props.tables.versions}.type`, \"!=\", \"revision\"),\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.where((eb) =>\n\t\t\t\t\t\t\t\t\t\teb(\n\t\t\t\t\t\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\t\t\t\t\t\t`${props.tables.versions}.type`,\n\t\t\t\t\t\t\t\t\t\t\t\"!=\",\n\t\t\t\t\t\t\t\t\t\t\tconstants.collectionBuilder.publishing\n\t\t\t\t\t\t\t\t\t\t\t\t.snapshotVersionType,\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.as(\"versions\"),\n\t\t\t\t])\n\t\t\t\t// @ts-expect-error\n\t\t\t\t.select([\n\t\t\t\t\t`${props.tables.versions}.id as version_id`,\n\t\t\t\t\t`${props.tables.versions}.type as version_type`,\n\t\t\t\t])\n\t\t\t\t.leftJoin(\n\t\t\t\t\t\"lucid_users as cb_user\",\n\t\t\t\t\t\"cb_user.id\",\n\t\t\t\t\t`${dynamicConfig.tableName}.created_by`,\n\t\t\t\t)\n\t\t\t\t.leftJoin(\n\t\t\t\t\t\"lucid_users as ub_user\",\n\t\t\t\t\t\"ub_user.id\",\n\t\t\t\t\t`${dynamicConfig.tableName}.updated_by`,\n\t\t\t\t)\n\t\t\t\t.select([\n\t\t\t\t\t\"cb_user.id as cb_user_id\",\n\t\t\t\t\t\"cb_user.email as cb_user_email\",\n\t\t\t\t\t\"cb_user.first_name as cb_user_first_name\",\n\t\t\t\t\t\"cb_user.last_name as cb_user_last_name\",\n\t\t\t\t\t\"cb_user.username as cb_user_username\",\n\t\t\t\t\t\"ub_user.id as ub_user_id\",\n\t\t\t\t\t\"ub_user.email as ub_user_email\",\n\t\t\t\t\t\"ub_user.first_name as ub_user_first_name\",\n\t\t\t\t\t\"ub_user.last_name as ub_user_last_name\",\n\t\t\t\t\t\"ub_user.username as ub_user_username\",\n\t\t\t\t])\n\t\t\t\t.select((eb) => [\n\t\t\t\t\tthis.dbAdapter\n\t\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\t\teb\n\t\t\t\t\t\t\t\t.selectFrom(\"lucid_media\")\n\t\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.key\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.origin\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.type\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.mime_type\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.file_extension\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.file_name\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.file_size\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.width\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.height\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.focal_x\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.focal_y\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.blur_hash\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.average_color\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.base64\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.is_dark\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.is_light\",\n\t\t\t\t\t\t\t\t\tactiveMediaCropSelect(\n\t\t\t\t\t\t\t\t\t\tthis.db,\n\t\t\t\t\t\t\t\t\t\tthis.dbAdapter,\n\t\t\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\"cb_user.profile_picture_media_id\",\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.where(\n\t\t\t\t\t\t\t\t\t\"lucid_media.is_deleted\",\n\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\tthis.dbAdapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.as(\"cb_user_profile_picture\"),\n\t\t\t\t\tthis.dbAdapter\n\t\t\t\t\t\t.jsonArrayFrom(\n\t\t\t\t\t\t\teb\n\t\t\t\t\t\t\t\t.selectFrom(\"lucid_media\")\n\t\t\t\t\t\t\t\t.select([\n\t\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.key\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.origin\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.type\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.mime_type\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.file_extension\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.file_name\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.file_size\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.width\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.height\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.focal_x\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.focal_y\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.blur_hash\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.average_color\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.base64\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.is_dark\",\n\t\t\t\t\t\t\t\t\t\"lucid_media.is_light\",\n\t\t\t\t\t\t\t\t\tactiveMediaCropSelect(\n\t\t\t\t\t\t\t\t\t\tthis.db,\n\t\t\t\t\t\t\t\t\t\tthis.dbAdapter,\n\t\t\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t.whereRef(\n\t\t\t\t\t\t\t\t\t\"lucid_media.id\",\n\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\"ub_user.profile_picture_media_id\",\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.where(\n\t\t\t\t\t\t\t\t\t\"lucid_media.is_deleted\",\n\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\tthis.dbAdapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.as(\"ub_user_profile_picture\"),\n\t\t\t\t])\n\t\t\t\t// @ts-expect-error\n\t\t\t\t.where(`${props.tables.versions}.type`, \"=\", props.version)\n\t\t\t\t.$if(props.versionId !== undefined, (qb) =>\n\t\t\t\t\tqb.where(\n\t\t\t\t\t\t`${props.tables.versions}.id`,\n\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\tprops.versionId as number,\n\t\t\t\t\t),\n\t\t\t\t);\n\n\t\t\tquery = this.applyBrickFiltersToQuery(\n\t\t\t\tquery,\n\t\t\t\tprops.brickFilters,\n\t\t\t\tdynamicConfig.tableName,\n\t\t\t\tprops.tables.versions,\n\t\t\t);\n\t\t\tquery = this.applyRelationDocumentFiltersToQuery(\n\t\t\t\tquery,\n\t\t\t\tprops.relationDocumentFilters,\n\t\t\t\tdynamicConfig.tableName,\n\t\t\t\tprops.tables.versions,\n\t\t\t\tprops.tenantKey,\n\t\t\t);\n\t\t\tquery = this.applyDocumentFilterOrToQuery(\n\t\t\t\tquery,\n\t\t\t\tprops.filterOr,\n\t\t\t\tdynamicConfig.tableName,\n\t\t\t\tprops.tables.versions,\n\t\t\t\tfalse,\n\t\t\t\tprops.tenantKey,\n\t\t\t);\n\n\t\t\tquery = queryBuilder.tenantScope(query, {\n\t\t\t\ttenantKey: props.tenantKey,\n\t\t\t\tcolumn: `${dynamicConfig.tableName}.tenant_key`,\n\t\t\t});\n\n\t\t\tconst { main } = queryBuilder.main(\n\t\t\t\t{\n\t\t\t\t\tmain: query,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tqueryParams: {\n\t\t\t\t\t\tfilter: props.documentFilters,\n\t\t\t\t\t},\n\t\t\t\t\tdatabase: this.dbAdapter.config,\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\ttableKeys: {\n\t\t\t\t\t\t\tfilters: {\n\t\t\t\t\t\t\t\tid: `${dynamicConfig.tableName}.id`,\n\t\t\t\t\t\t\t\tcollectionKey: `${dynamicConfig.tableName}.collection_key`,\n\t\t\t\t\t\t\t\tcreatedBy: `${dynamicConfig.tableName}.created_by`,\n\t\t\t\t\t\t\t\tupdatedBy: `${dynamicConfig.tableName}.updated_by`,\n\t\t\t\t\t\t\t\tcreatedAt: `${dynamicConfig.tableName}.created_at`,\n\t\t\t\t\t\t\t\tupdatedAt: `${dynamicConfig.tableName}.updated_at`,\n\t\t\t\t\t\t\t\tisDeleted: `${dynamicConfig.tableName}.is_deleted`,\n\t\t\t\t\t\t\t\tdeletedBy: `${dynamicConfig.tableName}.deleted_by`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tsorts: {\n\t\t\t\t\t\t\t\tcreatedAt: `${dynamicConfig.tableName}.created_at`,\n\t\t\t\t\t\t\t\tupdatedAt: `${dynamicConfig.tableName}.updated_at`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn main.executeTakeFirst() as unknown as Promise<DocumentQueryResponse>;\n\t\t};\n\n\t\tconst exec = await this.executeQuery(queryFn, {\n\t\t\tmethod: \"selectSingleFiltered\",\n\t\t\ttableName: dynamicConfig.tableName,\n\t\t});\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn this.validateResponse(exec, {\n\t\t\tmode: \"single\",\n\t\t\tschema: this.mergeSchema(dynamicConfig.schema),\n\t\t});\n\t}\n\n\t/**\n\t * Fetches document IDs used by field validation, scoped to the request tenant\n\t * while keeping global documents available to every tenant.\n\t */\n\tasync selectMultipleValidationIds<V extends boolean = false>(\n\t\tprops: QueryProps<\n\t\t\tV,\n\t\t\t{\n\t\t\t\tids: number[];\n\t\t\t\ttenantKey?: string | null;\n\t\t\t}\n\t\t>,\n\t\tdynamicConfig: DynamicConfig<LucidDocumentTableName>,\n\t) {\n\t\tlet query = this.db\n\t\t\t.selectFrom(dynamicConfig.tableName)\n\t\t\t.select(\"id\")\n\t\t\t.where(\"id\", \"in\", props.ids);\n\n\t\tquery = queryBuilder.tenantScope(query, {\n\t\t\ttenantKey: props.tenantKey,\n\t\t\tcolumn: `${dynamicConfig.tableName}.tenant_key`,\n\t\t});\n\n\t\tconst exec = await this.executeQuery(() => query.execute(), {\n\t\t\tmethod: \"selectMultipleValidationIds\",\n\t\t\ttableName: dynamicConfig.tableName,\n\t\t});\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn this.validateResponse(exec, {\n\t\t\t...props.validation,\n\t\t\tmode: \"multiple\",\n\t\t\tselect: [\"id\"],\n\t\t\tschema: this.mergeSchema(dynamicConfig.schema),\n\t\t});\n\t}\n\n\t/**\n\t * Fetches document IDs for collection-level checks using tenant visibility.\n\t * Single collections use this so each tenant can have its own document.\n\t */\n\tasync selectMultipleCollectionDocumentIds<V extends boolean = false>(\n\t\tprops: QueryProps<\n\t\t\tV,\n\t\t\t{\n\t\t\t\tcollectionKey: string;\n\t\t\t\ttenantKey?: string | null;\n\t\t\t\tisDeleted?: Select<LucidDocumentTable>[\"is_deleted\"];\n\t\t\t}\n\t\t>,\n\t\tdynamicConfig: DynamicConfig<LucidDocumentTableName>,\n\t) {\n\t\tlet query = this.db\n\t\t\t.selectFrom(dynamicConfig.tableName)\n\t\t\t.select(\"id\")\n\t\t\t.where(\"collection_key\", \"=\", props.collectionKey);\n\n\t\tif (props.isDeleted !== undefined) {\n\t\t\tquery = query.where(\"is_deleted\", \"=\", props.isDeleted);\n\t\t}\n\n\t\tquery = queryBuilder.tenantScope(query, {\n\t\t\ttenantKey: props.tenantKey,\n\t\t\tcolumn: `${dynamicConfig.tableName}.tenant_key`,\n\t\t});\n\n\t\tconst exec = await this.executeQuery(() => query.execute(), {\n\t\t\tmethod: \"selectMultipleCollectionDocumentIds\",\n\t\t\ttableName: dynamicConfig.tableName,\n\t\t});\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn this.validateResponse(exec, {\n\t\t\t...props.validation,\n\t\t\tmode: \"multiple\",\n\t\t\tselect: [\"id\"],\n\t\t\tschema: this.mergeSchema(dynamicConfig.schema),\n\t\t});\n\t}\n\n\t/** Fetches the last tenant-scoped manual order key. */\n\tasync selectHighestOrderKey(\n\t\tprops: {\n\t\t\ttenantKey?: string | null;\n\t\t},\n\t\tdynamicConfig: DynamicConfig<LucidDocumentTableName>,\n\t) {\n\t\tlet query = this.db\n\t\t\t.selectFrom(dynamicConfig.tableName)\n\t\t\t.select(\"order\")\n\t\t\t.where(\"order\", \"is not\", null)\n\t\t\t.where(\"is_deleted\", \"=\", this.dbAdapter.getDefault(\"boolean\", \"false\"))\n\t\t\t.orderBy(\"order\", \"desc\")\n\t\t\t.limit(1);\n\n\t\tquery = queryBuilder.tenantScope(query, {\n\t\t\ttenantKey: props.tenantKey,\n\t\t\tcolumn: `${dynamicConfig.tableName}.tenant_key`,\n\t\t});\n\n\t\tconst exec = await this.executeQuery(\n\t\t\t() =>\n\t\t\t\tquery.executeTakeFirst() as Promise<\n\t\t\t\t\t{ order: string | null } | undefined\n\t\t\t\t>,\n\t\t\t{\n\t\t\t\tmethod: \"selectHighestOrderKey\",\n\t\t\t\ttableName: dynamicConfig.tableName,\n\t\t\t},\n\t\t);\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn this.validateResponse(exec, {\n\t\t\tenabled: false,\n\t\t\tmode: \"single\",\n\t\t});\n\t}\n\n\t/** Fetches order keys used as manual-order bounds. */\n\tasync selectOrderKeysByIds(\n\t\tprops: {\n\t\t\tids: number[];\n\t\t},\n\t\tdynamicConfig: DynamicConfig<LucidDocumentTableName>,\n\t) {\n\t\tif (props.ids.length === 0) {\n\t\t\treturn {\n\t\t\t\terror: undefined,\n\t\t\t\tdata: [],\n\t\t\t};\n\t\t}\n\n\t\tconst query = this.db\n\t\t\t.selectFrom(dynamicConfig.tableName)\n\t\t\t.select([\"id\", \"order\"])\n\t\t\t.where(\"id\", \"in\", props.ids);\n\n\t\tconst exec = await this.executeQuery(\n\t\t\t() =>\n\t\t\t\tquery.execute() as Promise<Array<{ id: number; order: string | null }>>,\n\t\t\t{\n\t\t\t\tmethod: \"selectOrderKeysByIds\",\n\t\t\t\ttableName: dynamicConfig.tableName,\n\t\t\t},\n\t\t);\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn this.validateResponse(exec, {\n\t\t\tenabled: false,\n\t\t\tmode: \"multiple\",\n\t\t});\n\t}\n\n\tasync selectMultipleUnion(props: { tables: LucidDocumentTableName[] }) {\n\t\tif (props.tables.length === 0) {\n\t\t\treturn {\n\t\t\t\terror: undefined,\n\t\t\t\tdata: [],\n\t\t\t};\n\t\t}\n\n\t\tconst unionQueries = props.tables.map((table) => {\n\t\t\treturn this.db\n\t\t\t\t.selectFrom(table)\n\t\t\t\t.select([`${table}.id`, `${table}.collection_key`]);\n\t\t});\n\n\t\tlet query = unionQueries[0];\n\n\t\tif (query === undefined) {\n\t\t\treturn {\n\t\t\t\terror: undefined,\n\t\t\t\tdata: [],\n\t\t\t};\n\t\t}\n\n\t\tfor (let i = 1; i < unionQueries.length; i++) {\n\t\t\tconst iQuery = unionQueries[i];\n\t\t\tif (iQuery === undefined) continue;\n\t\t\tquery = query.unionAll(iQuery);\n\t\t}\n\n\t\tconst exec = await this.executeQuery(\n\t\t\t() =>\n\t\t\t\tquery.execute() as unknown as Promise<\n\t\t\t\t\t{\n\t\t\t\t\t\tid: number;\n\t\t\t\t\t\tcollection_key: string;\n\t\t\t\t\t}[]\n\t\t\t\t>,\n\t\t\t{\n\t\t\t\tmethod: \"selectMultipleUnion\",\n\t\t\t},\n\t\t);\n\t\tif (exec.response.error) return exec.response;\n\n\t\treturn this.validateResponse(exec, {\n\t\t\tenabled: false,\n\t\t\tmode: \"multiple\",\n\t\t});\n\t}\n\n\t// ----------------------------------------\n\t// helpers\n\t/** Builds scalar subqueries for custom field sort values. */\n\tbuildCustomFieldSortRefs(props: {\n\t\tcustomFieldSorts: CustomFieldSort[];\n\t\tdocumentFieldsTable: LucidBrickTableName;\n\t\tversionsTable: LucidVersionTableName;\n\t\tdefaultLocale: string;\n\t}) {\n\t\treturn Object.fromEntries(\n\t\t\tprops.customFieldSorts.map((sort) => [\n\t\t\t\tsort.key,\n\t\t\t\tsql`(select cf_sort.${sql.ref(sort.column)} from ${sql.table(\n\t\t\t\t\tprops.documentFieldsTable,\n\t\t\t\t)} as cf_sort where cf_sort.document_version_id = ${sql.ref(\n\t\t\t\t\t`${props.versionsTable}.id`,\n\t\t\t\t)} and cf_sort.locale = ${props.defaultLocale} limit 1)`,\n\t\t\t]),\n\t\t);\n\t}\n\t/** Normalizes scalar and array filter values for custom exists checks. */\n\tgetDocumentFilterValues(\n\t\tfilter: QueryParamFilterCondition,\n\t): Array<string | number> {\n\t\tconst values = Array.isArray(filter.value) ? filter.value : [filter.value];\n\n\t\treturn values.filter((value): value is string | number => value !== null);\n\t}\n\t/** Builds a document-column or workflow expression for one OR condition. */\n\tbuildDocumentFilterExpression<DB, Table extends keyof DB>(\n\t\teb: ExpressionBuilder<DB, Table>,\n\t\tfilter: QueryParamFilterCondition,\n\t\tdocumentTableName: string,\n\t\tincludeWorkflow: boolean,\n\t): OperandExpression<SqlBool> | undefined {\n\t\tif (filter.key === \"workflowAssignee\") {\n\t\t\tif (!includeWorkflow) return undefined;\n\n\t\t\tconst values = this.getDocumentFilterValues(filter);\n\t\t\tif (values.length === 0) return sql<boolean>`1 = 0`;\n\n\t\t\treturn sql<boolean>`exists (\n\t\t\t\tselect 1\n\t\t\t\tfrom lucid_document_workflow_assignees\n\t\t\t\twhere lucid_document_workflow_assignees.workflow_id = lucid_document_workflows.id\n\t\t\t\tand lucid_document_workflow_assignees.user_id in (${sql.join(values.map((id) => sql`${id}`))})\n\t\t\t)`;\n\t\t}\n\n\t\tconst filterRefs: Record<string, string> = {\n\t\t\tid: `${documentTableName}.id`,\n\t\t\tcollectionKey: `${documentTableName}.collection_key`,\n\t\t\tcreatedBy: `${documentTableName}.created_by`,\n\t\t\tupdatedBy: `${documentTableName}.updated_by`,\n\t\t\tcreatedAt: `${documentTableName}.created_at`,\n\t\t\tupdatedAt: `${documentTableName}.updated_at`,\n\t\t\tisDeleted: `${documentTableName}.is_deleted`,\n\t\t\tdeletedBy: `${documentTableName}.deleted_by`,\n\t\t\t...(includeWorkflow\n\t\t\t\t? {\n\t\t\t\t\t\tworkflowStage: \"lucid_document_workflows.stage_key\",\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t};\n\n\t\tconst filterRef = filterRefs[filter.key];\n\t\tif (!filterRef) return undefined;\n\n\t\tconst { ref } = this.db.dynamic;\n\n\t\treturn compileFilterExpression({\n\t\t\teb,\n\t\t\treference: ref(filterRef),\n\t\t\tfilter,\n\t\t\tcaseInsensitiveLikeOperator:\n\t\t\t\tthis.dbAdapter.config.caseInsensitiveLikeOperator,\n\t\t});\n\t}\n\t/** Builds exists expressions for brick/custom-field filter groups. */\n\tbuildBrickFilterExpressions<DB, Table extends keyof DB>(\n\t\teb: ExpressionBuilder<DB, Table>,\n\t\tbrickFilters: BrickFilters[],\n\t\tdocumentTableName: string,\n\t\tversionTableName?: string,\n\t): OperandExpression<SqlBool>[] {\n\t\tconst { table, ref } = this.db.dynamic;\n\n\t\treturn brickFilters.map((brickFilter) => {\n\t\t\tlet subQuery = this.db\n\t\t\t\t.selectFrom(table(brickFilter.table).as(\"bf\"))\n\t\t\t\t.whereRef(ref(\"bf.document_id\"), \"=\", ref(`${documentTableName}.id`));\n\t\t\tif (versionTableName !== undefined) {\n\t\t\t\tsubQuery = subQuery.whereRef(\n\t\t\t\t\tref(\"bf.document_version_id\"),\n\t\t\t\t\t\"=\",\n\t\t\t\t\tref(`${versionTableName}.id`),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tfor (const filter of brickFilter.filters) {\n\t\t\t\tsubQuery = subQuery.where((eb) =>\n\t\t\t\t\tcompileFilterExpression({\n\t\t\t\t\t\teb,\n\t\t\t\t\t\treference: ref(`bf.${filter.column}`),\n\t\t\t\t\t\tfilter,\n\t\t\t\t\t\tcaseInsensitiveLikeOperator:\n\t\t\t\t\t\t\tthis.dbAdapter.config.caseInsensitiveLikeOperator,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn eb.exists(subQuery.select(sql.lit(1).as(\"exists\")));\n\t\t});\n\t}\n\t/** Builds one semi-join per relation path, keeping all target filters on one related document. */\n\tbuildRelationDocumentFilterExpressions<DB, Table extends keyof DB>(\n\t\teb: ExpressionBuilder<DB, Table>,\n\t\trelationDocumentFilters: RelationDocumentFilter[],\n\t\tdocumentTableName: string,\n\t\tversionTableName: string,\n\t\ttenantKey?: string | null,\n\t): OperandExpression<SqlBool>[] {\n\t\tconst { ref } = this.db.dynamic;\n\n\t\treturn relationDocumentFilters.map((relationFilter) => {\n\t\t\tlet subQuery = this.db\n\t\t\t\t.selectFrom(\n\t\t\t\t\tsql\n\t\t\t\t\t\t.table<LucidBricksTable>(relationFilter.relation.table)\n\t\t\t\t\t\t.as(\"rdf_relation\"),\n\t\t\t\t)\n\t\t\t\t.innerJoin(\n\t\t\t\t\tsql\n\t\t\t\t\t\t.table<LucidDocumentTable>(relationFilter.target.tables.document)\n\t\t\t\t\t\t.as(\"rdf_document\"),\n\t\t\t\t\t(join) =>\n\t\t\t\t\t\tjoin.onRef(\n\t\t\t\t\t\t\tref(\"rdf_document.id\"),\n\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\tref(`rdf_relation.${relationFilter.relation.documentIdColumn}`),\n\t\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.innerJoin(\n\t\t\t\t\tsql\n\t\t\t\t\t\t.table<LucidVersionTable>(relationFilter.target.tables.versions)\n\t\t\t\t\t\t.as(\"rdf_version\"),\n\t\t\t\t\t(join) =>\n\t\t\t\t\t\tjoin.onRef(\n\t\t\t\t\t\t\tref(\"rdf_version.document_id\"),\n\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\tref(\"rdf_document.id\"),\n\t\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.whereRef(\n\t\t\t\t\tref(\"rdf_relation.document_id\"),\n\t\t\t\t\t\"=\",\n\t\t\t\t\tref(`${documentTableName}.id`),\n\t\t\t\t)\n\t\t\t\t.whereRef(\n\t\t\t\t\tref(\"rdf_relation.document_version_id\"),\n\t\t\t\t\t\"=\",\n\t\t\t\t\tref(`${versionTableName}.id`),\n\t\t\t\t)\n\t\t\t\t.where(\n\t\t\t\t\tref(`rdf_relation.${relationFilter.relation.collectionKeyColumn}`),\n\t\t\t\t\t\"=\",\n\t\t\t\t\trelationFilter.target.collectionKey,\n\t\t\t\t)\n\t\t\t\t.where(ref(\"rdf_version.type\"), \"=\", relationFilter.target.versionType)\n\t\t\t\t.where(\n\t\t\t\t\tref(\"rdf_document.is_deleted\"),\n\t\t\t\t\t\"=\",\n\t\t\t\t\tthis.dbAdapter.getDefault(\"boolean\", \"false\"),\n\t\t\t\t);\n\n\t\t\tif (tenantKey != null) {\n\t\t\t\tsubQuery = subQuery.where((targetEb) =>\n\t\t\t\t\ttargetEb.or([\n\t\t\t\t\t\ttargetEb(ref(\"rdf_document.tenant_key\"), \"=\", tenantKey),\n\t\t\t\t\t\ttargetEb(ref(\"rdf_document.tenant_key\"), \"is\", null),\n\t\t\t\t\t]),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tfor (const filter of relationFilter.target.documentFilters) {\n\t\t\t\tsubQuery = subQuery.where(\n\t\t\t\t\t(targetEb) =>\n\t\t\t\t\t\tthis.buildDocumentFilterExpression(\n\t\t\t\t\t\t\ttargetEb,\n\t\t\t\t\t\t\tfilter,\n\t\t\t\t\t\t\t\"rdf_document\",\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t) ?? targetEb.val(true),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (relationFilter.target.brickFilters.length > 0) {\n\t\t\t\tsubQuery = subQuery.where((targetEb) =>\n\t\t\t\t\ttargetEb.and(\n\t\t\t\t\t\tthis.buildBrickFilterExpressions(\n\t\t\t\t\t\t\ttargetEb,\n\t\t\t\t\t\t\trelationFilter.target.brickFilters,\n\t\t\t\t\t\t\t\"rdf_document\",\n\t\t\t\t\t\t\t\"rdf_version\",\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn eb.exists(subQuery.select(sql.lit(1).as(\"exists\")));\n\t\t});\n\t}\n\t/** Applies document OR groups while keeping global filters outside the OR. */\n\tapplyDocumentFilterOrToQuery<DB, Table extends keyof DB, O>(\n\t\tquery: SelectQueryBuilder<DB, Table, O>,\n\t\tfilterOr: DocumentFilterGroup[] | undefined,\n\t\tdocumentTableName: string,\n\t\tversionTableName: string | undefined,\n\t\tincludeWorkflow: boolean,\n\t\ttenantKey?: string | null,\n\t): SelectQueryBuilder<DB, Table, O> {\n\t\tif (!filterOr || filterOr.length === 0) {\n\t\t\treturn query;\n\t\t}\n\n\t\treturn query.where((eb) => {\n\t\t\tconst groupConditions: OperandExpression<SqlBool>[] = [];\n\n\t\t\tfor (const group of filterOr) {\n\t\t\t\tconst expressions: OperandExpression<SqlBool>[] = [];\n\n\t\t\t\tfor (const filter of group.documentFilters) {\n\t\t\t\t\tconst expression = this.buildDocumentFilterExpression(\n\t\t\t\t\t\teb,\n\t\t\t\t\t\tfilter,\n\t\t\t\t\t\tdocumentTableName,\n\t\t\t\t\t\tincludeWorkflow,\n\t\t\t\t\t);\n\t\t\t\t\tif (expression !== undefined) expressions.push(expression);\n\t\t\t\t}\n\n\t\t\t\texpressions.push(\n\t\t\t\t\t...this.buildBrickFilterExpressions(\n\t\t\t\t\t\teb,\n\t\t\t\t\t\tgroup.brickFilters,\n\t\t\t\t\t\tdocumentTableName,\n\t\t\t\t\t\tversionTableName,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\tif (versionTableName !== undefined) {\n\t\t\t\t\texpressions.push(\n\t\t\t\t\t\t...this.buildRelationDocumentFilterExpressions(\n\t\t\t\t\t\t\teb,\n\t\t\t\t\t\t\tgroup.relationDocumentFilters,\n\t\t\t\t\t\t\tdocumentTableName,\n\t\t\t\t\t\t\tversionTableName,\n\t\t\t\t\t\t\ttenantKey,\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (expressions.length > 0) {\n\t\t\t\t\tgroupConditions.push(eb.and(expressions));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn groupConditions.length > 0 ? eb.or(groupConditions) : eb.val(true);\n\t\t});\n\t}\n\tapplyRelationDocumentFiltersToQuery<DB, Table extends keyof DB, O>(\n\t\tquery: SelectQueryBuilder<DB, Table, O>,\n\t\trelationDocumentFilters: RelationDocumentFilter[],\n\t\tdocumentTableName: string,\n\t\tversionTableName: string,\n\t\ttenantKey?: string | null,\n\t): SelectQueryBuilder<DB, Table, O> {\n\t\tif (relationDocumentFilters.length === 0) return query;\n\n\t\treturn query.where((eb) =>\n\t\t\teb.and(\n\t\t\t\tthis.buildRelationDocumentFilterExpressions(\n\t\t\t\t\teb,\n\t\t\t\t\trelationDocumentFilters,\n\t\t\t\t\tdocumentTableName,\n\t\t\t\t\tversionTableName,\n\t\t\t\t\ttenantKey,\n\t\t\t\t),\n\t\t\t),\n\t\t);\n\t}\n\tapplyBrickFiltersToQuery<DB, Table extends keyof DB, O>(\n\t\tquery: SelectQueryBuilder<DB, Table, O>,\n\t\tbrickFilters: BrickFilters[],\n\t\tdocumentTableName: string,\n\t\tversionTableName?: string,\n\t): SelectQueryBuilder<DB, Table, O> {\n\t\tif (!brickFilters || brickFilters.length === 0) {\n\t\t\treturn query;\n\t\t}\n\n\t\treturn query.where((eb) => {\n\t\t\tconst filterConditions = this.buildBrickFilterExpressions(\n\t\t\t\teb,\n\t\t\t\tbrickFilters,\n\t\t\t\tdocumentTableName,\n\t\t\t\tversionTableName,\n\t\t\t);\n\t\t\treturn eb.and(filterConditions);\n\t\t});\n\t}\n}\n"],"mappings":"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,CACA,OAAQ,GAAW,CACnB,uCACA,gDACA,4CACA,gDACA,gDACA,oBACA,uBACA,yBACA,wBACA,KAAK,UACH,cACA,EACE,WAAW,aAAa,CAAC,CACzB,OAAQ,GAAY,CACpB,iBACA,kBACA,qBACA,mBACA,wBACA,6BACA,wBACA,wBACA,oBACA,qBACA,sBACA,sBACA,wBACA,4BACA,qBACA,sBACA,uBACA,EACC,KAAK,GACL,KAAK,UACL,gBACD,EACA,KAAK,UACH,cACA,EACE,WAAW,0BAA0B,CAAC,CACtC,OAAO,CACP,iCACA,+BACA,uCACA,mCACA,sCACD,CAAC,CAAC,CACD,SACA,oCACA,IACA,gBACD,CACF,CAAC,CACA,GAAG,cAAc,CACpB,CAAC,CAAC,CACD,SACA,iBACA,IACA,sCACD,CAAC,CACA,MACA,yBACA,IACA,KAAK,UAAU,WAAW,UAAW,OAAO,CAC7C,CACF,CAAC,CACA,GAAG,iBAAiB,CACvB,CAAC,CAAC,CACD,SACA,gDACA,IACA,6BACD,CAAC,CACA,QACA,gDACA,KACD,CACF,CAAC,CACA,GAAG,oBAAoB,CAC1B,CAAC,CACH,CAAC,CACA,SACA,yBACA,aACA,GAAG,EAAc,UAAU,YAC5B,CAAC,CACA,SACA,yBACA,aACA,GAAG,EAAc,UAAU,YAC5B,CAAC,CACA,OAAO,CACP,2BACA,iCACA,2CACA,yCACA,uCACA,2BACA,iCACA,2CACA,yCACA,sCACD,CAAC,CAAC,CACD,OAAQ,GAAO,CACf,KAAK,UACH,cACA,EACE,WAAW,aAAa,CAAC,CACzB,OAAO,CACP,iBACA,kBACA,qBACA,mBACA,wBACA,6BACA,wBACA,wBACA,oBACA,qBACA,sBACA,sBACA,wBACA,4BACA,qBACA,sBACA,uBACA,EACC,KAAK,GACL,KAAK,UACL,gBACD,CACD,CAAC,CAAC,CACD,SACA,iBACA,IACA,kCACD,CAAC,CACA,MACA,yBACA,IACA,KAAK,UAAU,WAAW,UAAW,OAAO,CAC7C,CACF,CAAC,CACA,GAAG,yBAAyB,EAC9B,KAAK,UACH,cACA,EACE,WAAW,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OAAO,SAAS,aACzB,GAAG,EAAM,OAAO,SAAS,aACzB,GAAG,EAAM,OAAO,SAAS,YAC1B,CAAC,CAAC,CACD,SAEA,GAAG,EAAM,OAAO,SAAS,cACzB,IACA,GAAG,EAAc,UAAU,IAC5B,CAAC,CACA,MAAO,GAEP,EAAG,GAAG,EAAM,OAAO,SAAS,OAAQ,KAAM,UAAU,CACrD,CAAC,CACA,MAAO,GACP,EAEC,GAAG,EAAM,OAAO,SAAS,OACzB,KACAD,EAAU,kBAAkB,WAC1B,mBACH,CACD,CACF,CAAC,CACA,GAAG,UAAU,CACjB,CAAC,CAAC,CAED,OAAO,CACP,GAAG,EAAM,OAAO,SAAS,mBACzB,GAAG,EAAM,OAAO,SAAS,sBAC1B,CAAC,CAAC,CACD,SACA,yBACA,aACA,GAAG,EAAc,UAAU,YAC5B,CAAC,CACA,SACA,yBACA,aACA,GAAG,EAAc,UAAU,YAC5B,CAAC,CACA,OAAO,CACP,2BACA,iCACA,2CACA,yCACA,uCACA,2BACA,iCACA,2CACA,yCACA,sCACD,CAAC,CAAC,CACD,OAAQ,GAAO,CACf,KAAK,UACH,cACA,EACE,WAAW,aAAa,CAAC,CACzB,OAAO,CACP,iBACA,kBACA,qBACA,mBACA,wBACA,6BACA,wBACA,wBACA,oBACA,qBACA,sBACA,sBACA,wBACA,4BACA,qBACA,sBACA,uBACA,EACC,KAAK,GACL,KAAK,UACL,gBACD,CACD,CAAC,CAAC,CACD,SACA,iBACA,IACA,kCACD,CAAC,CACA,MACA,yBACA,IACA,KAAK,UAAU,WAAW,UAAW,OAAO,CAC7C,CACF,CAAC,CACA,GAAG,yBAAyB,EAC9B,KAAK,UACH,cACA,EACE,WAAW,aAAa,CAAC,CACzB,OAAO,CACP,iBACA,kBACA,qBACA,mBACA,wBACA,6BACA,wBACA,wBACA,oBACA,qBACA,sBACA,sBACA,wBACA,4BACA,qBACA,sBACA,uBACA,EACC,KAAK,GACL,KAAK,UACL,gBACD,CACD,CAAC,CAAC,CACD,SACA,iBACA,IACA,kCACD,CAAC,CACA,MACA,yBACA,IACA,KAAK,UAAU,WAAW,UAAW,O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"}