@payloadcms/drizzle 4.0.0-internal.a2d053c → 4.0.0-internal.a5acc33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/count.d.ts.map +1 -1
- package/dist/count.js +25 -3
- package/dist/count.js.map +1 -1
- package/dist/countGlobalVersions.js +8 -3
- package/dist/countGlobalVersions.js.map +1 -1
- package/dist/countVersions.d.ts.map +1 -1
- package/dist/countVersions.js +29 -4
- package/dist/countVersions.js.map +1 -1
- package/dist/createGlobalVersion.d.ts.map +1 -1
- package/dist/createGlobalVersion.js +17 -2
- package/dist/createGlobalVersion.js.map +1 -1
- package/dist/createVersion.d.ts.map +1 -1
- package/dist/createVersion.js +12 -1
- package/dist/createVersion.js.map +1 -1
- package/dist/deleteBranchGlobal.d.ts +10 -0
- package/dist/deleteBranchGlobal.d.ts.map +1 -0
- package/dist/deleteBranchGlobal.js +27 -0
- package/dist/deleteBranchGlobal.js.map +1 -0
- package/dist/deleteOne.d.ts.map +1 -1
- package/dist/deleteOne.js +25 -1
- package/dist/deleteOne.js.map +1 -1
- package/dist/exports/postgres.d.ts +1 -1
- package/dist/exports/postgres.d.ts.map +1 -1
- package/dist/exports/postgres.js +1 -1
- package/dist/exports/postgres.js.map +1 -1
- package/dist/exports/sqlite.d.ts +1 -1
- package/dist/exports/sqlite.d.ts.map +1 -1
- package/dist/exports/sqlite.js +1 -1
- package/dist/exports/sqlite.js.map +1 -1
- package/dist/find/buildFindManyArgs.d.ts +3 -2
- package/dist/find/buildFindManyArgs.d.ts.map +1 -1
- package/dist/find/buildFindManyArgs.js +2 -1
- package/dist/find/buildFindManyArgs.js.map +1 -1
- package/dist/find/buildPolymorphicJoinQuery.d.ts +3 -2
- package/dist/find/buildPolymorphicJoinQuery.d.ts.map +1 -1
- package/dist/find/buildPolymorphicJoinQuery.js +28 -11
- package/dist/find/buildPolymorphicJoinQuery.js.map +1 -1
- package/dist/find/findMany.d.ts +6 -1
- package/dist/find/findMany.d.ts.map +1 -1
- package/dist/find/findMany.js +16 -3
- package/dist/find/findMany.js.map +1 -1
- package/dist/find/traverseFields.d.ts +3 -2
- package/dist/find/traverseFields.d.ts.map +1 -1
- package/dist/find/traverseFields.js +63 -8
- package/dist/find/traverseFields.js.map +1 -1
- package/dist/find.d.ts.map +1 -1
- package/dist/find.js +32 -4
- package/dist/find.js.map +1 -1
- package/dist/findDistinct.d.ts.map +1 -1
- package/dist/findDistinct.js +104 -8
- package/dist/findDistinct.js.map +1 -1
- package/dist/findGlobal.d.ts.map +1 -1
- package/dist/findGlobal.js +24 -5
- package/dist/findGlobal.js.map +1 -1
- package/dist/findGlobalVersions.js +8 -3
- package/dist/findGlobalVersions.js.map +1 -1
- package/dist/findOne.d.ts +1 -1
- package/dist/findOne.d.ts.map +1 -1
- package/dist/findOne.js +30 -3
- package/dist/findOne.js.map +1 -1
- package/dist/findVersions.d.ts.map +1 -1
- package/dist/findVersions.js +32 -5
- package/dist/findVersions.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/postgres/insert.d.ts.map +1 -1
- package/dist/postgres/insert.js +4 -2
- package/dist/postgres/insert.js.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/index.js +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/index.js.map +1 -1
- package/dist/postgres/requireDrizzleKit.d.ts +4 -0
- package/dist/postgres/requireDrizzleKit.d.ts.map +1 -1
- package/dist/postgres/requireDrizzleKit.js +16 -10
- package/dist/postgres/requireDrizzleKit.js.map +1 -1
- package/dist/postgres/types.d.ts +4 -0
- package/dist/postgres/types.d.ts.map +1 -1
- package/dist/postgres/types.js.map +1 -1
- package/dist/queries/buildAndOrConditions.d.ts +3 -2
- package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
- package/dist/queries/buildAndOrConditions.js +2 -1
- package/dist/queries/buildAndOrConditions.js.map +1 -1
- package/dist/queries/buildBranchVisibility.d.ts +11 -0
- package/dist/queries/buildBranchVisibility.d.ts.map +1 -0
- package/dist/queries/buildBranchVisibility.js +48 -0
- package/dist/queries/buildBranchVisibility.js.map +1 -0
- package/dist/queries/buildOrderBy.d.ts +3 -2
- package/dist/queries/buildOrderBy.d.ts.map +1 -1
- package/dist/queries/buildOrderBy.js +2 -1
- package/dist/queries/buildOrderBy.js.map +1 -1
- package/dist/queries/buildQuery.d.ts +3 -2
- package/dist/queries/buildQuery.d.ts.map +1 -1
- package/dist/queries/buildQuery.js +4 -2
- package/dist/queries/buildQuery.js.map +1 -1
- package/dist/queries/getTableColumnFromPath.d.ts +3 -2
- package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
- package/dist/queries/getTableColumnFromPath.js +167 -29
- package/dist/queries/getTableColumnFromPath.js.map +1 -1
- package/dist/queries/parseParams.d.ts +3 -2
- package/dist/queries/parseParams.d.ts.map +1 -1
- package/dist/queries/parseParams.js +4 -1
- package/dist/queries/parseParams.js.map +1 -1
- package/dist/queryDrafts.d.ts.map +1 -1
- package/dist/queryDrafts.js +27 -5
- package/dist/queryDrafts.js.map +1 -1
- package/dist/schema/build.d.ts.map +1 -1
- package/dist/schema/build.js +25 -17
- package/dist/schema/build.js.map +1 -1
- package/dist/sqlite/createRequireDrizzleKit.d.ts +6 -0
- package/dist/sqlite/createRequireDrizzleKit.d.ts.map +1 -0
- package/dist/sqlite/createRequireDrizzleKit.js +15 -0
- package/dist/sqlite/createRequireDrizzleKit.js.map +1 -0
- package/dist/sqlite/insert.d.ts.map +1 -1
- package/dist/sqlite/insert.js +5 -3
- package/dist/sqlite/insert.js.map +1 -1
- package/dist/sqlite/types.d.ts +4 -0
- package/dist/sqlite/types.d.ts.map +1 -1
- package/dist/sqlite/types.js.map +1 -1
- package/dist/transactions/beginTransaction.d.ts.map +1 -1
- package/dist/transactions/beginTransaction.js +13 -5
- package/dist/transactions/beginTransaction.js.map +1 -1
- package/dist/transactions/commitTransaction.d.ts.map +1 -1
- package/dist/transactions/commitTransaction.js +2 -5
- package/dist/transactions/commitTransaction.js.map +1 -1
- package/dist/transform/write/array.d.ts +3 -2
- package/dist/transform/write/array.d.ts.map +1 -1
- package/dist/transform/write/array.js +2 -1
- package/dist/transform/write/array.js.map +1 -1
- package/dist/transform/write/blocks.d.ts +3 -2
- package/dist/transform/write/blocks.d.ts.map +1 -1
- package/dist/transform/write/blocks.js +2 -1
- package/dist/transform/write/blocks.js.map +1 -1
- package/dist/transform/write/index.d.ts.map +1 -1
- package/dist/transform/write/index.js +2 -0
- package/dist/transform/write/index.js.map +1 -1
- package/dist/transform/write/traverseFields.d.ts +2 -1
- package/dist/transform/write/traverseFields.d.ts.map +1 -1
- package/dist/transform/write/traverseFields.js +43 -7
- package/dist/transform/write/traverseFields.js.map +1 -1
- package/dist/transform/write/types.d.ts +7 -0
- package/dist/transform/write/types.d.ts.map +1 -1
- package/dist/transform/write/types.js.map +1 -1
- package/dist/types.d.ts +3 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/updateGlobal.d.ts +5 -1
- package/dist/updateGlobal.d.ts.map +1 -1
- package/dist/updateGlobal.js +96 -4
- package/dist/updateGlobal.js.map +1 -1
- package/dist/updateOne.d.ts.map +1 -1
- package/dist/updateOne.js +54 -5
- package/dist/updateOne.js.map +1 -1
- package/dist/upsertBranchGlobalChange.d.ts +3 -0
- package/dist/upsertBranchGlobalChange.d.ts.map +1 -0
- package/dist/upsertBranchGlobalChange.js +35 -0
- package/dist/upsertBranchGlobalChange.js.map +1 -0
- package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -1
- package/dist/upsertRow/deleteExistingRowsByPath.js +17 -12
- package/dist/upsertRow/deleteExistingRowsByPath.js.map +1 -1
- package/dist/upsertRow/index.d.ts +1 -1
- package/dist/upsertRow/index.d.ts.map +1 -1
- package/dist/upsertRow/index.js +132 -42
- package/dist/upsertRow/index.js.map +1 -1
- package/dist/upsertRow/types.d.ts +3 -0
- package/dist/upsertRow/types.d.ts.map +1 -1
- package/dist/upsertRow/types.js.map +1 -1
- package/dist/utilities/blocksToJsonMigrator.js +1 -1
- package/dist/utilities/blocksToJsonMigrator.js.map +1 -1
- package/dist/utilities/buildCreateMigration.js +1 -1
- package/dist/utilities/buildCreateMigration.js.map +1 -1
- package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js +1 -1
- package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js.map +1 -1
- package/dist/utilities/pushDevSchema.js +1 -1
- package/dist/utilities/pushDevSchema.js.map +1 -1
- package/package.json +4 -3
- package/dist/sqlite/requireDrizzleKit.d.ts +0 -3
- package/dist/sqlite/requireDrizzleKit.d.ts.map +0 -1
- package/dist/sqlite/requireDrizzleKit.js +0 -12
- package/dist/sqlite/requireDrizzleKit.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/find/traverseFields.ts"],"sourcesContent":["import type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { SQLiteSelect } from 'drizzle-orm/sqlite-core'\n\nimport { count, sql } from 'drizzle-orm'\nimport {\n appendVersionToQueryKey,\n buildVersionCollectionFields,\n combineQueries,\n type FlattenedField,\n getQueryDraftsSort,\n type JoinQuery,\n type SelectMode,\n type SelectType,\n type Where,\n} from 'payload'\nimport { fieldIsVirtual, fieldShouldBeLocalized, hasDraftsEnabled } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, DrizzleAdapter } from '../types.js'\nimport type { Result } from './buildFindManyArgs.js'\n\nimport { buildQuery } from '../queries/buildQuery.js'\nimport { getTableAlias } from '../queries/getTableAlias.js'\nimport { getArrayRelationName } from '../utilities/getArrayRelationName.js'\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { jsonAggBuildObject } from '../utilities/json.js'\nimport { rawConstraint } from '../utilities/rawConstraint.js'\nimport {\n InternalBlockTableNameIndex,\n resolveBlockTableName,\n} from '../utilities/validateExistingBlockIsIdentical.js'\nimport { buildPolymorphicJoinQuery } from './buildPolymorphicJoinQuery.js'\n\ntype TraverseFieldArgs = {\n _locales: Result\n adapter: DrizzleAdapter\n collectionSlug?: string\n currentArgs: Result\n currentTableName: string\n depth?: number\n draftsEnabled?: boolean\n fields: FlattenedField[]\n forceWithFields?: boolean\n joinQuery: JoinQuery\n joins?: BuildQueryJoinAliases\n locale?: string\n parentIsLocalized?: boolean\n path: string\n select?: SelectType\n selectAllOnCurrentLevel?: boolean\n selectMode?: SelectMode\n tablePath: string\n topLevelArgs: Record<string, unknown>\n topLevelTableName: string\n versions?: boolean\n withTabledFields: {\n numbers?: boolean\n rels?: boolean\n texts?: boolean\n }\n}\n\nexport const traverseFields = ({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n draftsEnabled,\n fields,\n forceWithFields,\n joinQuery = {},\n joins,\n locale,\n parentIsLocalized = false,\n path,\n select,\n selectAllOnCurrentLevel = false,\n selectMode,\n tablePath,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n}: TraverseFieldArgs) => {\n fields.forEach((field) => {\n if (fieldIsVirtual(field)) {\n return\n }\n\n const isFieldLocalized = fieldShouldBeLocalized({\n field,\n parentIsLocalized,\n })\n\n // handle simple relationship\n if (\n depth > 0 &&\n (field.type === 'upload' || field.type === 'relationship') &&\n !field.hasMany &&\n typeof field.relationTo === 'string'\n ) {\n if (isFieldLocalized) {\n _locales.with[`${path}${field.name}`] = true\n } else {\n currentArgs.with[`${path}${field.name}`] = true\n }\n }\n\n switch (field.type) {\n case 'array': {\n const arraySelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && typeof arraySelect === 'undefined') ||\n (selectMode === 'exclude' && arraySelect === false)\n ) {\n break\n }\n }\n\n const withArray: Result = {\n columns:\n typeof arraySelect === 'object'\n ? {\n id: true,\n _order: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const arrayTableName = adapter.tableNameMap.get(\n `${currentTableName}_${tablePath}${toSnakeCase(field.name)}`,\n )\n\n if (typeof arraySelect === 'object') {\n if (adapter.tables[arrayTableName]._locale) {\n withArray.columns._locale = true\n }\n\n if (adapter.tables[arrayTableName]._uuid) {\n withArray.columns._uuid = true\n }\n }\n\n const arrayTableNameWithLocales = `${arrayTableName}${adapter.localesSuffix}`\n\n if (adapter.tables[arrayTableNameWithLocales]) {\n withArray.with._locales = {\n columns:\n typeof arraySelect === 'object'\n ? {\n _locale: true,\n }\n : {\n id: false,\n _parentID: false,\n },\n with: {},\n }\n }\n\n const relationName = getArrayRelationName({\n field,\n path: `${path}${field.name}`,\n tableName: arrayTableName,\n })\n\n currentArgs.with[relationName] = withArray\n\n traverseFields({\n _locales: withArray.with._locales,\n adapter,\n currentArgs: withArray,\n currentTableName: arrayTableName,\n depth,\n draftsEnabled,\n fields: field.flattenedFields,\n forceWithFields,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof arraySelect === 'object' &&\n withArray.with._locales &&\n Object.keys(withArray.with._locales).length === 1\n ) {\n delete withArray.with._locales\n }\n\n break\n }\n\n case 'blocks': {\n const blocksSelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && !blocksSelect) ||\n (selectMode === 'exclude' && blocksSelect === false)\n ) {\n break\n }\n }\n\n if (adapter.blocksAsJSON) {\n if (select || selectAllOnCurrentLevel) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n }\n\n break\n }\n\n field.blocks.forEach((_block) => {\n const block = typeof _block === 'string' ? adapter.payload.blocks[_block] : _block\n const blockKey = `_blocks_${block.slug}${!block[InternalBlockTableNameIndex] ? '' : `_${block[InternalBlockTableNameIndex]}`}`\n\n let blockSelect: boolean | SelectType | undefined\n\n let blockSelectMode = selectMode\n\n if (selectMode === 'include' && blocksSelect === true) {\n blockSelect = true\n }\n\n if (typeof blocksSelect === 'object') {\n if (typeof blocksSelect[block.slug] === 'object') {\n blockSelect = blocksSelect[block.slug]\n } else if (\n (selectMode === 'include' && typeof blocksSelect[block.slug] === 'undefined') ||\n (selectMode === 'exclude' && blocksSelect[block.slug] === false)\n ) {\n blockSelect = {}\n blockSelectMode = 'include'\n } else if (selectMode === 'include' && Boolean(blocksSelect[block.slug])) {\n blockSelect = true\n }\n }\n\n if (!topLevelArgs[blockKey]) {\n const withBlock: Result = {\n columns:\n typeof blockSelect === 'object'\n ? {\n id: true,\n _order: true,\n _path: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const tableName = resolveBlockTableName(\n block,\n adapter.tableNameMap.get(`${topLevelTableName}_blocks_${toSnakeCase(block.slug)}`),\n )\n\n if (typeof blockSelect === 'object') {\n if (adapter.tables[tableName]._locale) {\n withBlock.columns._locale = true\n }\n\n if (adapter.tables[tableName]._uuid) {\n withBlock.columns._uuid = true\n }\n }\n\n if (adapter.tables[`${tableName}${adapter.localesSuffix}`]) {\n withBlock.with._locales = {\n with: {},\n }\n\n if (typeof blockSelect === 'object') {\n withBlock.with._locales.columns = {\n _locale: true,\n }\n }\n }\n topLevelArgs.with[blockKey] = withBlock\n\n traverseFields({\n _locales: withBlock.with._locales,\n adapter,\n currentArgs: withBlock,\n currentTableName: tableName,\n depth,\n draftsEnabled,\n fields: block.flattenedFields,\n forceWithFields: blockSelect === true,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof blockSelect === 'object' &&\n withBlock.with._locales &&\n Object.keys(withBlock.with._locales.columns).length === 1\n ) {\n delete withBlock.with._locales\n }\n }\n })\n\n break\n }\n\n case 'group':\n case 'tab': {\n const fieldSelect = select?.[field.name]\n\n if (fieldSelect === false) {\n break\n }\n\n traverseFields({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n draftsEnabled,\n fields: field.flattenedFields,\n forceWithFields,\n joinQuery,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: `${path}${field.name}_`,\n select: typeof fieldSelect === 'object' ? fieldSelect : undefined,\n selectAllOnCurrentLevel:\n selectAllOnCurrentLevel ||\n fieldSelect === true ||\n (selectMode === 'exclude' && typeof fieldSelect === 'undefined'),\n selectMode,\n tablePath: `${tablePath}${toSnakeCase(field.name)}_`,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n })\n\n break\n }\n case 'join': {\n // when `joinsQuery` is false, do not join\n if (joinQuery === false) {\n break\n }\n\n if (\n (select && selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n\n const joinSchemaPath = `${path.replaceAll('_', '.')}${field.name}`\n\n if (joinQuery[joinSchemaPath] === false) {\n break\n }\n\n const {\n count: shouldCount = false,\n limit: limitArg = field.defaultLimit ?? 10,\n page,\n sort = field.defaultSort,\n where,\n } = joinQuery[joinSchemaPath] || {}\n let limit = limitArg\n\n if (limit !== 0) {\n // get an additional document and slice it later to determine if there is a next page\n limit += 1\n }\n\n if (Array.isArray(field.collection)) {\n const polymorphicJoinQuery = buildPolymorphicJoinQuery({\n adapter,\n currentTableName,\n field,\n limit,\n locale,\n page,\n pageSize: limitArg,\n path,\n shouldCount,\n sort,\n where,\n })\n\n currentArgs.extras[polymorphicJoinQuery.columnName] = polymorphicJoinQuery.documents\n\n if (polymorphicJoinQuery.count) {\n currentArgs.extras[`${polymorphicJoinQuery.columnName}_count`] =\n polymorphicJoinQuery.count\n }\n } else {\n const db = adapter.drizzle as LibSQLDatabase\n const useDrafts =\n (versions || draftsEnabled) &&\n hasDraftsEnabled(adapter.payload.collections[field.collection].config)\n\n const fields = useDrafts\n ? buildVersionCollectionFields(\n adapter.payload.config,\n adapter.payload.collections[field.collection].config,\n true,\n )\n : adapter.payload.collections[field.collection].config.flattenedFields\n\n const joinCollectionTableName = adapter.tableNameMap.get(\n useDrafts\n ? `_${toSnakeCase(field.collection)}${adapter.versionsSuffix}`\n : toSnakeCase(field.collection),\n )\n\n const joins: BuildQueryJoinAliases = []\n\n const currentIDColumn = versions\n ? adapter.tables[currentTableName].parent\n : adapter.tables[currentTableName].id\n\n let joinQueryWhere: Where\n\n const currentIDRaw = sql.raw(\n `\"${getNameFromDrizzleTable(currentIDColumn.table)}\".\"${currentIDColumn.name}\"`,\n )\n\n if (Array.isArray(field.targetField.relationTo)) {\n joinQueryWhere = {\n [field.on]: {\n equals: {\n relationTo: collectionSlug,\n value: rawConstraint(currentIDRaw),\n },\n },\n }\n } else {\n joinQueryWhere = {\n [field.on]: {\n equals: rawConstraint(currentIDRaw),\n },\n }\n }\n\n if (where && Object.keys(where).length) {\n joinQueryWhere = {\n and: [joinQueryWhere, where],\n }\n }\n\n if (useDrafts) {\n joinQueryWhere = combineQueries(appendVersionToQueryKey(joinQueryWhere), {\n latest: { equals: true },\n })\n }\n\n const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const subQueryAlias = `${columnName}_alias`\n\n const { newAliasTable } = getTableAlias({\n adapter,\n tableName: joinCollectionTableName,\n })\n\n const {\n orderBy,\n selectFields,\n where: subQueryWhere,\n } = buildQuery({\n adapter,\n aliasTable: newAliasTable,\n fields,\n joins,\n locale,\n parentIsLocalized,\n selectLocale: true,\n sort: useDrafts\n ? getQueryDraftsSort({\n collectionConfig: adapter.payload.collections[field.collection].config,\n sort,\n })\n : sort,\n tableName: joinCollectionTableName,\n where: joinQueryWhere,\n })\n\n for (let key in selectFields) {\n const val = selectFields[key]\n\n if (val.table && getNameFromDrizzleTable(val.table) === joinCollectionTableName) {\n delete selectFields[key]\n key = key.split('.').pop()\n selectFields[key] = newAliasTable[key]\n }\n }\n\n if (useDrafts) {\n selectFields.parent = newAliasTable.parent\n }\n\n let query: SQLiteSelect = db\n .select(selectFields as any)\n .from(newAliasTable)\n .where(subQueryWhere)\n .orderBy(() => orderBy.map(({ column, order }) => order(column)))\n .$dynamic()\n\n joins.forEach(({ type, condition, table }) => {\n query = query[type ?? 'leftJoin'](table, condition)\n })\n\n if (page && limit !== 0) {\n const offset = (page - 1) * limit - 1\n if (offset > 0) {\n query = query.offset(offset)\n }\n }\n\n if (limit !== 0) {\n query = query.limit(limit)\n }\n\n const subQuery = query.as(subQueryAlias)\n\n if (shouldCount) {\n let countSubquery: SQLiteSelect = db\n .select(selectFields as any)\n\n .from(newAliasTable)\n .where(subQueryWhere)\n .$dynamic()\n\n joins.forEach(({ type, condition, table }) => {\n countSubquery = countSubquery[type ?? 'leftJoin'](table, condition)\n })\n\n currentArgs.extras[`${columnName}_count`] = sql`${db\n .select({\n count: count(),\n })\n .from(sql`${countSubquery.as(`${subQueryAlias}_count_subquery`)}`)}`.as(\n `${subQueryAlias}_count`,\n )\n }\n\n currentArgs.extras[columnName] = sql`${db\n .select({\n result: jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".${useDrafts ? 'parent_id' : 'id'}`),\n ...(selectFields._locale && {\n locale: sql.raw(`\"${subQueryAlias}\".${selectFields._locale.name}`),\n }),\n }),\n })\n .from(sql`${subQuery}`)}`.as(subQueryAlias)\n }\n\n break\n }\n\n case 'point': {\n if (adapter.name === 'sqlite') {\n break\n }\n\n const args = isFieldLocalized ? _locales : currentArgs\n if (!args.columns) {\n args.columns = {}\n }\n\n if (!args.extras) {\n args.extras = {}\n }\n\n const name = `${path}${field.name}`\n\n // Drizzle handles that poorly. See https://github.com/drizzle-team/drizzle-orm/issues/2526\n // Additionally, this way we format the column value straight in the database using ST_AsGeoJSON\n args.columns[name] = false\n\n let shouldSelect = false\n\n if (select || selectAllOnCurrentLevel) {\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && Boolean(select[field.name])) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n shouldSelect = true\n }\n } else {\n shouldSelect = true\n }\n const tableName = fieldShouldBeLocalized({ field, parentIsLocalized })\n ? `${currentTableName}${adapter.localesSuffix}`\n : currentTableName\n\n if (shouldSelect) {\n args.extras[name] = sql\n .raw(`ST_AsGeoJSON(\"${adapter.tables[tableName][name].name}\")::jsonb`)\n .as(name)\n }\n break\n }\n\n case 'select': {\n if (select && !selectAllOnCurrentLevel) {\n if (\n (selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n }\n\n if (field.hasMany) {\n const withSelect: Result = {\n columns: {\n id: false,\n order: false,\n parent: false,\n },\n orderBy: ({ order }, { asc }) => [asc(order)],\n }\n\n currentArgs.with[`${path}${field.name}`] = withSelect\n break\n }\n\n if (select || selectAllOnCurrentLevel) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n }\n\n break\n }\n\n default: {\n if (forceWithFields) {\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n (field.hasMany || Array.isArray(field.relationTo))\n ) {\n withTabledFields.rels = true\n }\n\n if (field.type === 'number' && field.hasMany) {\n withTabledFields.numbers = true\n }\n\n if (field.type === 'text' && field.hasMany) {\n withTabledFields.texts = true\n }\n }\n\n if (!select && !selectAllOnCurrentLevel) {\n break\n }\n\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && Boolean(select[field.name])) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n\n if (\n !withTabledFields.rels &&\n (field.type === 'relationship' || field.type === 'upload') &&\n (field.hasMany || Array.isArray(field.relationTo))\n ) {\n withTabledFields.rels = true\n }\n\n if (!withTabledFields.numbers && field.type === 'number' && field.hasMany) {\n withTabledFields.numbers = true\n }\n\n if (!withTabledFields.texts && field.type === 'text' && field.hasMany) {\n withTabledFields.texts = true\n }\n }\n\n break\n }\n }\n })\n\n return topLevelArgs\n}\n"],"names":["count","sql","appendVersionToQueryKey","buildVersionCollectionFields","combineQueries","getQueryDraftsSort","fieldIsVirtual","fieldShouldBeLocalized","hasDraftsEnabled","toSnakeCase","buildQuery","getTableAlias","getArrayRelationName","getNameFromDrizzleTable","jsonAggBuildObject","rawConstraint","InternalBlockTableNameIndex","resolveBlockTableName","buildPolymorphicJoinQuery","traverseFields","_locales","adapter","collectionSlug","currentArgs","currentTableName","depth","draftsEnabled","fields","forceWithFields","joinQuery","joins","locale","parentIsLocalized","path","select","selectAllOnCurrentLevel","selectMode","tablePath","topLevelArgs","topLevelTableName","versions","withTabledFields","forEach","field","isFieldLocalized","type","hasMany","relationTo","with","name","arraySelect","withArray","columns","id","_order","_parentID","orderBy","asc","arrayTableName","tableNameMap","get","tables","_locale","_uuid","arrayTableNameWithLocales","localesSuffix","relationName","tableName","flattenedFields","localized","undefined","Object","keys","length","blocksSelect","blocksAsJSON","fieldPath","blocks","_block","block","payload","blockKey","slug","blockSelect","blockSelectMode","Boolean","withBlock","_path","fieldSelect","joinSchemaPath","replaceAll","shouldCount","limit","limitArg","defaultLimit","page","sort","defaultSort","where","Array","isArray","collection","polymorphicJoinQuery","pageSize","extras","columnName","documents","db","drizzle","useDrafts","collections","config","joinCollectionTableName","versionsSuffix","currentIDColumn","parent","joinQueryWhere","currentIDRaw","raw","table","targetField","on","equals","value","and","latest","subQueryAlias","newAliasTable","selectFields","subQueryWhere","aliasTable","selectLocale","collectionConfig","key","val","split","pop","query","from","map","column","order","$dynamic","condition","offset","subQuery","as","countSubquery","result","args","shouldSelect","withSelect","rels","numbers","texts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/find/traverseFields.ts"],"sourcesContent":["import type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { SQLiteSelect } from 'drizzle-orm/sqlite-core'\nimport type {\n FlattenedField,\n JoinQuery,\n PayloadRequest,\n SelectMode,\n SelectType,\n Where,\n} from 'payload'\n\nimport { and, count, sql } from 'drizzle-orm'\nimport {\n appendVersionToQueryKey,\n buildVersionCollectionFields,\n combineQueries,\n getBranchPredicateSync,\n getQueryDraftsSort,\n resolveBranchReadState,\n resolveBranchVersionQuerySync,\n rewriteBranchVersionParents,\n} from 'payload'\nimport { fieldIsVirtual, fieldShouldBeLocalized, hasDraftsEnabled } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { Result } from './buildFindManyArgs.js'\n\nimport { buildBranchVisibility } from '../queries/buildBranchVisibility.js'\nimport { buildQuery } from '../queries/buildQuery.js'\nimport { getTableAlias } from '../queries/getTableAlias.js'\nimport { getArrayRelationName } from '../utilities/getArrayRelationName.js'\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { jsonAggBuildObject } from '../utilities/json.js'\nimport { rawConstraint } from '../utilities/rawConstraint.js'\nimport {\n InternalBlockTableNameIndex,\n resolveBlockTableName,\n} from '../utilities/validateExistingBlockIsIdentical.js'\nimport { buildPolymorphicJoinQuery } from './buildPolymorphicJoinQuery.js'\n\ntype TraverseFieldArgs = {\n _locales: Result\n adapter: DrizzleAdapter\n collectionSlug?: string\n currentArgs: Result\n currentTableName: string\n depth?: number\n draftsEnabled?: boolean\n fields: FlattenedField[]\n forceWithFields?: boolean\n joinQuery: JoinQuery\n joins?: BuildQueryJoinAliases\n locale?: string\n parentIsLocalized?: boolean\n path: string\n req?: Partial<PayloadRequest>\n select?: SelectType\n selectAllOnCurrentLevel?: boolean\n selectMode?: SelectMode\n tablePath: string\n topLevelArgs: Record<string, unknown>\n topLevelTableName: string\n versions?: boolean\n withTabledFields: {\n numbers?: boolean\n rels?: boolean\n texts?: boolean\n }\n}\n\nexport const traverseFields = ({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n draftsEnabled,\n fields,\n forceWithFields,\n joinQuery = {},\n joins,\n locale,\n parentIsLocalized = false,\n path,\n req,\n select,\n selectAllOnCurrentLevel = false,\n selectMode,\n tablePath,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n}: TraverseFieldArgs) => {\n fields.forEach((field) => {\n if (fieldIsVirtual(field)) {\n return\n }\n\n const isFieldLocalized = fieldShouldBeLocalized({\n field,\n parentIsLocalized,\n })\n\n // handle simple relationship\n if (\n depth > 0 &&\n (field.type === 'upload' || field.type === 'relationship') &&\n !field.hasMany &&\n typeof field.relationTo === 'string'\n ) {\n if (isFieldLocalized) {\n _locales.with[`${path}${field.name}`] = true\n } else {\n currentArgs.with[`${path}${field.name}`] = true\n }\n }\n\n switch (field.type) {\n case 'array': {\n const arraySelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && typeof arraySelect === 'undefined') ||\n (selectMode === 'exclude' && arraySelect === false)\n ) {\n break\n }\n }\n\n const withArray: Result = {\n columns:\n typeof arraySelect === 'object'\n ? {\n id: true,\n _order: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const arrayTableName = adapter.tableNameMap.get(\n `${currentTableName}_${tablePath}${toSnakeCase(field.name)}`,\n )\n\n if (typeof arraySelect === 'object') {\n if (adapter.tables[arrayTableName]._locale) {\n withArray.columns._locale = true\n }\n\n if (adapter.tables[arrayTableName]._uuid) {\n withArray.columns._uuid = true\n }\n }\n\n const arrayTableNameWithLocales = `${arrayTableName}${adapter.localesSuffix}`\n\n if (adapter.tables[arrayTableNameWithLocales]) {\n withArray.with._locales = {\n columns:\n typeof arraySelect === 'object'\n ? {\n _locale: true,\n }\n : {\n id: false,\n _parentID: false,\n },\n with: {},\n }\n }\n\n const relationName = getArrayRelationName({\n field,\n path: `${path}${field.name}`,\n tableName: arrayTableName,\n })\n\n currentArgs.with[relationName] = withArray\n\n traverseFields({\n _locales: withArray.with._locales,\n adapter,\n currentArgs: withArray,\n currentTableName: arrayTableName,\n depth,\n draftsEnabled,\n fields: field.flattenedFields,\n forceWithFields,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n req,\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof arraySelect === 'object' &&\n withArray.with._locales &&\n Object.keys(withArray.with._locales).length === 1\n ) {\n delete withArray.with._locales\n }\n\n break\n }\n\n case 'blocks': {\n const blocksSelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && !blocksSelect) ||\n (selectMode === 'exclude' && blocksSelect === false)\n ) {\n break\n }\n }\n\n if (adapter.blocksAsJSON) {\n if (select || selectAllOnCurrentLevel) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n }\n\n break\n }\n\n field.blocks.forEach((_block) => {\n const block = typeof _block === 'string' ? adapter.payload.blocks[_block] : _block\n const blockKey = `_blocks_${block.slug}${!block[InternalBlockTableNameIndex] ? '' : `_${block[InternalBlockTableNameIndex]}`}`\n\n let blockSelect: boolean | SelectType | undefined\n\n let blockSelectMode = selectMode\n\n if (selectMode === 'include' && blocksSelect === true) {\n blockSelect = true\n }\n\n if (typeof blocksSelect === 'object') {\n if (typeof blocksSelect[block.slug] === 'object') {\n blockSelect = blocksSelect[block.slug]\n } else if (\n (selectMode === 'include' && typeof blocksSelect[block.slug] === 'undefined') ||\n (selectMode === 'exclude' && blocksSelect[block.slug] === false)\n ) {\n blockSelect = {}\n blockSelectMode = 'include'\n } else if (selectMode === 'include' && Boolean(blocksSelect[block.slug])) {\n blockSelect = true\n }\n }\n\n if (!topLevelArgs[blockKey]) {\n const withBlock: Result = {\n columns:\n typeof blockSelect === 'object'\n ? {\n id: true,\n _order: true,\n _path: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const tableName = resolveBlockTableName(\n block,\n adapter.tableNameMap.get(`${topLevelTableName}_blocks_${toSnakeCase(block.slug)}`),\n )\n\n if (typeof blockSelect === 'object') {\n if (adapter.tables[tableName]._locale) {\n withBlock.columns._locale = true\n }\n\n if (adapter.tables[tableName]._uuid) {\n withBlock.columns._uuid = true\n }\n }\n\n if (adapter.tables[`${tableName}${adapter.localesSuffix}`]) {\n withBlock.with._locales = {\n with: {},\n }\n\n if (typeof blockSelect === 'object') {\n withBlock.with._locales.columns = {\n _locale: true,\n }\n }\n }\n topLevelArgs.with[blockKey] = withBlock\n\n traverseFields({\n _locales: withBlock.with._locales,\n adapter,\n currentArgs: withBlock,\n currentTableName: tableName,\n depth,\n draftsEnabled,\n fields: block.flattenedFields,\n forceWithFields: blockSelect === true,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n req,\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof blockSelect === 'object' &&\n withBlock.with._locales &&\n Object.keys(withBlock.with._locales.columns).length === 1\n ) {\n delete withBlock.with._locales\n }\n }\n })\n\n break\n }\n\n case 'group':\n case 'tab': {\n const fieldSelect = select?.[field.name]\n\n if (fieldSelect === false) {\n break\n }\n\n traverseFields({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n draftsEnabled,\n fields: field.flattenedFields,\n forceWithFields,\n joinQuery,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: `${path}${field.name}_`,\n req,\n select: typeof fieldSelect === 'object' ? fieldSelect : undefined,\n selectAllOnCurrentLevel:\n selectAllOnCurrentLevel ||\n fieldSelect === true ||\n (selectMode === 'exclude' && typeof fieldSelect === 'undefined'),\n selectMode,\n tablePath: `${tablePath}${toSnakeCase(field.name)}_`,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n })\n\n break\n }\n case 'join': {\n // when `joinsQuery` is false, do not join\n if (joinQuery === false) {\n break\n }\n\n if (\n (select && selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n\n const joinSchemaPath = `${path.replaceAll('_', '.')}${field.name}`\n\n if (joinQuery[joinSchemaPath] === false) {\n break\n }\n\n const {\n count: shouldCount = false,\n limit: limitArg = field.defaultLimit ?? 10,\n page,\n sort = field.defaultSort,\n where,\n } = joinQuery[joinSchemaPath] || {}\n let limit = limitArg\n\n if (limit !== 0) {\n // get an additional document and slice it later to determine if there is a next page\n limit += 1\n }\n\n if (Array.isArray(field.collection)) {\n const polymorphicJoinQuery = buildPolymorphicJoinQuery({\n adapter,\n currentTableName,\n field,\n limit,\n locale,\n page,\n pageSize: limitArg,\n path,\n req,\n shouldCount,\n sort,\n where,\n })\n\n currentArgs.extras[polymorphicJoinQuery.columnName] = polymorphicJoinQuery.documents\n\n if (polymorphicJoinQuery.count) {\n currentArgs.extras[`${polymorphicJoinQuery.columnName}_count`] =\n polymorphicJoinQuery.count\n }\n } else {\n const db = adapter.drizzle as LibSQLDatabase\n const useDrafts =\n (versions || draftsEnabled) &&\n hasDraftsEnabled(adapter.payload.collections[field.collection].config)\n\n const fields = useDrafts\n ? buildVersionCollectionFields(\n adapter.payload.config,\n adapter.payload.collections[field.collection].config,\n true,\n )\n : adapter.payload.collections[field.collection].config.flattenedFields\n\n const joinCollectionTableName = adapter.tableNameMap.get(\n useDrafts\n ? `_${toSnakeCase(field.collection)}${adapter.versionsSuffix}`\n : toSnakeCase(field.collection),\n )\n\n const joins: BuildQueryJoinAliases = []\n\n const currentIDColumn = versions\n ? adapter.tables[currentTableName].parent\n : adapter.tables[currentTableName].id\n\n let joinQueryWhere: Where\n\n const parentUsesBranching = collectionSlug\n ? resolveBranchReadState({ collectionSlug, req }).useBranching\n : false\n const canonicalIDColumn = parentUsesBranching\n ? adapter.tables[currentTableName][versions ? '_branchParent' : '_branchDocID']\n : undefined\n // Correlated constraints must reference the outer query's alias, without its schema.\n const currentTableIdentifier = sql.identifier(\n getNameFromDrizzleTable(currentIDColumn.table),\n )\n const currentIDExpression = sql`${currentTableIdentifier}.${sql.identifier(currentIDColumn.name)}`\n const currentIDRaw = canonicalIDColumn\n ? sql`COALESCE(${currentTableIdentifier}.${sql.identifier(canonicalIDColumn.name)}, ${currentIDExpression})`\n : currentIDExpression\n\n if (Array.isArray(field.targetField.relationTo)) {\n joinQueryWhere = {\n [field.on]: {\n equals: {\n relationTo: collectionSlug,\n value: rawConstraint(currentIDRaw),\n },\n },\n }\n } else {\n joinQueryWhere = {\n [field.on]: {\n equals: rawConstraint(currentIDRaw),\n },\n }\n }\n\n if (where && Object.keys(where).length) {\n joinQueryWhere = {\n and: [joinQueryWhere, where],\n }\n }\n\n // A join subquery must carry the same branch predicate as the\n // top-level read, or a branch would see main's related documents.\n const branchReadState = resolveBranchReadState({\n collectionSlug: field.collection,\n req,\n })\n const joinBranchPredicate = branchReadState.useBranching\n ? null\n : getBranchPredicateSync({\n collectionSlug: field.collection,\n req,\n })\n\n if (useDrafts) {\n const versionWhere = appendVersionToQueryKey(joinQueryWhere)\n const branchVersionWhere = branchReadState.useBranching\n ? rewriteBranchVersionParents(versionWhere)\n : resolveBranchVersionQuerySync({\n collectionSlug: field.collection,\n req,\n where: versionWhere,\n })\n\n joinQueryWhere = combineQueries(branchVersionWhere ?? {}, { latest: { equals: true } })\n } else if (!branchReadState.useBranching && joinBranchPredicate) {\n joinQueryWhere = { and: [joinQueryWhere, joinBranchPredicate] }\n }\n\n const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const subQueryAlias = `${columnName}_alias`\n\n const { newAliasTable } = getTableAlias({\n adapter,\n tableName: joinCollectionTableName,\n })\n\n const {\n orderBy,\n selectFields,\n where: subQueryWhere,\n } = buildQuery({\n adapter,\n aliasTable: newAliasTable,\n fields,\n joins,\n locale,\n parentIsLocalized,\n req,\n selectLocale: true,\n sort: useDrafts\n ? getQueryDraftsSort({\n collectionConfig: adapter.payload.collections[field.collection].config,\n sort,\n })\n : sort,\n tableName: joinCollectionTableName,\n where: joinQueryWhere,\n })\n const nativeBranchVisibility = branchReadState.useBranching\n ? buildBranchVisibility({\n adapter,\n branch: branchReadState.branch,\n canonicalIDExpression: useDrafts\n ? sql`COALESCE(${newAliasTable._branchParent}, ${newAliasTable.parent})`\n : undefined,\n collectionSlug: field.collection,\n table: newAliasTable,\n })\n : undefined\n const visibleSubQueryWhere = nativeBranchVisibility\n ? and(subQueryWhere, nativeBranchVisibility)\n : subQueryWhere\n\n for (let key in selectFields) {\n const val = selectFields[key]\n\n if (val.table && getNameFromDrizzleTable(val.table) === joinCollectionTableName) {\n delete selectFields[key]\n key = key.split('.').pop()\n selectFields[key] = newAliasTable[key]\n }\n }\n\n if (useDrafts) {\n delete selectFields[`${joinCollectionTableName}.parent`]\n\n selectFields.parent = newAliasTable._branchParent\n ? (sql`COALESCE(${newAliasTable._branchParent}, ${newAliasTable.parent})`.as(\n newAliasTable.parent.name,\n ) as unknown as GenericColumn)\n : newAliasTable.parent\n }\n\n // Surface the canonical document ID rather than the shadow row's own\n // primary key, so join results address documents the same way every\n // other read does.\n if ((branchReadState.useBranching || joinBranchPredicate) && newAliasTable._branchDocID) {\n // `selectFields` is typed as a column map, but Drizzle accepts an\n // aliased expression in the same position — as the sibling\n // `sql\\`...\\`.as()` assignments above already rely on.\n selectFields.id = sql`COALESCE(${newAliasTable._branchDocID}, ${newAliasTable.id})`.as(\n 'id',\n ) as unknown as GenericColumn\n }\n\n let query: SQLiteSelect = db\n .select(selectFields as any)\n .from(newAliasTable)\n .where(visibleSubQueryWhere)\n .orderBy(() => orderBy.map(({ column, order }) => order(column)))\n .$dynamic()\n\n joins.forEach(({ type, condition, table }) => {\n query = query[type ?? 'leftJoin'](table, condition)\n })\n\n if (page && limit !== 0) {\n const offset = (page - 1) * limit - 1\n if (offset > 0) {\n query = query.offset(offset)\n }\n }\n\n if (limit !== 0) {\n query = query.limit(limit)\n }\n\n const subQuery = query.as(subQueryAlias)\n\n if (shouldCount) {\n let countSubquery: SQLiteSelect = db\n .select(selectFields as any)\n\n .from(newAliasTable)\n .where(visibleSubQueryWhere)\n .$dynamic()\n\n joins.forEach(({ type, condition, table }) => {\n countSubquery = countSubquery[type ?? 'leftJoin'](table, condition)\n })\n\n currentArgs.extras[`${columnName}_count`] = sql`${db\n .select({\n count: count(),\n })\n .from(sql`${countSubquery.as(`${subQueryAlias}_count_subquery`)}`)}`.as(\n `${subQueryAlias}_count`,\n )\n }\n\n currentArgs.extras[columnName] = sql`${db\n .select({\n result: jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".${useDrafts ? 'parent_id' : 'id'}`),\n ...(selectFields._locale && {\n locale: sql.raw(`\"${subQueryAlias}\".${selectFields._locale.name}`),\n }),\n }),\n })\n .from(sql`${subQuery}`)}`.as(subQueryAlias)\n }\n\n break\n }\n\n case 'point': {\n if (adapter.name === 'sqlite') {\n break\n }\n\n const args = isFieldLocalized ? _locales : currentArgs\n if (!args.columns) {\n args.columns = {}\n }\n\n if (!args.extras) {\n args.extras = {}\n }\n\n const name = `${path}${field.name}`\n\n // Drizzle handles that poorly. See https://github.com/drizzle-team/drizzle-orm/issues/2526\n // Additionally, this way we format the column value straight in the database using ST_AsGeoJSON\n args.columns[name] = false\n\n let shouldSelect = false\n\n if (select || selectAllOnCurrentLevel) {\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && Boolean(select[field.name])) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n shouldSelect = true\n }\n } else {\n shouldSelect = true\n }\n const tableName = fieldShouldBeLocalized({ field, parentIsLocalized })\n ? `${currentTableName}${adapter.localesSuffix}`\n : currentTableName\n\n if (shouldSelect) {\n args.extras[name] = sql\n .raw(`ST_AsGeoJSON(\"${adapter.tables[tableName][name].name}\")::jsonb`)\n .as(name)\n }\n break\n }\n\n case 'select': {\n if (select && !selectAllOnCurrentLevel) {\n if (\n (selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n }\n\n if (field.hasMany) {\n const withSelect: Result = {\n columns: {\n id: false,\n order: false,\n parent: false,\n },\n orderBy: ({ order }, { asc }) => [asc(order)],\n }\n\n currentArgs.with[`${path}${field.name}`] = withSelect\n break\n }\n\n if (select || selectAllOnCurrentLevel) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n }\n\n break\n }\n\n default: {\n if (forceWithFields) {\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n (field.hasMany || Array.isArray(field.relationTo))\n ) {\n withTabledFields.rels = true\n }\n\n if (field.type === 'number' && field.hasMany) {\n withTabledFields.numbers = true\n }\n\n if (field.type === 'text' && field.hasMany) {\n withTabledFields.texts = true\n }\n }\n\n if (!select && !selectAllOnCurrentLevel) {\n break\n }\n\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && Boolean(select[field.name])) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n\n if (\n !withTabledFields.rels &&\n (field.type === 'relationship' || field.type === 'upload') &&\n (field.hasMany || Array.isArray(field.relationTo))\n ) {\n withTabledFields.rels = true\n }\n\n if (!withTabledFields.numbers && field.type === 'number' && field.hasMany) {\n withTabledFields.numbers = true\n }\n\n if (!withTabledFields.texts && field.type === 'text' && field.hasMany) {\n withTabledFields.texts = true\n }\n }\n\n break\n }\n }\n })\n\n return topLevelArgs\n}\n"],"names":["and","count","sql","appendVersionToQueryKey","buildVersionCollectionFields","combineQueries","getBranchPredicateSync","getQueryDraftsSort","resolveBranchReadState","resolveBranchVersionQuerySync","rewriteBranchVersionParents","fieldIsVirtual","fieldShouldBeLocalized","hasDraftsEnabled","toSnakeCase","buildBranchVisibility","buildQuery","getTableAlias","getArrayRelationName","getNameFromDrizzleTable","jsonAggBuildObject","rawConstraint","InternalBlockTableNameIndex","resolveBlockTableName","buildPolymorphicJoinQuery","traverseFields","_locales","adapter","collectionSlug","currentArgs","currentTableName","depth","draftsEnabled","fields","forceWithFields","joinQuery","joins","locale","parentIsLocalized","path","req","select","selectAllOnCurrentLevel","selectMode","tablePath","topLevelArgs","topLevelTableName","versions","withTabledFields","forEach","field","isFieldLocalized","type","hasMany","relationTo","with","name","arraySelect","withArray","columns","id","_order","_parentID","orderBy","asc","arrayTableName","tableNameMap","get","tables","_locale","_uuid","arrayTableNameWithLocales","localesSuffix","relationName","tableName","flattenedFields","localized","undefined","Object","keys","length","blocksSelect","blocksAsJSON","fieldPath","blocks","_block","block","payload","blockKey","slug","blockSelect","blockSelectMode","Boolean","withBlock","_path","fieldSelect","joinSchemaPath","replaceAll","shouldCount","limit","limitArg","defaultLimit","page","sort","defaultSort","where","Array","isArray","collection","polymorphicJoinQuery","pageSize","extras","columnName","documents","db","drizzle","useDrafts","collections","config","joinCollectionTableName","versionsSuffix","currentIDColumn","parent","joinQueryWhere","parentUsesBranching","useBranching","canonicalIDColumn","currentTableIdentifier","identifier","table","currentIDExpression","currentIDRaw","targetField","on","equals","value","branchReadState","joinBranchPredicate","versionWhere","branchVersionWhere","latest","subQueryAlias","newAliasTable","selectFields","subQueryWhere","aliasTable","selectLocale","collectionConfig","nativeBranchVisibility","branch","canonicalIDExpression","_branchParent","visibleSubQueryWhere","key","val","split","pop","as","_branchDocID","query","from","map","column","order","$dynamic","condition","offset","subQuery","countSubquery","result","raw","args","shouldSelect","withSelect","rels","numbers","texts"],"mappings":"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"}
|
package/dist/find.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../src/find.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAA6B,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../src/find.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAA6B,MAAM,SAAS,CAAA;AAe9D,eAAO,MAAM,IAAI,EAAE,IAgElB,CAAA"}
|
package/dist/find.js
CHANGED
|
@@ -1,11 +1,27 @@
|
|
|
1
|
+
import { applyBranchIDProjection, resolveBranchQuery, resolveBranchReadState, rewriteBranchIDs, withBranchIDSelect } from 'payload';
|
|
1
2
|
import toSnakeCase from 'to-snake-case';
|
|
2
3
|
import { findMany } from './find/findMany.js';
|
|
3
|
-
export const find = async function find({ collection, draftsEnabled, joins, limit, locale, page = 1, pagination, req, select, sort: sortArg, where }) {
|
|
4
|
+
export const find = async function find({ branch, collection, draftsEnabled, joins, limit, locale, page = 1, pagination, req, select, sort: sortArg, where }) {
|
|
4
5
|
const collectionConfig = this.payload.collections[collection].config;
|
|
5
6
|
const sort = sortArg !== undefined && sortArg !== null ? sortArg : collectionConfig.defaultSort;
|
|
6
7
|
const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug));
|
|
7
|
-
|
|
8
|
+
const branchReadState = resolveBranchReadState({
|
|
9
|
+
branch,
|
|
10
|
+
collectionSlug: collectionConfig.slug,
|
|
11
|
+
req
|
|
12
|
+
});
|
|
13
|
+
const branchedWhere = branchReadState.useBranching ? rewriteBranchIDs(where) : await resolveBranchQuery({
|
|
14
|
+
branch,
|
|
15
|
+
collectionSlug: collectionConfig.slug,
|
|
16
|
+
req,
|
|
17
|
+
where
|
|
18
|
+
});
|
|
19
|
+
const result = await findMany({
|
|
8
20
|
adapter: this,
|
|
21
|
+
branchVisibility: branchReadState.useBranching ? {
|
|
22
|
+
branch: branchReadState.branch,
|
|
23
|
+
collectionSlug: collectionConfig.slug
|
|
24
|
+
} : undefined,
|
|
9
25
|
collectionSlug: collectionConfig.slug,
|
|
10
26
|
draftsEnabled,
|
|
11
27
|
fields: collectionConfig.flattenedFields,
|
|
@@ -15,11 +31,23 @@ export const find = async function find({ collection, draftsEnabled, joins, limi
|
|
|
15
31
|
page,
|
|
16
32
|
pagination,
|
|
17
33
|
req,
|
|
18
|
-
select
|
|
34
|
+
select: withBranchIDSelect({
|
|
35
|
+
branch,
|
|
36
|
+
collectionSlug: collectionConfig.slug,
|
|
37
|
+
req,
|
|
38
|
+
select
|
|
39
|
+
}),
|
|
19
40
|
sort,
|
|
20
41
|
tableName,
|
|
21
|
-
where
|
|
42
|
+
where: branchedWhere
|
|
43
|
+
});
|
|
44
|
+
applyBranchIDProjection({
|
|
45
|
+
branch,
|
|
46
|
+
collectionSlug: collectionConfig.slug,
|
|
47
|
+
docs: result.docs,
|
|
48
|
+
req
|
|
22
49
|
});
|
|
50
|
+
return result;
|
|
23
51
|
};
|
|
24
52
|
|
|
25
53
|
//# sourceMappingURL=find.js.map
|
package/dist/find.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/find.ts"],"sourcesContent":["import type { Find, SanitizedCollectionConfig } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const find: Find = async function find(\n this: DrizzleAdapter,\n {\n collection,\n draftsEnabled,\n joins,\n limit,\n locale,\n page = 1,\n pagination,\n req,\n select,\n sort: sortArg,\n where,\n },\n) {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n const sort = sortArg !== undefined && sortArg !== null ? sortArg : collectionConfig.defaultSort\n\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n
|
|
1
|
+
{"version":3,"sources":["../src/find.ts"],"sourcesContent":["import type { Find, SanitizedCollectionConfig } from 'payload'\n\nimport {\n applyBranchIDProjection,\n resolveBranchQuery,\n resolveBranchReadState,\n rewriteBranchIDs,\n withBranchIDSelect,\n} from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const find: Find = async function find(\n this: DrizzleAdapter,\n {\n branch,\n collection,\n draftsEnabled,\n joins,\n limit,\n locale,\n page = 1,\n pagination,\n req,\n select,\n sort: sortArg,\n where,\n },\n) {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n const sort = sortArg !== undefined && sortArg !== null ? sortArg : collectionConfig.defaultSort\n\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n const branchReadState = resolveBranchReadState({\n branch,\n collectionSlug: collectionConfig.slug,\n req,\n })\n const branchedWhere = branchReadState.useBranching\n ? rewriteBranchIDs(where)\n : await resolveBranchQuery({\n branch,\n collectionSlug: collectionConfig.slug,\n req,\n where,\n })\n\n const result = await findMany({\n adapter: this,\n branchVisibility: branchReadState.useBranching\n ? { branch: branchReadState.branch, collectionSlug: collectionConfig.slug }\n : undefined,\n collectionSlug: collectionConfig.slug,\n draftsEnabled,\n fields: collectionConfig.flattenedFields,\n joins,\n limit,\n locale,\n page,\n pagination,\n req,\n select: withBranchIDSelect({ branch, collectionSlug: collectionConfig.slug, req, select }),\n sort,\n tableName,\n where: branchedWhere,\n })\n\n applyBranchIDProjection({\n branch,\n collectionSlug: collectionConfig.slug,\n docs: result.docs as Record<string, unknown>[],\n req,\n })\n\n return result\n}\n"],"names":["applyBranchIDProjection","resolveBranchQuery","resolveBranchReadState","rewriteBranchIDs","withBranchIDSelect","toSnakeCase","findMany","find","branch","collection","draftsEnabled","joins","limit","locale","page","pagination","req","select","sort","sortArg","where","collectionConfig","payload","collections","config","undefined","defaultSort","tableName","tableNameMap","get","slug","branchReadState","collectionSlug","branchedWhere","useBranching","result","adapter","branchVisibility","fields","flattenedFields","docs"],"mappings":"AAEA,SACEA,uBAAuB,EACvBC,kBAAkB,EAClBC,sBAAsB,EACtBC,gBAAgB,EAChBC,kBAAkB,QACb,UAAS;AAChB,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,OAAa,eAAeA,KAEvC,EACEC,MAAM,EACNC,UAAU,EACVC,aAAa,EACbC,KAAK,EACLC,KAAK,EACLC,MAAM,EACNC,OAAO,CAAC,EACRC,UAAU,EACVC,GAAG,EACHC,MAAM,EACNC,MAAMC,OAAO,EACbC,KAAK,EACN;IAED,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACd,WAAW,CAACe,MAAM;IAC/F,MAAMN,OAAOC,YAAYM,aAAaN,YAAY,OAAOA,UAAUE,iBAAiBK,WAAW;IAE/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACxB,YAAYgB,iBAAiBS,IAAI;IAEzE,MAAMC,kBAAkB7B,uBAAuB;QAC7CM;QACAwB,gBAAgBX,iBAAiBS,IAAI;QACrCd;IACF;IACA,MAAMiB,gBAAgBF,gBAAgBG,YAAY,GAC9C/B,iBAAiBiB,SACjB,MAAMnB,mBAAmB;QACvBO;QACAwB,gBAAgBX,iBAAiBS,IAAI;QACrCd;QACAI;IACF;IAEJ,MAAMe,SAAS,MAAM7B,SAAS;QAC5B8B,SAAS,IAAI;QACbC,kBAAkBN,gBAAgBG,YAAY,GAC1C;YAAE1B,QAAQuB,gBAAgBvB,MAAM;YAAEwB,gBAAgBX,iBAAiBS,IAAI;QAAC,IACxEL;QACJO,gBAAgBX,iBAAiBS,IAAI;QACrCpB;QACA4B,QAAQjB,iBAAiBkB,eAAe;QACxC5B;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC,QAAQb,mBAAmB;YAAEI;YAAQwB,gBAAgBX,iBAAiBS,IAAI;YAAEd;YAAKC;QAAO;QACxFC;QACAS;QACAP,OAAOa;IACT;IAEAjC,wBAAwB;QACtBQ;QACAwB,gBAAgBX,iBAAiBS,IAAI;QACrCU,MAAML,OAAOK,IAAI;QACjBxB;IACF;IAEA,OAAOmB;AACT,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findDistinct.d.ts","sourceRoot":"","sources":["../src/findDistinct.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"findDistinct.d.ts","sourceRoot":"","sources":["../src/findDistinct.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,YAAY,EASlB,MAAM,SAAS,CAAA;AA+ChB,eAAO,MAAM,YAAY,EAAE,YAoO1B,CAAA"}
|
package/dist/findDistinct.js
CHANGED
|
@@ -1,10 +1,28 @@
|
|
|
1
|
-
import { max, sql } from 'drizzle-orm';
|
|
2
|
-
import { getFieldByPath } from 'payload';
|
|
1
|
+
import { and, asc, desc, max, sql } from 'drizzle-orm';
|
|
2
|
+
import { getFieldByPath, getLocalizedPaths, resetBranchState, resolveBranchQuery, resolveBranchReadState, rewriteBranchIDs } from 'payload';
|
|
3
3
|
import toSnakeCase from 'to-snake-case';
|
|
4
|
+
import { buildBranchVisibility } from './queries/buildBranchVisibility.js';
|
|
4
5
|
import { buildQuery } from './queries/buildQuery.js';
|
|
5
6
|
import { selectDistinct } from './queries/selectDistinct.js';
|
|
6
7
|
import { getTransaction } from './utilities/getTransaction.js';
|
|
7
8
|
import { DistinctSymbol } from './utilities/rawConstraint.js';
|
|
9
|
+
const prefixWherePaths = ({ prefix, where })=>{
|
|
10
|
+
const prefixedWhere = {};
|
|
11
|
+
for (const [key, value] of Object.entries(where)){
|
|
12
|
+
if ([
|
|
13
|
+
'and',
|
|
14
|
+
'or'
|
|
15
|
+
].includes(key.toLowerCase()) && Array.isArray(value)) {
|
|
16
|
+
prefixedWhere[key] = value.map((nestedWhere)=>prefixWherePaths({
|
|
17
|
+
prefix,
|
|
18
|
+
where: nestedWhere
|
|
19
|
+
}));
|
|
20
|
+
} else {
|
|
21
|
+
prefixedWhere[`${prefix}.${key}`] = value;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return prefixedWhere;
|
|
25
|
+
};
|
|
8
26
|
const getOrderColumn = (orderBy, selectFields, joins)=>{
|
|
9
27
|
if (orderBy.length === 0) {
|
|
10
28
|
return null;
|
|
@@ -22,26 +40,102 @@ export const findDistinct = async function(args) {
|
|
|
22
40
|
const page = args.page || 1;
|
|
23
41
|
const offset = args.limit ? (page - 1) * args.limit : undefined;
|
|
24
42
|
const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug));
|
|
25
|
-
|
|
43
|
+
// Same predicate a list read gets: distinct values describe the visible documents.
|
|
44
|
+
const branchReadState = resolveBranchReadState({
|
|
45
|
+
branch: args.branch,
|
|
46
|
+
collectionSlug: args.collection,
|
|
47
|
+
req: args.req
|
|
48
|
+
});
|
|
49
|
+
const branchScopedWhere = branchReadState.useBranching ? rewriteBranchIDs(args.where) : await resolveBranchQuery({
|
|
50
|
+
branch: args.branch,
|
|
51
|
+
collectionSlug: args.collection,
|
|
52
|
+
req: args.req,
|
|
53
|
+
where: args.where
|
|
54
|
+
});
|
|
55
|
+
const relatedBranchConstraints = [];
|
|
56
|
+
const fieldPaths = getLocalizedPaths({
|
|
57
|
+
collectionSlug: args.collection,
|
|
58
|
+
fields: collectionConfig.flattenedFields,
|
|
59
|
+
incomingPath: args.field,
|
|
60
|
+
locale: args.locale,
|
|
61
|
+
overrideAccess: true,
|
|
62
|
+
payload: this.payload
|
|
63
|
+
});
|
|
64
|
+
for(let pathIndex = 1; pathIndex < fieldPaths.length; pathIndex++){
|
|
65
|
+
const relatedCollectionSlug = fieldPaths[pathIndex]?.collectionSlug;
|
|
66
|
+
if (!relatedCollectionSlug) {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
const relationshipPath = fieldPaths.slice(0, pathIndex).map(({ path })=>path).join('.');
|
|
70
|
+
const relatedBranchReadState = resolveBranchReadState({
|
|
71
|
+
branch: args.branch,
|
|
72
|
+
collectionSlug: relatedCollectionSlug,
|
|
73
|
+
req: args.req
|
|
74
|
+
});
|
|
75
|
+
const relatedWhere = relatedBranchReadState.useBranching ? rewriteBranchIDs(args.relatedAccess?.[relationshipPath]) : await resolveBranchQuery({
|
|
76
|
+
branch: args.branch,
|
|
77
|
+
collectionSlug: relatedCollectionSlug,
|
|
78
|
+
req: args.req,
|
|
79
|
+
where: args.relatedAccess?.[relationshipPath]
|
|
80
|
+
});
|
|
81
|
+
if (relatedWhere && Object.keys(relatedWhere).length) {
|
|
82
|
+
relatedBranchConstraints.push(prefixWherePaths({
|
|
83
|
+
prefix: relationshipPath,
|
|
84
|
+
where: relatedWhere
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const queryReq = args.req && args.branch !== undefined ? {
|
|
89
|
+
...args.req,
|
|
90
|
+
branch: args.branch === false ? args.req.branch : args.branch,
|
|
91
|
+
context: {
|
|
92
|
+
...args.req.context,
|
|
93
|
+
...args.branch === false ? {
|
|
94
|
+
_branchBypass: true
|
|
95
|
+
} : {}
|
|
96
|
+
}
|
|
97
|
+
} : args.req;
|
|
98
|
+
if (queryReq && queryReq !== args.req) {
|
|
99
|
+
resetBranchState({
|
|
100
|
+
req: queryReq
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
const { joins, orderBy, selectFields, where: queryWhere } = buildQuery({
|
|
26
104
|
adapter: this,
|
|
27
105
|
fields: collectionConfig.flattenedFields,
|
|
28
106
|
locale: args.locale,
|
|
107
|
+
req: queryReq,
|
|
29
108
|
sort: args.sort ?? args.field,
|
|
30
109
|
tableName,
|
|
31
110
|
where: {
|
|
32
111
|
and: [
|
|
33
|
-
args.where ?? {},
|
|
34
112
|
{
|
|
35
113
|
[args.field]: {
|
|
36
114
|
equals: DistinctSymbol
|
|
37
115
|
}
|
|
38
|
-
}
|
|
116
|
+
},
|
|
117
|
+
branchScopedWhere ?? {},
|
|
118
|
+
...relatedBranchConstraints
|
|
39
119
|
]
|
|
40
120
|
}
|
|
41
121
|
});
|
|
42
122
|
orderBy.pop();
|
|
123
|
+
const table = this.tables[tableName];
|
|
124
|
+
const canonicalIDExpression = branchReadState.useBranching && args.field === 'id' ? sql`COALESCE(${table._branchDocID}, ${table.id})` : undefined;
|
|
125
|
+
if (canonicalIDExpression) {
|
|
126
|
+
selectFields['_selected'] = canonicalIDExpression.as('_selected');
|
|
127
|
+
}
|
|
128
|
+
const branchVisibilityWhere = branchReadState.useBranching ? buildBranchVisibility({
|
|
129
|
+
adapter: this,
|
|
130
|
+
branch: branchReadState.branch,
|
|
131
|
+
collectionSlug: args.collection,
|
|
132
|
+
table
|
|
133
|
+
}) : undefined;
|
|
134
|
+
const where = and(queryWhere, branchVisibilityWhere);
|
|
43
135
|
const db = await getTransaction(this, args.req);
|
|
44
|
-
const _order = getOrderColumn(orderBy, selectFields, joins);
|
|
136
|
+
const _order = canonicalIDExpression ? null : getOrderColumn(orderBy, selectFields, joins);
|
|
137
|
+
const firstSort = Array.isArray(args.sort) ? args.sort[0] : args.sort;
|
|
138
|
+
const canonicalIDOrder = firstSort?.startsWith('-') ? desc : asc;
|
|
45
139
|
const selectDistinctResult = await selectDistinct({
|
|
46
140
|
adapter: this,
|
|
47
141
|
db,
|
|
@@ -49,7 +143,9 @@ export const findDistinct = async function(args) {
|
|
|
49
143
|
hasAggregates: Boolean(_order) && !joins.length,
|
|
50
144
|
joins,
|
|
51
145
|
query: ({ query })=>{
|
|
52
|
-
if (
|
|
146
|
+
if (canonicalIDExpression) {
|
|
147
|
+
query = query.orderBy(canonicalIDOrder(sql`_selected`));
|
|
148
|
+
} else if (_order && orderBy.length > 0 && !joins.length) {
|
|
53
149
|
query = query.orderBy(orderBy[0].order(sql`_order`));
|
|
54
150
|
} else {
|
|
55
151
|
query = query.orderBy(()=>orderBy.map(({ column, order })=>order(column)));
|
|
@@ -97,7 +193,7 @@ export const findDistinct = async function(args) {
|
|
|
97
193
|
}));
|
|
98
194
|
if (args.limit) {
|
|
99
195
|
const totalDocs = await this.countDistinct({
|
|
100
|
-
column: selectFields['_selected'],
|
|
196
|
+
column: canonicalIDExpression ?? selectFields['_selected'],
|
|
101
197
|
db,
|
|
102
198
|
joins,
|
|
103
199
|
tableName,
|
package/dist/findDistinct.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/findDistinct.ts"],"sourcesContent":["import type { asc, desc, SQL } from 'drizzle-orm'\n\nimport { max, sql } from 'drizzle-orm'\nimport { type FindDistinct, getFieldByPath, type SanitizedCollectionConfig } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, DrizzleAdapter, GenericColumn } from './types.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { selectDistinct } from './queries/selectDistinct.js'\nimport { getTransaction } from './utilities/getTransaction.js'\nimport { DistinctSymbol } from './utilities/rawConstraint.js'\n\nconst getOrderColumn = (\n orderBy: { column: GenericColumn; order: typeof asc | typeof desc }[],\n selectFields: Record<string, GenericColumn>,\n joins: BuildQueryJoinAliases,\n): GenericColumn | null | SQL.Aliased => {\n if (orderBy.length === 0) {\n return null\n }\n\n if (orderBy[0].column === selectFields['_selected']) {\n return null\n }\n\n if (joins.length > 0) {\n return orderBy[0].column\n }\n\n return max(orderBy[0]?.column).as('_order')\n}\n\nexport const findDistinct: FindDistinct = async function (this: DrizzleAdapter, args) {\n const collectionConfig: SanitizedCollectionConfig =\n this.payload.collections[args.collection].config\n const page = args.page || 1\n const offset = args.limit ? (page - 1) * args.limit : undefined\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n const { joins, orderBy, selectFields, where } = buildQuery({\n adapter: this,\n fields: collectionConfig.flattenedFields,\n locale: args.locale,\n sort: args.sort ?? args.field,\n tableName,\n where: {\n and: [\n args.where ?? {},\n {\n [args.field]: {\n equals: DistinctSymbol,\n },\n },\n ],\n },\n })\n\n orderBy.pop()\n\n const db = await getTransaction(this, args.req)\n\n const _order = getOrderColumn(orderBy, selectFields, joins)\n\n const selectDistinctResult = await selectDistinct({\n adapter: this,\n db,\n forceRun: true,\n hasAggregates: Boolean(_order) && !joins.length,\n joins,\n query: ({ query }) => {\n if (_order && orderBy.length > 0 && !joins.length) {\n query = query.orderBy(orderBy[0].order(sql`_order`))\n } else {\n query = query.orderBy(() => orderBy.map(({ column, order }) => order(column)))\n }\n\n if (args.limit) {\n if (offset) {\n query = query.offset(offset)\n }\n\n query = query.limit(args.limit)\n }\n\n return query\n },\n selectFields: {\n _selected: selectFields['_selected'],\n ...(_order ? { _order } : {}),\n } as Record<string, any>,\n tableName,\n where,\n })\n\n const field = getFieldByPath({\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n includeRelationships: true,\n path: args.field,\n })?.field\n\n if (field && 'relationTo' in field && Array.isArray(field.relationTo)) {\n for (const row of selectDistinctResult as any) {\n const json = JSON.parse(row._selected)\n const relationTo = Object.keys(json).find((each) => Boolean(json[each]))\n const value = json[relationTo]\n\n if (!value) {\n row._selected = null\n } else {\n row._selected = { relationTo, value }\n }\n }\n }\n\n const values = selectDistinctResult.map((each) => ({\n [args.field]: (each as Record<string, any>)._selected,\n }))\n\n if (args.limit) {\n const totalDocs = await this.countDistinct({\n column: selectFields['_selected'],\n db,\n joins,\n tableName,\n where,\n })\n\n const totalPages = Math.ceil(totalDocs / args.limit)\n const hasPrevPage = page > 1\n const hasNextPage = totalPages > page\n const pagingCounter = (page - 1) * args.limit + 1\n\n return {\n hasNextPage,\n hasPrevPage,\n limit: args.limit,\n nextPage: hasNextPage ? page + 1 : null,\n page,\n pagingCounter,\n prevPage: hasPrevPage ? page - 1 : null,\n totalDocs,\n totalPages,\n values,\n }\n }\n\n return {\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n page: 1,\n pagingCounter: 1,\n totalDocs: values.length,\n totalPages: 1,\n values,\n }\n}\n"],"names":["max","sql","getFieldByPath","toSnakeCase","buildQuery","selectDistinct","getTransaction","DistinctSymbol","getOrderColumn","orderBy","selectFields","joins","length","column","as","findDistinct","args","collectionConfig","payload","collections","collection","config","page","offset","limit","undefined","tableName","tableNameMap","get","slug","where","adapter","fields","flattenedFields","locale","sort","field","and","equals","pop","db","req","_order","selectDistinctResult","forceRun","hasAggregates","Boolean","query","order","map","_selected","includeRelationships","path","Array","isArray","relationTo","row","json","JSON","parse","Object","keys","find","each","value","values","totalDocs","countDistinct","totalPages","Math","ceil","hasPrevPage","hasNextPage","pagingCounter","nextPage","prevPage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/findDistinct.ts"],"sourcesContent":["import type { SQL } from 'drizzle-orm'\nimport type { PayloadRequest } from 'payload'\n\nimport { and, asc, desc, max, sql } from 'drizzle-orm'\nimport {\n type FindDistinct,\n getFieldByPath,\n getLocalizedPaths,\n resetBranchState,\n resolveBranchQuery,\n resolveBranchReadState,\n rewriteBranchIDs,\n type SanitizedCollectionConfig,\n type Where,\n} from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, DrizzleAdapter, GenericColumn } from './types.js'\n\nimport { buildBranchVisibility } from './queries/buildBranchVisibility.js'\nimport { buildQuery } from './queries/buildQuery.js'\nimport { selectDistinct } from './queries/selectDistinct.js'\nimport { getTransaction } from './utilities/getTransaction.js'\nimport { DistinctSymbol } from './utilities/rawConstraint.js'\n\nconst prefixWherePaths = ({ prefix, where }: { prefix: string; where: Where }): Where => {\n const prefixedWhere: Where = {}\n\n for (const [key, value] of Object.entries(where)) {\n if (['and', 'or'].includes(key.toLowerCase()) && Array.isArray(value)) {\n prefixedWhere[key] = value.map((nestedWhere) =>\n prefixWherePaths({ prefix, where: nestedWhere }),\n )\n } else {\n prefixedWhere[`${prefix}.${key}`] = value\n }\n }\n\n return prefixedWhere\n}\n\nconst getOrderColumn = (\n orderBy: { column: GenericColumn; order: typeof asc | typeof desc }[],\n selectFields: Record<string, GenericColumn>,\n joins: BuildQueryJoinAliases,\n): GenericColumn | null | SQL.Aliased => {\n if (orderBy.length === 0) {\n return null\n }\n\n if (orderBy[0].column === selectFields['_selected']) {\n return null\n }\n\n if (joins.length > 0) {\n return orderBy[0].column\n }\n\n return max(orderBy[0]?.column).as('_order')\n}\n\nexport const findDistinct: FindDistinct = async function (this: DrizzleAdapter, args) {\n const collectionConfig: SanitizedCollectionConfig =\n this.payload.collections[args.collection].config\n const page = args.page || 1\n const offset = args.limit ? (page - 1) * args.limit : undefined\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n // Same predicate a list read gets: distinct values describe the visible documents.\n const branchReadState = resolveBranchReadState({\n branch: args.branch,\n collectionSlug: args.collection,\n req: args.req,\n })\n const branchScopedWhere = branchReadState.useBranching\n ? rewriteBranchIDs(args.where)\n : await resolveBranchQuery({\n branch: args.branch,\n collectionSlug: args.collection,\n req: args.req,\n where: args.where,\n })\n\n const relatedBranchConstraints: Where[] = []\n const fieldPaths = getLocalizedPaths({\n collectionSlug: args.collection,\n fields: collectionConfig.flattenedFields,\n incomingPath: args.field,\n locale: args.locale,\n overrideAccess: true,\n payload: this.payload,\n })\n\n for (let pathIndex = 1; pathIndex < fieldPaths.length; pathIndex++) {\n const relatedCollectionSlug = fieldPaths[pathIndex]?.collectionSlug\n\n if (!relatedCollectionSlug) {\n continue\n }\n\n const relationshipPath = fieldPaths\n .slice(0, pathIndex)\n .map(({ path }) => path)\n .join('.')\n const relatedBranchReadState = resolveBranchReadState({\n branch: args.branch,\n collectionSlug: relatedCollectionSlug,\n req: args.req,\n })\n const relatedWhere = relatedBranchReadState.useBranching\n ? rewriteBranchIDs(args.relatedAccess?.[relationshipPath])\n : await resolveBranchQuery({\n branch: args.branch,\n collectionSlug: relatedCollectionSlug,\n req: args.req,\n where: args.relatedAccess?.[relationshipPath],\n })\n\n if (relatedWhere && Object.keys(relatedWhere).length) {\n relatedBranchConstraints.push(\n prefixWherePaths({ prefix: relationshipPath, where: relatedWhere }),\n )\n }\n }\n\n const queryReq =\n args.req && args.branch !== undefined\n ? {\n ...args.req,\n branch: args.branch === false ? args.req.branch : args.branch,\n context: {\n ...args.req.context,\n ...(args.branch === false ? { _branchBypass: true } : {}),\n },\n }\n : args.req\n\n if (queryReq && queryReq !== args.req) {\n resetBranchState({ req: queryReq as PayloadRequest })\n }\n\n const {\n joins,\n orderBy,\n selectFields,\n where: queryWhere,\n } = buildQuery({\n adapter: this,\n fields: collectionConfig.flattenedFields,\n locale: args.locale,\n req: queryReq,\n sort: args.sort ?? args.field,\n tableName,\n where: {\n and: [\n {\n [args.field]: {\n equals: DistinctSymbol,\n },\n },\n branchScopedWhere ?? {},\n ...relatedBranchConstraints,\n ],\n },\n })\n\n orderBy.pop()\n const table = this.tables[tableName]\n const canonicalIDExpression =\n branchReadState.useBranching && args.field === 'id'\n ? sql`COALESCE(${table._branchDocID}, ${table.id})`\n : undefined\n\n if (canonicalIDExpression) {\n selectFields['_selected'] = canonicalIDExpression.as('_selected') as unknown as GenericColumn\n }\n\n const branchVisibilityWhere = branchReadState.useBranching\n ? buildBranchVisibility({\n adapter: this,\n branch: branchReadState.branch,\n collectionSlug: args.collection,\n table,\n })\n : undefined\n const where = and(queryWhere, branchVisibilityWhere)\n\n const db = await getTransaction(this, args.req)\n\n const _order = canonicalIDExpression ? null : getOrderColumn(orderBy, selectFields, joins)\n const firstSort = Array.isArray(args.sort) ? args.sort[0] : args.sort\n const canonicalIDOrder = firstSort?.startsWith('-') ? desc : asc\n\n const selectDistinctResult = await selectDistinct({\n adapter: this,\n db,\n forceRun: true,\n hasAggregates: Boolean(_order) && !joins.length,\n joins,\n query: ({ query }) => {\n if (canonicalIDExpression) {\n query = query.orderBy(canonicalIDOrder(sql`_selected`))\n } else if (_order && orderBy.length > 0 && !joins.length) {\n query = query.orderBy(orderBy[0].order(sql`_order`))\n } else {\n query = query.orderBy(() => orderBy.map(({ column, order }) => order(column)))\n }\n\n if (args.limit) {\n if (offset) {\n query = query.offset(offset)\n }\n\n query = query.limit(args.limit)\n }\n\n return query\n },\n selectFields: {\n _selected: selectFields['_selected'],\n ...(_order ? { _order } : {}),\n } as Record<string, any>,\n tableName,\n where,\n })\n\n const field = getFieldByPath({\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n includeRelationships: true,\n path: args.field,\n })?.field\n\n if (field && 'relationTo' in field && Array.isArray(field.relationTo)) {\n for (const row of selectDistinctResult as any) {\n const json = JSON.parse(row._selected)\n const relationTo = Object.keys(json).find((each) => Boolean(json[each]))\n const value = json[relationTo]\n\n if (!value) {\n row._selected = null\n } else {\n row._selected = { relationTo, value }\n }\n }\n }\n\n const values = selectDistinctResult.map((each) => ({\n [args.field]: (each as Record<string, any>)._selected,\n }))\n\n if (args.limit) {\n const totalDocs = await this.countDistinct({\n column: (canonicalIDExpression ?? selectFields['_selected']) as GenericColumn,\n db,\n joins,\n tableName,\n where,\n })\n\n const totalPages = Math.ceil(totalDocs / args.limit)\n const hasPrevPage = page > 1\n const hasNextPage = totalPages > page\n const pagingCounter = (page - 1) * args.limit + 1\n\n return {\n hasNextPage,\n hasPrevPage,\n limit: args.limit,\n nextPage: hasNextPage ? page + 1 : null,\n page,\n pagingCounter,\n prevPage: hasPrevPage ? page - 1 : null,\n totalDocs,\n totalPages,\n values,\n }\n }\n\n return {\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n page: 1,\n pagingCounter: 1,\n totalDocs: values.length,\n totalPages: 1,\n values,\n }\n}\n"],"names":["and","asc","desc","max","sql","getFieldByPath","getLocalizedPaths","resetBranchState","resolveBranchQuery","resolveBranchReadState","rewriteBranchIDs","toSnakeCase","buildBranchVisibility","buildQuery","selectDistinct","getTransaction","DistinctSymbol","prefixWherePaths","prefix","where","prefixedWhere","key","value","Object","entries","includes","toLowerCase","Array","isArray","map","nestedWhere","getOrderColumn","orderBy","selectFields","joins","length","column","as","findDistinct","args","collectionConfig","payload","collections","collection","config","page","offset","limit","undefined","tableName","tableNameMap","get","slug","branchReadState","branch","collectionSlug","req","branchScopedWhere","useBranching","relatedBranchConstraints","fieldPaths","fields","flattenedFields","incomingPath","field","locale","overrideAccess","pathIndex","relatedCollectionSlug","relationshipPath","slice","path","join","relatedBranchReadState","relatedWhere","relatedAccess","keys","push","queryReq","context","_branchBypass","queryWhere","adapter","sort","equals","pop","table","tables","canonicalIDExpression","_branchDocID","id","branchVisibilityWhere","db","_order","firstSort","canonicalIDOrder","startsWith","selectDistinctResult","forceRun","hasAggregates","Boolean","query","order","_selected","includeRelationships","relationTo","row","json","JSON","parse","find","each","values","totalDocs","countDistinct","totalPages","Math","ceil","hasPrevPage","hasNextPage","pagingCounter","nextPage","prevPage"],"mappings":"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"}
|
package/dist/findGlobal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findGlobal.d.ts","sourceRoot":"","sources":["../src/findGlobal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"findGlobal.d.ts","sourceRoot":"","sources":["../src/findGlobal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAezC,eAAO,MAAM,UAAU,EAAE,UAgCxB,CAAA"}
|
package/dist/findGlobal.js
CHANGED
|
@@ -1,19 +1,38 @@
|
|
|
1
|
+
import { branchGlobalNeedsBothRows, pickBranchGlobal, resolveBranch, resolveBranchGlobalQuery, withBranchGlobalSelect } from 'payload';
|
|
1
2
|
import toSnakeCase from 'to-snake-case';
|
|
2
3
|
import { findMany } from './find/findMany.js';
|
|
3
|
-
export const findGlobal = async function findGlobal({ slug, locale, req, select, where }) {
|
|
4
|
+
export const findGlobal = async function findGlobal({ slug, branch, locale, req, select, where }) {
|
|
4
5
|
const globalConfig = this.payload.globals.config.find((config)=>config.slug === slug);
|
|
5
6
|
const tableName = this.tableNameMap.get(toSnakeCase(globalConfig.slug));
|
|
6
|
-
const
|
|
7
|
+
const needsBoth = branchGlobalNeedsBothRows({
|
|
8
|
+
branch,
|
|
9
|
+
globalSlug: slug,
|
|
10
|
+
req
|
|
11
|
+
});
|
|
12
|
+
const { docs } = await findMany({
|
|
7
13
|
adapter: this,
|
|
8
14
|
fields: globalConfig.flattenedFields,
|
|
9
|
-
limit: 1,
|
|
15
|
+
limit: needsBoth ? 2 : 1,
|
|
10
16
|
locale,
|
|
11
17
|
pagination: false,
|
|
12
18
|
req,
|
|
13
|
-
select
|
|
19
|
+
select: withBranchGlobalSelect({
|
|
20
|
+
branch,
|
|
21
|
+
globalSlug: slug,
|
|
22
|
+
req,
|
|
23
|
+
select
|
|
24
|
+
}),
|
|
14
25
|
tableName,
|
|
15
|
-
where
|
|
26
|
+
where: resolveBranchGlobalQuery({
|
|
27
|
+
branch,
|
|
28
|
+
globalSlug: slug,
|
|
29
|
+
req,
|
|
30
|
+
where
|
|
31
|
+
})
|
|
16
32
|
});
|
|
33
|
+
const doc = needsBoth ? pickBranchGlobal(docs, branch || resolveBranch({
|
|
34
|
+
req: req
|
|
35
|
+
})) : docs[0];
|
|
17
36
|
if (doc) {
|
|
18
37
|
doc.globalType = slug;
|
|
19
38
|
return doc;
|
package/dist/findGlobal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/findGlobal.ts"],"sourcesContent":["import type { FindGlobal } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const findGlobal: FindGlobal = async function findGlobal(\n this: DrizzleAdapter,\n { slug, locale, req, select, where },\n) {\n const globalConfig = this.payload.globals.config.find((config) => config.slug === slug)\n\n const tableName = this.tableNameMap.get(toSnakeCase(globalConfig.slug))\n\n const {\n
|
|
1
|
+
{"version":3,"sources":["../src/findGlobal.ts"],"sourcesContent":["import type { FindGlobal } from 'payload'\n\nimport {\n branchGlobalNeedsBothRows,\n pickBranchGlobal,\n resolveBranch,\n resolveBranchGlobalQuery,\n withBranchGlobalSelect,\n} from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const findGlobal: FindGlobal = async function findGlobal(\n this: DrizzleAdapter,\n { slug, branch, locale, req, select, where },\n) {\n const globalConfig = this.payload.globals.config.find((config) => config.slug === slug)\n\n const tableName = this.tableNameMap.get(toSnakeCase(globalConfig.slug))\n\n const needsBoth = branchGlobalNeedsBothRows({ branch, globalSlug: slug, req })\n\n const { docs } = await findMany({\n adapter: this,\n fields: globalConfig.flattenedFields,\n limit: needsBoth ? 2 : 1,\n locale,\n pagination: false,\n req,\n select: withBranchGlobalSelect({ branch, globalSlug: slug, req, select }),\n tableName,\n where: resolveBranchGlobalQuery({ branch, globalSlug: slug, req, where }),\n })\n\n const doc = needsBoth\n ? pickBranchGlobal(docs, (branch as string) || resolveBranch({ req: req as never }))\n : docs[0]\n\n if (doc) {\n doc.globalType = slug\n return doc\n }\n\n return {}\n}\n"],"names":["branchGlobalNeedsBothRows","pickBranchGlobal","resolveBranch","resolveBranchGlobalQuery","withBranchGlobalSelect","toSnakeCase","findMany","findGlobal","slug","branch","locale","req","select","where","globalConfig","payload","globals","config","find","tableName","tableNameMap","get","needsBoth","globalSlug","docs","adapter","fields","flattenedFields","limit","pagination","doc","globalType"],"mappings":"AAEA,SACEA,yBAAyB,EACzBC,gBAAgB,EAChBC,aAAa,EACbC,wBAAwB,EACxBC,sBAAsB,QACjB,UAAS;AAChB,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,aAAyB,eAAeA,WAEnD,EAAEC,IAAI,EAAEC,MAAM,EAAEC,MAAM,EAAEC,GAAG,EAAEC,MAAM,EAAEC,KAAK,EAAE;IAE5C,MAAMC,eAAe,IAAI,CAACC,OAAO,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAACD,SAAWA,OAAOT,IAAI,KAAKA;IAElF,MAAMW,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAAChB,YAAYS,aAAaN,IAAI;IAErE,MAAMc,YAAYtB,0BAA0B;QAAES;QAAQc,YAAYf;QAAMG;IAAI;IAE5E,MAAM,EAAEa,IAAI,EAAE,GAAG,MAAMlB,SAAS;QAC9BmB,SAAS,IAAI;QACbC,QAAQZ,aAAaa,eAAe;QACpCC,OAAON,YAAY,IAAI;QACvBZ;QACAmB,YAAY;QACZlB;QACAC,QAAQR,uBAAuB;YAAEK;YAAQc,YAAYf;YAAMG;YAAKC;QAAO;QACvEO;QACAN,OAAOV,yBAAyB;YAAEM;YAAQc,YAAYf;YAAMG;YAAKE;QAAM;IACzE;IAEA,MAAMiB,MAAMR,YACRrB,iBAAiBuB,MAAM,AAACf,UAAqBP,cAAc;QAAES,KAAKA;IAAa,MAC/Ea,IAAI,CAAC,EAAE;IAEX,IAAIM,KAAK;QACPA,IAAIC,UAAU,GAAGvB;QACjB,OAAOsB;IACT;IAEA,OAAO,CAAC;AACV,EAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { buildVersionGlobalFields } from 'payload';
|
|
1
|
+
import { buildVersionGlobalFields, resolveBranchGlobalVersionQuery } from 'payload';
|
|
2
2
|
import toSnakeCase from 'to-snake-case';
|
|
3
3
|
import { findMany } from './find/findMany.js';
|
|
4
|
-
export const findGlobalVersions = async function findGlobalVersions({ global, limit, locale, page, pagination, req, select, sort: sortArg, where }) {
|
|
4
|
+
export const findGlobalVersions = async function findGlobalVersions({ branch, global, limit, locale, page, pagination, req, select, sort: sortArg, where }) {
|
|
5
5
|
const globalConfig = this.payload.globals.config.find(({ slug })=>slug === global);
|
|
6
6
|
const sort = sortArg !== undefined && sortArg !== null ? sortArg : '-createdAt';
|
|
7
7
|
const tableName = this.tableNameMap.get(`_${toSnakeCase(globalConfig.slug)}${this.versionsSuffix}`);
|
|
@@ -17,7 +17,12 @@ export const findGlobalVersions = async function findGlobalVersions({ global, li
|
|
|
17
17
|
select,
|
|
18
18
|
sort,
|
|
19
19
|
tableName,
|
|
20
|
-
where
|
|
20
|
+
where: resolveBranchGlobalVersionQuery({
|
|
21
|
+
branch,
|
|
22
|
+
globalSlug: global,
|
|
23
|
+
req,
|
|
24
|
+
where
|
|
25
|
+
})
|
|
21
26
|
});
|
|
22
27
|
};
|
|
23
28
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/findGlobalVersions.ts"],"sourcesContent":["import type { FindGlobalVersions, SanitizedGlobalConfig } from 'payload'\n\nimport { buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const findGlobalVersions: FindGlobalVersions = async function findGlobalVersions(\n this: DrizzleAdapter,\n { global, limit, locale, page, pagination, req, select, sort: sortArg, where },\n) {\n const globalConfig: SanitizedGlobalConfig = this.payload.globals.config.find(\n ({ slug }) => slug === global,\n )\n const sort = sortArg !== undefined && sortArg !== null ? sortArg : '-createdAt'\n\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(globalConfig.slug)}${this.versionsSuffix}`,\n )\n\n const fields = buildVersionGlobalFields(this.payload.config, globalConfig, true)\n\n return findMany({\n adapter: this,\n fields,\n limit,\n locale,\n page,\n pagination,\n req,\n select,\n sort,\n tableName,\n where,\n })\n}\n"],"names":["buildVersionGlobalFields","toSnakeCase","findMany","findGlobalVersions","global","limit","locale","page","pagination","req","select","sort","sortArg","where","globalConfig","payload","globals","config","find","slug","undefined","tableName","tableNameMap","get","versionsSuffix","fields","adapter"],"mappings":"AAEA,SAASA,wBAAwB,QAAQ,UAAS;
|
|
1
|
+
{"version":3,"sources":["../src/findGlobalVersions.ts"],"sourcesContent":["import type { FindGlobalVersions, SanitizedGlobalConfig } from 'payload'\n\nimport { buildVersionGlobalFields, resolveBranchGlobalVersionQuery } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const findGlobalVersions: FindGlobalVersions = async function findGlobalVersions(\n this: DrizzleAdapter,\n { branch, global, limit, locale, page, pagination, req, select, sort: sortArg, where },\n) {\n const globalConfig: SanitizedGlobalConfig = this.payload.globals.config.find(\n ({ slug }) => slug === global,\n )\n const sort = sortArg !== undefined && sortArg !== null ? sortArg : '-createdAt'\n\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(globalConfig.slug)}${this.versionsSuffix}`,\n )\n\n const fields = buildVersionGlobalFields(this.payload.config, globalConfig, true)\n\n return findMany({\n adapter: this,\n fields,\n limit,\n locale,\n page,\n pagination,\n req,\n select,\n sort,\n tableName,\n where: resolveBranchGlobalVersionQuery({ branch, globalSlug: global, req, where }),\n })\n}\n"],"names":["buildVersionGlobalFields","resolveBranchGlobalVersionQuery","toSnakeCase","findMany","findGlobalVersions","branch","global","limit","locale","page","pagination","req","select","sort","sortArg","where","globalConfig","payload","globals","config","find","slug","undefined","tableName","tableNameMap","get","versionsSuffix","fields","adapter","globalSlug"],"mappings":"AAEA,SAASA,wBAAwB,EAAEC,+BAA+B,QAAQ,UAAS;AACnF,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,qBAAyC,eAAeA,mBAEnE,EAAEC,MAAM,EAAEC,MAAM,EAAEC,KAAK,EAAEC,MAAM,EAAEC,IAAI,EAAEC,UAAU,EAAEC,GAAG,EAAEC,MAAM,EAAEC,MAAMC,OAAO,EAAEC,KAAK,EAAE;IAEtF,MAAMC,eAAsC,IAAI,CAACC,OAAO,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAC1E,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASf;IAEzB,MAAMO,OAAOC,YAAYQ,aAAaR,YAAY,OAAOA,UAAU;IAEnE,MAAMS,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAEvB,YAAYc,aAAaK,IAAI,IAAI,IAAI,CAACK,cAAc,EAAE;IAG5D,MAAMC,SAAS3B,yBAAyB,IAAI,CAACiB,OAAO,CAACE,MAAM,EAAEH,cAAc;IAE3E,OAAOb,SAAS;QACdyB,SAAS,IAAI;QACbD;QACApB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAU;QACAR,OAAOd,gCAAgC;YAAEI;YAAQwB,YAAYvB;YAAQK;YAAKI;QAAM;IAClF;AACF,EAAC"}
|