@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
1 lines • 87.7 kB
Source Map (JSON)
{"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: dyna