@payloadcms/drizzle 4.0.0-internal.e55ccef → 4.0.0-internal.f05c47f

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.
Files changed (68) hide show
  1. package/dist/count.d.ts.map +1 -1
  2. package/dist/count.js +8 -2
  3. package/dist/count.js.map +1 -1
  4. package/dist/createGlobalVersion.d.ts.map +1 -1
  5. package/dist/createGlobalVersion.js +15 -2
  6. package/dist/createGlobalVersion.js.map +1 -1
  7. package/dist/createTableName.d.ts.map +1 -1
  8. package/dist/createTableName.js +2 -7
  9. package/dist/createTableName.js.map +1 -1
  10. package/dist/createVersion.d.ts.map +1 -1
  11. package/dist/createVersion.js +12 -1
  12. package/dist/createVersion.js.map +1 -1
  13. package/dist/deleteOne.d.ts.map +1 -1
  14. package/dist/deleteOne.js +18 -1
  15. package/dist/deleteOne.js.map +1 -1
  16. package/dist/find/buildFindManyArgs.d.ts +3 -2
  17. package/dist/find/buildFindManyArgs.d.ts.map +1 -1
  18. package/dist/find/buildFindManyArgs.js +2 -1
  19. package/dist/find/buildFindManyArgs.js.map +1 -1
  20. package/dist/find/findMany.d.ts.map +1 -1
  21. package/dist/find/findMany.js +1 -0
  22. package/dist/find/findMany.js.map +1 -1
  23. package/dist/find/traverseFields.d.ts +3 -2
  24. package/dist/find/traverseFields.d.ts.map +1 -1
  25. package/dist/find/traverseFields.js +25 -2
  26. package/dist/find/traverseFields.js.map +1 -1
  27. package/dist/find.d.ts.map +1 -1
  28. package/dist/find.js +17 -3
  29. package/dist/find.js.map +1 -1
  30. package/dist/findGlobal.d.ts.map +1 -1
  31. package/dist/findGlobal.js +16 -4
  32. package/dist/findGlobal.js.map +1 -1
  33. package/dist/findGlobalVersions.js +8 -3
  34. package/dist/findGlobalVersions.js.map +1 -1
  35. package/dist/findOne.d.ts +1 -1
  36. package/dist/findOne.d.ts.map +1 -1
  37. package/dist/findOne.js +15 -2
  38. package/dist/findOne.js.map +1 -1
  39. package/dist/queryDrafts.d.ts.map +1 -1
  40. package/dist/queryDrafts.js +10 -3
  41. package/dist/queryDrafts.js.map +1 -1
  42. package/dist/schema/build.d.ts.map +1 -1
  43. package/dist/schema/build.js +5 -4
  44. package/dist/schema/build.js.map +1 -1
  45. package/dist/schema/buildRawSchema.spec.js +230 -0
  46. package/dist/schema/buildRawSchema.spec.js.map +1 -0
  47. package/dist/schema/traverseFields.js +5 -5
  48. package/dist/schema/traverseFields.js.map +1 -1
  49. package/dist/updateGlobal.d.ts +1 -1
  50. package/dist/updateGlobal.d.ts.map +1 -1
  51. package/dist/updateGlobal.js +30 -3
  52. package/dist/updateGlobal.js.map +1 -1
  53. package/dist/updateJobs.d.ts.map +1 -1
  54. package/dist/updateJobs.js +37 -0
  55. package/dist/updateJobs.js.map +1 -1
  56. package/dist/updateOne.d.ts.map +1 -1
  57. package/dist/updateOne.js +8 -2
  58. package/dist/updateOne.js.map +1 -1
  59. package/dist/utilities/validateExistingBlockIsIdentical.d.ts +1 -5
  60. package/dist/utilities/validateExistingBlockIsIdentical.d.ts.map +1 -1
  61. package/dist/utilities/validateExistingBlockIsIdentical.js.map +1 -1
  62. package/dist/utilities/validateIdentifierLength.d.ts +7 -0
  63. package/dist/utilities/validateIdentifierLength.d.ts.map +1 -0
  64. package/dist/utilities/validateIdentifierLength.js +14 -0
  65. package/dist/utilities/validateIdentifierLength.js.map +1 -0
  66. package/dist/utilities/validateIdentifierLength.spec.js +19 -0
  67. package/dist/utilities/validateIdentifierLength.spec.js.map +1 -0
  68. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/find/traverseFields.ts"],"sourcesContent":["import type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { SQLiteSelect, SQLiteSelectBase } from 'drizzle-orm/sqlite-core'\n\nimport { and, asc, count, desc, eq, getTableName, or, sql } from 'drizzle-orm'\nimport {\n appendVersionToQueryKey,\n buildVersionCollectionFields,\n combineQueries,\n type FlattenedField,\n getFieldByPath,\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 { operatorMap } from '../queries/operatorMap.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 { sanitizePathSegment } from '../utilities/sanitizePathSegment.js'\nimport {\n InternalBlockTableNameIndex,\n resolveBlockTableName,\n} from '../utilities/validateExistingBlockIsIdentical.js'\n\nconst flattenAllWherePaths = (where: Where, paths: { path: string; ref: any }[]) => {\n for (const k in where) {\n if (['AND', 'OR'].includes(k.toUpperCase())) {\n if (Array.isArray(where[k])) {\n for (const whereField of where[k]) {\n flattenAllWherePaths(whereField, paths)\n }\n }\n } else {\n // TODO: explore how to support arrays/relationship querying.\n paths.push({ path: k.split('.').join('_'), ref: where })\n }\n }\n}\n\nconst buildSQLWhere = (where: Where, alias: string) => {\n for (const k in where) {\n if (['AND', 'OR'].includes(k.toUpperCase())) {\n if (Array.isArray(where[k])) {\n const op = 'AND' === k.toUpperCase() ? and : or\n const accumulated = []\n for (const whereField of where[k]) {\n accumulated.push(buildSQLWhere(whereField, alias))\n }\n return op(...accumulated)\n }\n } else {\n let payloadOperator = Object.keys(where[k])[0]\n\n const value = where[k][payloadOperator]\n if (payloadOperator === '$raw') {\n if (typeof value !== 'string') {\n return undefined\n }\n return sql.raw(value)\n }\n\n // Handle exists: false -> use isNull instead of isNotNull\n\n // This logic is duplicated from sanitizeQueryValue.ts because buildSQLWhere\n // is a simplified WHERE builder for polymorphic joins that doesn't have access\n // to field definitions needed by sanitizeQueryValue\n if (payloadOperator === 'exists' && value === false) {\n payloadOperator = 'isNull'\n }\n\n if (!(payloadOperator in operatorMap)) {\n return undefined\n }\n\n const sanitizedColumnName = k\n .split('.')\n .map((s) => sanitizePathSegment(s))\n .join('_')\n\n return operatorMap[payloadOperator](sql.raw(`\"${alias}\".\"${sanitizedColumnName}\"`), value)\n }\n }\n}\n\ntype SQLSelect = SQLiteSelectBase<any, any, any, any>\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 const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const db = adapter.drizzle as LibSQLDatabase\n\n if (Array.isArray(field.collection)) {\n let currentQuery: null | SQLSelect = null\n const onPath = field.on.split('.').join('_')\n\n if (Array.isArray(sort)) {\n throw new Error('Not implemented')\n }\n\n let sanitizedSort = sort\n\n if (!sanitizedSort) {\n if (\n field.collection.some((collection) =>\n adapter.payload.collections[collection].config.fields.some(\n (f) => f.type === 'date' && f.name === 'createdAt',\n ),\n )\n ) {\n sanitizedSort = '-createdAt'\n } else {\n sanitizedSort = 'id'\n }\n }\n\n const sortOrder = sanitizedSort.startsWith('-') ? desc : asc\n sanitizedSort = sanitizedSort.replace('-', '')\n\n const sortPath = sanitizedSort.split('.').join('_')\n\n const wherePaths: { path: string; ref: any }[] = []\n\n if (where) {\n flattenAllWherePaths(where, wherePaths)\n }\n\n for (const collection of field.collection) {\n const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(collection))\n\n const table = adapter.tables[joinCollectionTableName]\n\n const sortColumn = table[sortPath]\n\n const selectFields = {\n id: adapter.tables[joinCollectionTableName].id,\n parent: sql`${adapter.tables[joinCollectionTableName][onPath]}`.as(onPath),\n relationTo: sql`${collection}`.as('relationTo'),\n sortPath: sql`${sortColumn ? sortColumn : null}`.as('sortPath'),\n }\n\n const collectionQueryWhere: any[] = []\n // Select for WHERE and Fallback NULL\n for (const { path, ref } of wherePaths) {\n const collectioConfig = adapter.payload.collections[collection].config\n const field = getFieldByPath({ fields: collectioConfig.flattenedFields, path })\n\n if (field && field.field.type === 'select' && field.field.hasMany) {\n let tableName = adapter.tableNameMap.get(\n `${toSnakeCase(collection)}_${toSnakeCase(path)}`,\n )\n let parentTable = getTableName(table)\n\n if (adapter.schemaName) {\n tableName = `\"${adapter.schemaName}\".\"${tableName}\"`\n parentTable = `\"${adapter.schemaName}\".\"${parentTable}\"`\n }\n\n if (adapter.name === 'postgres') {\n selectFields[path] = sql\n .raw(\n `(select jsonb_agg(${tableName}.value) from ${tableName} where ${tableName}.parent_id = ${parentTable}.id)`,\n )\n .as(path)\n } else {\n selectFields[path] = sql\n .raw(\n `(select json_group_array(${tableName}.value) from ${tableName} where ${tableName}.parent_id = ${parentTable}.id)`,\n )\n .as(path)\n }\n\n const constraint = ref[path]\n const operator = Object.keys(constraint)[0]\n const value: any = Object.values(constraint)[0]\n\n const query = adapter.createJSONQuery({\n column: `\"${path}\"`,\n operator,\n pathSegments: [field.field.name],\n table: parentTable,\n value,\n })\n ref[path] = { $raw: query }\n } else if (adapter.tables[joinCollectionTableName][path]) {\n selectFields[path] = sql`${adapter.tables[joinCollectionTableName][path]}`.as(path)\n // Allow to filter by collectionSlug\n } else if (path !== 'relationTo') {\n // For timestamp fields like deletedAt, we need to cast to timestamp in Postgres\n // SQLite doesn't require explicit type casting for UNION queries\n if (path === 'deletedAt' && adapter.name === 'postgres') {\n selectFields[path] = sql`null::timestamp with time zone`.as(path)\n } else {\n selectFields[path] = sql`null`.as(path)\n }\n }\n }\n\n let query: any = db.select(selectFields).from(adapter.tables[joinCollectionTableName])\n if (collectionQueryWhere.length) {\n query = query.where(and(...collectionQueryWhere))\n }\n if (currentQuery === null) {\n currentQuery = query as unknown as SQLSelect\n } else {\n currentQuery = currentQuery.unionAll(query) as SQLSelect\n }\n }\n\n const subQueryAlias = `${columnName}_subquery`\n\n let sqlWhere = eq(\n sql.raw(`\"${currentTableName}\".\"id\"`),\n sql.raw(`\"${subQueryAlias}\".\"${onPath}\"`),\n )\n\n if (where && Object.keys(where).length > 0) {\n sqlWhere = and(sqlWhere, buildSQLWhere(where, subQueryAlias))\n }\n\n if (shouldCount) {\n currentArgs.extras[`${columnName}_count`] = sql`${db\n .select({ count: count() })\n .from(sql`${currentQuery.as(subQueryAlias)}`)\n .where(sqlWhere)}`.as(`${columnName}_count`)\n }\n\n currentQuery = currentQuery.orderBy(sortOrder(sql`\"sortPath\"`)) as SQLSelect\n\n const sortedUnionAlias = `${columnName}_sorted`\n\n let limitOffsetSQL = sql.empty()\n if (limit) {\n limitOffsetSQL = sql` LIMIT ${limit}`\n }\n if (page && limit !== 0) {\n const offset = (page - 1) * limit\n if (offset > 0) {\n limitOffsetSQL = sql`${limitOffsetSQL} OFFSET ${offset}`\n }\n }\n\n // Correlate to parent row + apply any join where filters\n let innerWhere = sql.raw(`\"${sortedUnionAlias}\".\"${onPath}\" = \"${currentTableName}\".\"id\"`)\n if (where && Object.keys(where).length > 0) {\n const additionalWhere = buildSQLWhere(where, sortedUnionAlias)\n innerWhere = sql`${innerWhere} AND ${additionalWhere}`\n }\n\n // IMPORTANT: For polymorphic joins, LIMIT must be applied AFTER correlating to the parent row.\n // Otherwise, the limit applies globally across ALL parents, not per-parent.\n currentArgs.extras[columnName] = sql`(\n SELECT ${jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".\"id\"`),\n relationTo: sql.raw(`\"${subQueryAlias}\".\"relationTo\"`),\n })}\n FROM (\n SELECT * FROM ${sql`${currentQuery.as(sortedUnionAlias)}`}\n WHERE ${innerWhere}${limitOffsetSQL}\n ) AS ${sql.raw(`\"${subQueryAlias}\"`)}\n )`.as(columnName)\n } else {\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":["and","asc","count","desc","eq","getTableName","or","sql","appendVersionToQueryKey","buildVersionCollectionFields","combineQueries","getFieldByPath","getQueryDraftsSort","fieldIsVirtual","fieldShouldBeLocalized","hasDraftsEnabled","toSnakeCase","buildQuery","getTableAlias","operatorMap","getArrayRelationName","getNameFromDrizzleTable","jsonAggBuildObject","rawConstraint","sanitizePathSegment","InternalBlockTableNameIndex","resolveBlockTableName","flattenAllWherePaths","where","paths","k","includes","toUpperCase","Array","isArray","whereField","push","path","split","join","ref","buildSQLWhere","alias","op","accumulated","payloadOperator","Object","keys","value","undefined","raw","sanitizedColumnName","map","s","traverseFields","_locales","adapter","collectionSlug","currentArgs","currentTableName","depth","draftsEnabled","fields","forceWithFields","joinQuery","joins","locale","parentIsLocalized","select","selectAllOnCurrentLevel","selectMode","tablePath","topLevelArgs","topLevelTableName","versions","withTabledFields","forEach","field","isFieldLocalized","type","hasMany","relationTo","with","name","arraySelect","withArray","columns","id","_order","_parentID","orderBy","arrayTableName","tableNameMap","get","tables","_locale","_uuid","arrayTableNameWithLocales","localesSuffix","relationName","tableName","flattenedFields","localized","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","columnName","db","drizzle","collection","currentQuery","onPath","on","Error","sanitizedSort","some","collections","config","f","sortOrder","startsWith","replace","sortPath","wherePaths","joinCollectionTableName","table","sortColumn","selectFields","parent","as","collectionQueryWhere","collectioConfig","parentTable","schemaName","constraint","operator","values","query","createJSONQuery","column","pathSegments","$raw","from","unionAll","subQueryAlias","sqlWhere","extras","sortedUnionAlias","limitOffsetSQL","empty","offset","innerWhere","additionalWhere","useDrafts","versionsSuffix","currentIDColumn","joinQueryWhere","currentIDRaw","targetField","equals","latest","newAliasTable","subQueryWhere","aliasTable","selectLocale","collectionConfig","key","val","pop","order","$dynamic","condition","subQuery","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, SQLiteSelectBase } 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, asc, count, desc, eq, getTableName, or, sql } from 'drizzle-orm'\nimport {\n appendVersionToQueryKey,\n buildVersionCollectionFields,\n combineQueries,\n getBranchPredicateSync,\n getFieldByPath,\n getQueryDraftsSort,\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 { buildQuery } from '../queries/buildQuery.js'\nimport { getTableAlias } from '../queries/getTableAlias.js'\nimport { operatorMap } from '../queries/operatorMap.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 { sanitizePathSegment } from '../utilities/sanitizePathSegment.js'\nimport {\n InternalBlockTableNameIndex,\n resolveBlockTableName,\n} from '../utilities/validateExistingBlockIsIdentical.js'\n\nconst flattenAllWherePaths = (where: Where, paths: { path: string; ref: any }[]) => {\n for (const k in where) {\n if (['AND', 'OR'].includes(k.toUpperCase())) {\n if (Array.isArray(where[k])) {\n for (const whereField of where[k]) {\n flattenAllWherePaths(whereField, paths)\n }\n }\n } else {\n // TODO: explore how to support arrays/relationship querying.\n paths.push({ path: k.split('.').join('_'), ref: where })\n }\n }\n}\n\nconst buildSQLWhere = (where: Where, alias: string) => {\n for (const k in where) {\n if (['AND', 'OR'].includes(k.toUpperCase())) {\n if (Array.isArray(where[k])) {\n const op = 'AND' === k.toUpperCase() ? and : or\n const accumulated = []\n for (const whereField of where[k]) {\n accumulated.push(buildSQLWhere(whereField, alias))\n }\n return op(...accumulated)\n }\n } else {\n let payloadOperator = Object.keys(where[k])[0]\n\n const value = where[k][payloadOperator]\n if (payloadOperator === '$raw') {\n if (typeof value !== 'string') {\n return undefined\n }\n return sql.raw(value)\n }\n\n // Handle exists: false -> use isNull instead of isNotNull\n\n // This logic is duplicated from sanitizeQueryValue.ts because buildSQLWhere\n // is a simplified WHERE builder for polymorphic joins that doesn't have access\n // to field definitions needed by sanitizeQueryValue\n if (payloadOperator === 'exists' && value === false) {\n payloadOperator = 'isNull'\n }\n\n if (!(payloadOperator in operatorMap)) {\n return undefined\n }\n\n const sanitizedColumnName = k\n .split('.')\n .map((s) => sanitizePathSegment(s))\n .join('_')\n\n return operatorMap[payloadOperator](sql.raw(`\"${alias}\".\"${sanitizedColumnName}\"`), value)\n }\n }\n}\n\ntype SQLSelect = SQLiteSelectBase<any, any, any, any>\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 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 const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const db = adapter.drizzle as LibSQLDatabase\n\n if (Array.isArray(field.collection)) {\n let currentQuery: null | SQLSelect = null\n const onPath = field.on.split('.').join('_')\n\n if (Array.isArray(sort)) {\n throw new Error('Not implemented')\n }\n\n let sanitizedSort = sort\n\n if (!sanitizedSort) {\n if (\n field.collection.some((collection) =>\n adapter.payload.collections[collection].config.fields.some(\n (f) => f.type === 'date' && f.name === 'createdAt',\n ),\n )\n ) {\n sanitizedSort = '-createdAt'\n } else {\n sanitizedSort = 'id'\n }\n }\n\n const sortOrder = sanitizedSort.startsWith('-') ? desc : asc\n sanitizedSort = sanitizedSort.replace('-', '')\n\n const sortPath = sanitizedSort.split('.').join('_')\n\n const wherePaths: { path: string; ref: any }[] = []\n\n if (where) {\n flattenAllWherePaths(where, wherePaths)\n }\n\n for (const collection of field.collection) {\n const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(collection))\n\n const table = adapter.tables[joinCollectionTableName]\n\n const sortColumn = table[sortPath]\n\n const selectFields = {\n id: adapter.tables[joinCollectionTableName].id,\n parent: sql`${adapter.tables[joinCollectionTableName][onPath]}`.as(onPath),\n relationTo: sql`${collection}`.as('relationTo'),\n sortPath: sql`${sortColumn ? sortColumn : null}`.as('sortPath'),\n }\n\n const collectionQueryWhere: any[] = []\n // Select for WHERE and Fallback NULL\n for (const { path, ref } of wherePaths) {\n const collectioConfig = adapter.payload.collections[collection].config\n const field = getFieldByPath({ fields: collectioConfig.flattenedFields, path })\n\n if (field && field.field.type === 'select' && field.field.hasMany) {\n let tableName = adapter.tableNameMap.get(\n `${toSnakeCase(collection)}_${toSnakeCase(path)}`,\n )\n let parentTable = getTableName(table)\n\n if (adapter.schemaName) {\n tableName = `\"${adapter.schemaName}\".\"${tableName}\"`\n parentTable = `\"${adapter.schemaName}\".\"${parentTable}\"`\n }\n\n if (adapter.name === 'postgres') {\n selectFields[path] = sql\n .raw(\n `(select jsonb_agg(${tableName}.value) from ${tableName} where ${tableName}.parent_id = ${parentTable}.id)`,\n )\n .as(path)\n } else {\n selectFields[path] = sql\n .raw(\n `(select json_group_array(${tableName}.value) from ${tableName} where ${tableName}.parent_id = ${parentTable}.id)`,\n )\n .as(path)\n }\n\n const constraint = ref[path]\n const operator = Object.keys(constraint)[0]\n const value: any = Object.values(constraint)[0]\n\n const query = adapter.createJSONQuery({\n column: `\"${path}\"`,\n operator,\n pathSegments: [field.field.name],\n table: parentTable,\n value,\n })\n ref[path] = { $raw: query }\n } else if (adapter.tables[joinCollectionTableName][path]) {\n selectFields[path] = sql`${adapter.tables[joinCollectionTableName][path]}`.as(path)\n // Allow to filter by collectionSlug\n } else if (path !== 'relationTo') {\n // For timestamp fields like deletedAt, we need to cast to timestamp in Postgres\n // SQLite doesn't require explicit type casting for UNION queries\n if (path === 'deletedAt' && adapter.name === 'postgres') {\n selectFields[path] = sql`null::timestamp with time zone`.as(path)\n } else {\n selectFields[path] = sql`null`.as(path)\n }\n }\n }\n\n let query: any = db.select(selectFields).from(adapter.tables[joinCollectionTableName])\n if (collectionQueryWhere.length) {\n query = query.where(and(...collectionQueryWhere))\n }\n if (currentQuery === null) {\n currentQuery = query as unknown as SQLSelect\n } else {\n currentQuery = currentQuery.unionAll(query) as SQLSelect\n }\n }\n\n const subQueryAlias = `${columnName}_subquery`\n\n let sqlWhere = eq(\n sql.raw(`\"${currentTableName}\".\"id\"`),\n sql.raw(`\"${subQueryAlias}\".\"${onPath}\"`),\n )\n\n if (where && Object.keys(where).length > 0) {\n sqlWhere = and(sqlWhere, buildSQLWhere(where, subQueryAlias))\n }\n\n if (shouldCount) {\n currentArgs.extras[`${columnName}_count`] = sql`${db\n .select({ count: count() })\n .from(sql`${currentQuery.as(subQueryAlias)}`)\n .where(sqlWhere)}`.as(`${columnName}_count`)\n }\n\n currentQuery = currentQuery.orderBy(sortOrder(sql`\"sortPath\"`)) as SQLSelect\n\n const sortedUnionAlias = `${columnName}_sorted`\n\n let limitOffsetSQL = sql.empty()\n if (limit) {\n limitOffsetSQL = sql` LIMIT ${limit}`\n }\n if (page && limit !== 0) {\n const offset = (page - 1) * limit\n if (offset > 0) {\n limitOffsetSQL = sql`${limitOffsetSQL} OFFSET ${offset}`\n }\n }\n\n // Correlate to parent row + apply any join where filters\n let innerWhere = sql.raw(`\"${sortedUnionAlias}\".\"${onPath}\" = \"${currentTableName}\".\"id\"`)\n if (where && Object.keys(where).length > 0) {\n const additionalWhere = buildSQLWhere(where, sortedUnionAlias)\n innerWhere = sql`${innerWhere} AND ${additionalWhere}`\n }\n\n // IMPORTANT: For polymorphic joins, LIMIT must be applied AFTER correlating to the parent row.\n // Otherwise, the limit applies globally across ALL parents, not per-parent.\n currentArgs.extras[columnName] = sql`(\n SELECT ${jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".\"id\"`),\n relationTo: sql.raw(`\"${subQueryAlias}\".\"relationTo\"`),\n })}\n FROM (\n SELECT * FROM ${sql`${currentQuery.as(sortedUnionAlias)}`}\n WHERE ${innerWhere}${limitOffsetSQL}\n ) AS ${sql.raw(`\"${subQueryAlias}\"`)}\n )`.as(columnName)\n } else {\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 // 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 joinBranchPredicate = getBranchPredicateSync({\n collectionSlug: field.collection,\n req,\n })\n\n if (joinBranchPredicate) {\n joinQueryWhere = { and: [joinQueryWhere, joinBranchPredicate] }\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 // 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 (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(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":["and","asc","count","desc","eq","getTableName","or","sql","appendVersionToQueryKey","buildVersionCollectionFields","combineQueries","getBranchPredicateSync","getFieldByPath","getQueryDraftsSort","fieldIsVirtual","fieldShouldBeLocalized","hasDraftsEnabled","toSnakeCase","buildQuery","getTableAlias","operatorMap","getArrayRelationName","getNameFromDrizzleTable","jsonAggBuildObject","rawConstraint","sanitizePathSegment","InternalBlockTableNameIndex","resolveBlockTableName","flattenAllWherePaths","where","paths","k","includes","toUpperCase","Array","isArray","whereField","push","path","split","join","ref","buildSQLWhere","alias","op","accumulated","payloadOperator","Object","keys","value","undefined","raw","sanitizedColumnName","map","s","traverseFields","_locales","adapter","collectionSlug","currentArgs","currentTableName","depth","draftsEnabled","fields","forceWithFields","joinQuery","joins","locale","parentIsLocalized","req","select","selectAllOnCurrentLevel","selectMode","tablePath","topLevelArgs","topLevelTableName","versions","withTabledFields","forEach","field","isFieldLocalized","type","hasMany","relationTo","with","name","arraySelect","withArray","columns","id","_order","_parentID","orderBy","arrayTableName","tableNameMap","get","tables","_locale","_uuid","arrayTableNameWithLocales","localesSuffix","relationName","tableName","flattenedFields","localized","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","columnName","db","drizzle","collection","currentQuery","onPath","on","Error","sanitizedSort","some","collections","config","f","sortOrder","startsWith","replace","sortPath","wherePaths","joinCollectionTableName","table","sortColumn","selectFields","parent","as","collectionQueryWhere","collectioConfig","parentTable","schemaName","constraint","operator","values","query","createJSONQuery","column","pathSegments","$raw","from","unionAll","subQueryAlias","sqlWhere","extras","sortedUnionAlias","limitOffsetSQL","empty","offset","innerWhere","additionalWhere","useDrafts","versionsSuffix","currentIDColumn","joinQueryWhere","currentIDRaw","targetField","equals","joinBranchPredicate","latest","newAliasTable","subQueryWhere","aliasTable","selectLocale","collectionConfig","key","val","pop","_branchDocID","order","$dynamic","condition","subQuery","countSubquery","result","args","shouldSelect","withSelect","rels","numbers","texts"],"mappings":"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"}
@@ -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;AAQ9D,eAAO,MAAM,IAAI,EAAE,IAqClB,CAAA"}
1
+ {"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../src/find.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAA6B,MAAM,SAAS,CAAA;AAS9D,eAAO,MAAM,IAAI,EAAE,IAsDlB,CAAA"}
package/dist/find.js CHANGED
@@ -1,10 +1,17 @@
1
+ import { applyBranchIDProjection, resolveBranchQuery } 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
- return findMany({
8
+ const branchedWhere = await resolveBranchQuery({
9
+ branch,
10
+ collectionSlug: collectionConfig.slug,
11
+ req,
12
+ where
13
+ });
14
+ const result = await findMany({
8
15
  adapter: this,
9
16
  collectionSlug: collectionConfig.slug,
10
17
  draftsEnabled,
@@ -18,8 +25,15 @@ export const find = async function find({ collection, draftsEnabled, joins, limi
18
25
  select,
19
26
  sort,
20
27
  tableName,
21
- where
28
+ where: branchedWhere
29
+ });
30
+ applyBranchIDProjection({
31
+ branch,
32
+ collectionSlug: collectionConfig.slug,
33
+ docs: result.docs,
34
+ req
22
35
  });
36
+ return result;
23
37
  };
24
38
 
25
39
  //# 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 return findMany({\n adapter: this,\n collectionSlug: collectionConfig.slug,\n draftsEnabled,\n fields: collectionConfig.flattenedFields,\n joins,\n limit,\n locale,\n page,\n pagination,\n req,\n select,\n sort,\n tableName,\n where,\n })\n}\n"],"names":["toSnakeCase","findMany","find","collection","draftsEnabled","joins","limit","locale","page","pagination","req","select","sort","sortArg","where","collectionConfig","payload","collections","config","undefined","defaultSort","tableName","tableNameMap","get","slug","adapter","collectionSlug","fields","flattenedFields"],"mappings":"AAEA,OAAOA,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,OAAa,eAAeA,KAEvC,EACEC,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,CAACvB,YAAYe,iBAAiBS,IAAI;IAEzE,OAAOvB,SAAS;QACdwB,SAAS,IAAI;QACbC,gBAAgBX,iBAAiBS,IAAI;QACrCpB;QACAuB,QAAQZ,iBAAiBa,eAAe;QACxCvB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAS;QACAP;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../src/find.ts"],"sourcesContent":["import type { Find, SanitizedCollectionConfig } from 'payload'\n\nimport { applyBranchIDProjection, resolveBranchQuery } 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 branchedWhere = await resolveBranchQuery({\n branch,\n collectionSlug: collectionConfig.slug,\n req,\n where,\n })\n\n const result = await findMany({\n adapter: this,\n collectionSlug: collectionConfig.slug,\n draftsEnabled,\n fields: collectionConfig.flattenedFields,\n joins,\n limit,\n locale,\n page,\n pagination,\n req,\n 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","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","branchedWhere","collectionSlug","result","adapter","fields","flattenedFields","docs"],"mappings":"AAEA,SAASA,uBAAuB,EAAEC,kBAAkB,QAAQ,UAAS;AACrE,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,gBAAgB,MAAM3B,mBAAmB;QAC7CI;QACAwB,gBAAgBX,iBAAiBS,IAAI;QACrCd;QACAI;IACF;IAEA,MAAMa,SAAS,MAAM3B,SAAS;QAC5B4B,SAAS,IAAI;QACbF,gBAAgBX,iBAAiBS,IAAI;QACrCpB;QACAyB,QAAQd,iBAAiBe,eAAe;QACxCzB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAS;QACAP,OAAOW;IACT;IAEA5B,wBAAwB;QACtBK;QACAwB,gBAAgBX,iBAAiBS,IAAI;QACrCO,MAAMJ,OAAOI,IAAI;QACjBrB;IACF;IAEA,OAAOiB;AACT,EAAC"}
@@ -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;AAQzC,eAAO,MAAM,UAAU,EAAE,UA4BxB,CAAA"}
1
+ {"version":3,"file":"findGlobal.d.ts","sourceRoot":"","sources":["../src/findGlobal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAczC,eAAO,MAAM,UAAU,EAAE,UAgCxB,CAAA"}
@@ -1,19 +1,31 @@
1
+ import { branchGlobalNeedsBothRows, pickBranchGlobal, resolveBranch, resolveBranchGlobalQuery } 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 { docs: [doc] } = await findMany({
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
19
  select,
14
20
  tableName,
15
- where
21
+ where: resolveBranchGlobalQuery({
22
+ branch,
23
+ globalSlug: slug,
24
+ req,
25
+ where
26
+ })
16
27
  });
28
+ const doc = needsBoth ? pickBranchGlobal(docs, branch || resolveBranch(req)) : docs[0];
17
29
  if (doc) {
18
30
  doc.globalType = slug;
19
31
  return doc;
@@ -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 docs: [doc],\n } = await findMany({\n adapter: this,\n fields: globalConfig.flattenedFields,\n limit: 1,\n locale,\n pagination: false,\n req,\n select,\n tableName,\n where,\n })\n\n if (doc) {\n doc.globalType = slug\n return doc\n }\n\n return {}\n}\n"],"names":["toSnakeCase","findMany","findGlobal","slug","locale","req","select","where","globalConfig","payload","globals","config","find","tableName","tableNameMap","get","docs","doc","adapter","fields","flattenedFields","limit","pagination","globalType"],"mappings":"AAEA,OAAOA,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,aAAyB,eAAeA,WAEnD,EAAEC,IAAI,EAAEC,MAAM,EAAEC,GAAG,EAAEC,MAAM,EAAEC,KAAK,EAAE;IAEpC,MAAMC,eAAe,IAAI,CAACC,OAAO,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAACD,SAAWA,OAAOR,IAAI,KAAKA;IAElF,MAAMU,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACf,YAAYQ,aAAaL,IAAI;IAErE,MAAM,EACJa,MAAM,CAACC,IAAI,EACZ,GAAG,MAAMhB,SAAS;QACjBiB,SAAS,IAAI;QACbC,QAAQX,aAAaY,eAAe;QACpCC,OAAO;QACPjB;QACAkB,YAAY;QACZjB;QACAC;QACAO;QACAN;IACF;IAEA,IAAIU,KAAK;QACPA,IAAIM,UAAU,GAAGpB;QACjB,OAAOc;IACT;IAEA,OAAO,CAAC;AACV,EAAC"}
1
+ {"version":3,"sources":["../src/findGlobal.ts"],"sourcesContent":["import type { FindGlobal } from 'payload'\n\nimport {\n branchGlobalNeedsBothRows,\n pickBranchGlobal,\n resolveBranch,\n resolveBranchGlobalQuery,\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,\n tableName,\n where: resolveBranchGlobalQuery({ branch, globalSlug: slug, req, where }),\n })\n\n const doc = needsBoth\n ? pickBranchGlobal(docs, (branch as string) || resolveBranch(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","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,QACnB,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,YAAYrB,0BAA0B;QAAEQ;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;QACAO;QACAN,OAAOT,yBAAyB;YAAEK;YAAQc,YAAYf;YAAMG;YAAKE;QAAM;IACzE;IAEA,MAAMiB,MAAMR,YACRpB,iBAAiBsB,MAAM,AAACf,UAAqBN,cAAcQ,QAC3Da,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;AAClD,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,qBAAyC,eAAeA,mBAEnE,EAAEC,MAAM,EAAEC,KAAK,EAAEC,MAAM,EAAEC,IAAI,EAAEC,UAAU,EAAEC,GAAG,EAAEC,MAAM,EAAEC,MAAMC,OAAO,EAAEC,KAAK,EAAE;IAE9E,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,EAAEtB,YAAYa,aAAaK,IAAI,IAAI,IAAI,CAACK,cAAc,EAAE;IAG5D,MAAMC,SAASzB,yBAAyB,IAAI,CAACe,OAAO,CAACE,MAAM,EAAEH,cAAc;IAE3E,OAAOZ,SAAS;QACdwB,SAAS,IAAI;QACbD;QACApB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAU;QACAR;IACF;AACF,EAAC"}
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"}
package/dist/findOne.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  import type { FindOneArgs, TypeWithID } from 'payload';
2
2
  import type { DrizzleAdapter } from './types.js';
3
- export declare function findOne<T extends TypeWithID>(this: DrizzleAdapter, { collection, draftsEnabled, joins, locale, req, select, where }: FindOneArgs): Promise<null | T>;
3
+ export declare function findOne<T extends TypeWithID>(this: DrizzleAdapter, { branch, collection, draftsEnabled, joins, locale, req, select, where }: FindOneArgs): Promise<null | T>;
4
4
  //# sourceMappingURL=findOne.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"findOne.d.ts","sourceRoot":"","sources":["../src/findOne.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA6B,UAAU,EAAE,MAAM,SAAS,CAAA;AAIjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAIhD,wBAAsB,OAAO,CAAC,CAAC,SAAS,UAAU,EAChD,IAAI,EAAE,cAAc,EACpB,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,WAAW,GAC5E,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAuBnB"}
1
+ {"version":3,"file":"findOne.d.ts","sourceRoot":"","sources":["../src/findOne.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA6B,UAAU,EAAE,MAAM,SAAS,CAAA;AAKjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAIhD,wBAAsB,OAAO,CAAC,CAAC,SAAS,UAAU,EAChD,IAAI,EAAE,cAAc,EACpB,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,WAAW,GACpF,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAgCnB"}
package/dist/findOne.js CHANGED
@@ -1,8 +1,15 @@
1
+ import { applyBranchIDProjection, resolveBranchQuery } from 'payload';
1
2
  import toSnakeCase from 'to-snake-case';
2
3
  import { findMany } from './find/findMany.js';
3
- export async function findOne({ collection, draftsEnabled, joins, locale, req, select, where }) {
4
+ export async function findOne({ branch, collection, draftsEnabled, joins, locale, req, select, where }) {
4
5
  const collectionConfig = this.payload.collections[collection].config;
5
6
  const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug));
7
+ const branchedWhere = await resolveBranchQuery({
8
+ branch,
9
+ collectionSlug: collection,
10
+ req,
11
+ where
12
+ });
6
13
  const { docs } = await findMany({
7
14
  adapter: this,
8
15
  collectionSlug: collection,
@@ -17,7 +24,13 @@ export async function findOne({ collection, draftsEnabled, joins, locale, req, s
17
24
  select,
18
25
  sort: undefined,
19
26
  tableName,
20
- where
27
+ where: branchedWhere
28
+ });
29
+ applyBranchIDProjection({
30
+ branch,
31
+ collectionSlug: collection,
32
+ docs: docs,
33
+ req
21
34
  });
22
35
  return docs?.[0] || null;
23
36
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/findOne.ts"],"sourcesContent":["import type { FindOneArgs, SanitizedCollectionConfig, TypeWithID } 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 async function findOne<T extends TypeWithID>(\n this: DrizzleAdapter,\n { collection, draftsEnabled, joins, locale, req, select, where }: FindOneArgs,\n): Promise<null | T> {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n const { docs } = await findMany({\n adapter: this,\n collectionSlug: collection,\n draftsEnabled,\n fields: collectionConfig.flattenedFields,\n joins,\n limit: 1,\n locale,\n page: 1,\n pagination: false,\n req,\n select,\n sort: undefined,\n tableName,\n where,\n })\n\n return docs?.[0] || null\n}\n"],"names":["toSnakeCase","findMany","findOne","collection","draftsEnabled","joins","locale","req","select","where","collectionConfig","payload","collections","config","tableName","tableNameMap","get","slug","docs","adapter","collectionSlug","fields","flattenedFields","limit","page","pagination","sort","undefined"],"mappings":"AAEA,OAAOA,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,eAAeC,QAEpB,EAAEC,UAAU,EAAEC,aAAa,EAAEC,KAAK,EAAEC,MAAM,EAAEC,GAAG,EAAEC,MAAM,EAAEC,KAAK,EAAe;IAE7E,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACT,WAAW,CAACU,MAAM;IAE/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAAChB,YAAYU,iBAAiBO,IAAI;IAEzE,MAAM,EAAEC,IAAI,EAAE,GAAG,MAAMjB,SAAS;QAC9BkB,SAAS,IAAI;QACbC,gBAAgBjB;QAChBC;QACAiB,QAAQX,iBAAiBY,eAAe;QACxCjB;QACAkB,OAAO;QACPjB;QACAkB,MAAM;QACNC,YAAY;QACZlB;QACAC;QACAkB,MAAMC;QACNb;QACAL;IACF;IAEA,OAAOS,MAAM,CAAC,EAAE,IAAI;AACtB"}
1
+ {"version":3,"sources":["../src/findOne.ts"],"sourcesContent":["import type { FindOneArgs, SanitizedCollectionConfig, TypeWithID } from 'payload'\n\nimport { applyBranchIDProjection, resolveBranchQuery } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport async function findOne<T extends TypeWithID>(\n this: DrizzleAdapter,\n { branch, collection, draftsEnabled, joins, locale, req, select, where }: FindOneArgs,\n): Promise<null | T> {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n const branchedWhere = await resolveBranchQuery({ branch, collectionSlug: collection, req, where })\n\n const { docs } = await findMany({\n adapter: this,\n collectionSlug: collection,\n draftsEnabled,\n fields: collectionConfig.flattenedFields,\n joins,\n limit: 1,\n locale,\n page: 1,\n pagination: false,\n req,\n select,\n sort: undefined,\n tableName,\n where: branchedWhere,\n })\n\n applyBranchIDProjection({\n branch,\n collectionSlug: collection,\n docs: docs as Record<string, unknown>[],\n req,\n })\n\n return docs?.[0] || null\n}\n"],"names":["applyBranchIDProjection","resolveBranchQuery","toSnakeCase","findMany","findOne","branch","collection","draftsEnabled","joins","locale","req","select","where","collectionConfig","payload","collections","config","tableName","tableNameMap","get","slug","branchedWhere","collectionSlug","docs","adapter","fields","flattenedFields","limit","page","pagination","sort","undefined"],"mappings":"AAEA,SAASA,uBAAuB,EAAEC,kBAAkB,QAAQ,UAAS;AACrE,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,eAAeC,QAEpB,EAAEC,MAAM,EAAEC,UAAU,EAAEC,aAAa,EAAEC,KAAK,EAAEC,MAAM,EAAEC,GAAG,EAAEC,MAAM,EAAEC,KAAK,EAAe;IAErF,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACT,WAAW,CAACU,MAAM;IAE/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACjB,YAAYW,iBAAiBO,IAAI;IAEzE,MAAMC,gBAAgB,MAAMpB,mBAAmB;QAAEI;QAAQiB,gBAAgBhB;QAAYI;QAAKE;IAAM;IAEhG,MAAM,EAAEW,IAAI,EAAE,GAAG,MAAMpB,SAAS;QAC9BqB,SAAS,IAAI;QACbF,gBAAgBhB;QAChBC;QACAkB,QAAQZ,iBAAiBa,eAAe;QACxClB;QACAmB,OAAO;QACPlB;QACAmB,MAAM;QACNC,YAAY;QACZnB;QACAC;QACAmB,MAAMC;QACNd;QACAL,OAAOS;IACT;IAEArB,wBAAwB;QACtBK;QACAiB,gBAAgBhB;QAChBiB,MAAMA;QACNb;IACF;IAEA,OAAOa,MAAM,CAAC,EAAE,IAAI;AACtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"queryDrafts.d.ts","sourceRoot":"","sources":["../src/queryDrafts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA6B,MAAM,SAAS,CAAA;AASrE,eAAO,MAAM,WAAW,EAAE,WAwCzB,CAAA"}
1
+ {"version":3,"file":"queryDrafts.d.ts","sourceRoot":"","sources":["../src/queryDrafts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA6B,MAAM,SAAS,CAAA;AAcrE,eAAO,MAAM,WAAW,EAAE,WAgDzB,CAAA"}
@@ -1,15 +1,20 @@
1
- import { buildVersionCollectionFields, combineQueries } from 'payload';
1
+ import { buildVersionCollectionFields, combineQueries, projectBranchVersionParent, resolveBranchVersionQuery } from 'payload';
2
2
  import toSnakeCase from 'to-snake-case';
3
3
  import { findMany } from './find/findMany.js';
4
4
  export const queryDrafts = async function queryDrafts({ collection, joins, limit, locale, page = 1, pagination, req, select, sort, where }) {
5
5
  const collectionConfig = this.payload.collections[collection].config;
6
6
  const tableName = this.tableNameMap.get(`_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`);
7
7
  const fields = buildVersionCollectionFields(this.payload.config, collectionConfig, true);
8
+ const branchedWhere = await resolveBranchVersionQuery({
9
+ collectionSlug: collection,
10
+ req,
11
+ where
12
+ });
8
13
  const combinedWhere = combineQueries({
9
14
  latest: {
10
15
  equals: true
11
16
  }
12
- }, where);
17
+ }, branchedWhere ?? {});
13
18
  const result = await findMany({
14
19
  adapter: this,
15
20
  collectionSlug: collection,
@@ -29,8 +34,10 @@ export const queryDrafts = async function queryDrafts({ collection, joins, limit
29
34
  return {
30
35
  ...result,
31
36
  docs: result.docs.map((doc)=>{
37
+ // A branch version's `parent` is the shadow row's primary key, so the
38
+ // canonical document ID comes from `_branchParent` when present.
32
39
  doc = {
33
- id: doc.parent,
40
+ id: projectBranchVersionParent(doc),
34
41
  ...doc.version
35
42
  };
36
43
  return doc;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/queryDrafts.ts"],"sourcesContent":["import type { QueryDrafts, SanitizedCollectionConfig } from 'payload'\n\nimport { buildVersionCollectionFields, combineQueries } 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 queryDrafts: QueryDrafts = async function queryDrafts(\n this: DrizzleAdapter,\n { collection, joins, limit, locale, page = 1, pagination, req, select, sort, where },\n) {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`,\n )\n const fields = buildVersionCollectionFields(this.payload.config, collectionConfig, true)\n\n const combinedWhere = combineQueries({ latest: { equals: true } }, where)\n\n const result = await findMany({\n adapter: this,\n collectionSlug: collection,\n fields,\n joins,\n limit,\n locale,\n page,\n pagination,\n req,\n select,\n sort,\n tableName,\n versions: true,\n where: combinedWhere,\n })\n\n return {\n ...result,\n docs: result.docs.map((doc) => {\n doc = {\n id: doc.parent,\n ...doc.version,\n }\n\n return doc\n }),\n }\n}\n"],"names":["buildVersionCollectionFields","combineQueries","toSnakeCase","findMany","queryDrafts","collection","joins","limit","locale","page","pagination","req","select","sort","where","collectionConfig","payload","collections","config","tableName","tableNameMap","get","slug","versionsSuffix","fields","combinedWhere","latest","equals","result","adapter","collectionSlug","versions","docs","map","doc","id","parent","version"],"mappings":"AAEA,SAASA,4BAA4B,EAAEC,cAAc,QAAQ,UAAS;AACtE,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,cAA2B,eAAeA,YAErD,EAAEC,UAAU,EAAEC,KAAK,EAAEC,KAAK,EAAEC,MAAM,EAAEC,OAAO,CAAC,EAAEC,UAAU,EAAEC,GAAG,EAAEC,MAAM,EAAEC,IAAI,EAAEC,KAAK,EAAE;IAEpF,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACZ,WAAW,CAACa,MAAM;IAC/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAEnB,YAAYa,iBAAiBO,IAAI,IAAI,IAAI,CAACC,cAAc,EAAE;IAEhE,MAAMC,SAASxB,6BAA6B,IAAI,CAACgB,OAAO,CAACE,MAAM,EAAEH,kBAAkB;IAEnF,MAAMU,gBAAgBxB,eAAe;QAAEyB,QAAQ;YAAEC,QAAQ;QAAK;IAAE,GAAGb;IAEnE,MAAMc,SAAS,MAAMzB,SAAS;QAC5B0B,SAAS,IAAI;QACbC,gBAAgBzB;QAChBmB;QACAlB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAM;QACAY,UAAU;QACVjB,OAAOW;IACT;IAEA,OAAO;QACL,GAAGG,MAAM;QACTI,MAAMJ,OAAOI,IAAI,CAACC,GAAG,CAAC,CAACC;YACrBA,MAAM;gBACJC,IAAID,IAAIE,MAAM;gBACd,GAAGF,IAAIG,OAAO;YAChB;YAEA,OAAOH;QACT;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../src/queryDrafts.ts"],"sourcesContent":["import type { QueryDrafts, SanitizedCollectionConfig } from 'payload'\n\nimport {\n buildVersionCollectionFields,\n combineQueries,\n projectBranchVersionParent,\n resolveBranchVersionQuery,\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 queryDrafts: QueryDrafts = async function queryDrafts(\n this: DrizzleAdapter,\n { collection, joins, limit, locale, page = 1, pagination, req, select, sort, where },\n) {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`,\n )\n const fields = buildVersionCollectionFields(this.payload.config, collectionConfig, true)\n\n const branchedWhere = await resolveBranchVersionQuery({\n collectionSlug: collection,\n req,\n where,\n })\n\n const combinedWhere = combineQueries({ latest: { equals: true } }, branchedWhere ?? {})\n\n const result = await findMany({\n adapter: this,\n collectionSlug: collection,\n fields,\n joins,\n limit,\n locale,\n page,\n pagination,\n req,\n select,\n sort,\n tableName,\n versions: true,\n where: combinedWhere,\n })\n\n return {\n ...result,\n docs: result.docs.map((doc) => {\n // A branch version's `parent` is the shadow row's primary key, so the\n // canonical document ID comes from `_branchParent` when present.\n doc = {\n id: projectBranchVersionParent(doc),\n ...doc.version,\n }\n\n return doc\n }),\n }\n}\n"],"names":["buildVersionCollectionFields","combineQueries","projectBranchVersionParent","resolveBranchVersionQuery","toSnakeCase","findMany","queryDrafts","collection","joins","limit","locale","page","pagination","req","select","sort","where","collectionConfig","payload","collections","config","tableName","tableNameMap","get","slug","versionsSuffix","fields","branchedWhere","collectionSlug","combinedWhere","latest","equals","result","adapter","versions","docs","map","doc","id","version"],"mappings":"AAEA,SACEA,4BAA4B,EAC5BC,cAAc,EACdC,0BAA0B,EAC1BC,yBAAyB,QACpB,UAAS;AAChB,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,cAA2B,eAAeA,YAErD,EAAEC,UAAU,EAAEC,KAAK,EAAEC,KAAK,EAAEC,MAAM,EAAEC,OAAO,CAAC,EAAEC,UAAU,EAAEC,GAAG,EAAEC,MAAM,EAAEC,IAAI,EAAEC,KAAK,EAAE;IAEpF,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACZ,WAAW,CAACa,MAAM;IAC/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAEnB,YAAYa,iBAAiBO,IAAI,IAAI,IAAI,CAACC,cAAc,EAAE;IAEhE,MAAMC,SAAS1B,6BAA6B,IAAI,CAACkB,OAAO,CAACE,MAAM,EAAEH,kBAAkB;IAEnF,MAAMU,gBAAgB,MAAMxB,0BAA0B;QACpDyB,gBAAgBrB;QAChBM;QACAG;IACF;IAEA,MAAMa,gBAAgB5B,eAAe;QAAE6B,QAAQ;YAAEC,QAAQ;QAAK;IAAE,GAAGJ,iBAAiB,CAAC;IAErF,MAAMK,SAAS,MAAM3B,SAAS;QAC5B4B,SAAS,IAAI;QACbL,gBAAgBrB;QAChBmB;QACAlB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAM;QACAa,UAAU;QACVlB,OAAOa;IACT;IAEA,OAAO;QACL,GAAGG,MAAM;QACTG,MAAMH,OAAOG,IAAI,CAACC,GAAG,CAAC,CAACC;YACrB,sEAAsE;YACtE,iEAAiE;YACjEA,MAAM;gBACJC,IAAIpC,2BAA2BmC;gBAC/B,GAAGA,IAAIE,OAAO;YAChB;YAEA,OAAOF;QACT;IACF;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/schema/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAKrE,OAAO,KAAK,EACV,cAAc,EACd,MAAM,EACN,SAAS,EACT,aAAa,EACb,QAAQ,EAGR,WAAW,EACX,WAAW,EACZ,MAAM,aAAa,CAAA;AAQpB,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACvC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC/C;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACtC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,eAAe,CAAC,EAAE,sBAAsB,EAAE,CAAA;IAC1C,cAAc,EAAE,OAAO,CAAA;IACvB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,aAAa,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B,oBAAoB,CAAC,EAAE,WAAW,CAAA;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,uBAAuB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACrC,WAAW,EAAE,WAAW,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;IACjB;;;OAGG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAA;CACtC,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,2BAA2B,EAAE,OAAO,CAAA;IACpC,yBAAyB,EAAE,OAAO,CAAA;IAClC,6BAA6B,EAAE,OAAO,CAAA;IACtC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;IACrC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAA;IACnC,gBAAgB,EAAE,WAAW,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,UAAU,0XAsBpB,IAAI,KAAG,MAisBT,CAAA"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/schema/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAKrE,OAAO,KAAK,EACV,cAAc,EACd,MAAM,EACN,SAAS,EACT,aAAa,EACb,QAAQ,EAGR,WAAW,EACX,WAAW,EACZ,MAAM,aAAa,CAAA;AASpB,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACvC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC/C;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACtC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,eAAe,CAAC,EAAE,sBAAsB,EAAE,CAAA;IAC1C,cAAc,EAAE,OAAO,CAAA;IACvB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,aAAa,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B,oBAAoB,CAAC,EAAE,WAAW,CAAA;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,uBAAuB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACrC,WAAW,EAAE,WAAW,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;IACjB;;;OAGG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAA;CACtC,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,2BAA2B,EAAE,OAAO,CAAA;IACpC,yBAAyB,EAAE,OAAO,CAAA;IAClC,6BAA6B,EAAE,OAAO,CAAA;IACtC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;IACrC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAA;IACnC,gBAAgB,EAAE,WAAW,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,UAAU,0XAsBpB,IAAI,KAAG,MAmsBT,CAAA"}
@@ -4,6 +4,7 @@ import { createTableName } from '../createTableName.js';
4
4
  import { buildForeignKeyName } from '../utilities/buildForeignKeyName.js';
5
5
  import { buildIndexName } from '../utilities/buildIndexName.js';
6
6
  import { isUUIDType } from '../utilities/isUUIDType.js';
7
+ import { validateIdentifierLength } from '../utilities/validateIdentifierLength.js';
7
8
  import { traverseFields } from './traverseFields.js';
8
9
  export const buildTable = ({ adapter, baseColumns = {}, baseForeignKeys = {}, baseIndexes = {}, blocksTableNameMap, compoundIndexes, disableNotNull, disableRelsTableUnique = false, disableUnique = false, fields, parentIsLocalized, rootRelationships, rootRelationsToBuild, rootTableIDColType, rootTableName: incomingRootTableName, rootUniqueRelationships, setColumnID, tableName, timestamps, versions, withinLocalizedArrayOrBlock })=>{
9
10
  const isRoot = !incomingRootTableName;
@@ -90,7 +91,7 @@ export const buildTable = ({ adapter, baseColumns = {}, baseForeignKeys = {}, ba
90
91
  };
91
92
  adapter.rawTables[tableName] = table;
92
93
  if (hasLocalizedField || localizedRelations.size) {
93
- const localeTableName = `${tableName}${adapter.localesSuffix}`;
94
+ const localeTableName = validateIdentifierLength(`${tableName}${adapter.localesSuffix}`);
94
95
  adapter.rawTables[localeTableName] = localesTable;
95
96
  localesColumns.id = {
96
97
  name: 'id',
@@ -231,7 +232,7 @@ export const buildTable = ({ adapter, baseColumns = {}, baseForeignKeys = {}, ba
231
232
  }
232
233
  if (isRoot) {
233
234
  if (hasManyTextField) {
234
- const textsTableName = `${rootTableName}_texts`;
235
+ const textsTableName = validateIdentifierLength(`${rootTableName}_texts`);
235
236
  adapter.rawTables[textsTableName] = textsTable;
236
237
  const columns = {
237
238
  id: {
@@ -343,7 +344,7 @@ export const buildTable = ({ adapter, baseColumns = {}, baseForeignKeys = {}, ba
343
344
  };
344
345
  }
345
346
  if (hasManyNumberField) {
346
- const numbersTableName = `${rootTableName}_numbers`;
347
+ const numbersTableName = validateIdentifierLength(`${rootTableName}_numbers`);
347
348
  adapter.rawTables[numbersTableName] = numbersTable;
348
349
  const columns = {
349
350
  id: {
@@ -482,7 +483,7 @@ export const buildTable = ({ adapter, baseColumns = {}, baseForeignKeys = {}, ba
482
483
  locale: true
483
484
  };
484
485
  }
485
- const relationshipsTableName = `${tableName}${adapter.relationshipsSuffix}`;
486
+ const relationshipsTableName = validateIdentifierLength(`${tableName}${adapter.relationshipsSuffix}`);
486
487
  const relationshipIndexes = {
487
488
  order: {
488
489
  name: buildIndexName({