@payloadcms/drizzle 3.24.0-canary.4c8cafd → 3.24.0-canary.5891112

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 (71) hide show
  1. package/dist/find/traverseFields.d.ts +2 -2
  2. package/dist/find/traverseFields.d.ts.map +1 -1
  3. package/dist/find/traverseFields.js +28 -10
  4. package/dist/find/traverseFields.js.map +1 -1
  5. package/dist/postgres/countDistinct.d.ts.map +1 -1
  6. package/dist/postgres/countDistinct.js +14 -13
  7. package/dist/postgres/countDistinct.js.map +1 -1
  8. package/dist/queries/buildAndOrConditions.d.ts +2 -1
  9. package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
  10. package/dist/queries/buildAndOrConditions.js +2 -1
  11. package/dist/queries/buildAndOrConditions.js.map +1 -1
  12. package/dist/queries/buildOrderBy.d.ts +2 -1
  13. package/dist/queries/buildOrderBy.d.ts.map +1 -1
  14. package/dist/queries/buildOrderBy.js +2 -1
  15. package/dist/queries/buildOrderBy.js.map +1 -1
  16. package/dist/queries/buildQuery.d.ts +2 -1
  17. package/dist/queries/buildQuery.d.ts.map +1 -1
  18. package/dist/queries/buildQuery.js +3 -1
  19. package/dist/queries/buildQuery.js.map +1 -1
  20. package/dist/queries/getTableColumnFromPath.d.ts +2 -1
  21. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  22. package/dist/queries/getTableColumnFromPath.js +24 -12
  23. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  24. package/dist/queries/parseParams.d.ts +2 -1
  25. package/dist/queries/parseParams.d.ts.map +1 -1
  26. package/dist/queries/parseParams.js +3 -1
  27. package/dist/queries/parseParams.js.map +1 -1
  28. package/dist/schema/build.d.ts +2 -1
  29. package/dist/schema/build.d.ts.map +1 -1
  30. package/dist/schema/build.js +2 -1
  31. package/dist/schema/build.js.map +1 -1
  32. package/dist/schema/buildRawSchema.d.ts.map +1 -1
  33. package/dist/schema/buildRawSchema.js +4 -0
  34. package/dist/schema/buildRawSchema.js.map +1 -1
  35. package/dist/schema/traverseFields.d.ts +2 -1
  36. package/dist/schema/traverseFields.d.ts.map +1 -1
  37. package/dist/schema/traverseFields.js +30 -15
  38. package/dist/schema/traverseFields.js.map +1 -1
  39. package/dist/transform/read/index.d.ts +2 -1
  40. package/dist/transform/read/index.d.ts.map +1 -1
  41. package/dist/transform/read/index.js +2 -1
  42. package/dist/transform/read/index.js.map +1 -1
  43. package/dist/transform/read/traverseFields.d.ts +2 -1
  44. package/dist/transform/read/traverseFields.d.ts.map +1 -1
  45. package/dist/transform/read/traverseFields.js +23 -14
  46. package/dist/transform/read/traverseFields.js.map +1 -1
  47. package/dist/transform/write/array.d.ts +2 -1
  48. package/dist/transform/write/array.d.ts.map +1 -1
  49. package/dist/transform/write/array.js +7 -2
  50. package/dist/transform/write/array.js.map +1 -1
  51. package/dist/transform/write/blocks.d.ts +2 -1
  52. package/dist/transform/write/blocks.d.ts.map +1 -1
  53. package/dist/transform/write/blocks.js +7 -2
  54. package/dist/transform/write/blocks.js.map +1 -1
  55. package/dist/transform/write/index.d.ts +2 -1
  56. package/dist/transform/write/index.d.ts.map +1 -1
  57. package/dist/transform/write/index.js +2 -1
  58. package/dist/transform/write/index.js.map +1 -1
  59. package/dist/transform/write/traverseFields.d.ts +2 -1
  60. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  61. package/dist/transform/write/traverseFields.js +22 -12
  62. package/dist/transform/write/traverseFields.js.map +1 -1
  63. package/dist/utilities/hasLocalesTable.d.ts +7 -1
  64. package/dist/utilities/hasLocalesTable.d.ts.map +1 -1
  65. package/dist/utilities/hasLocalesTable.js +14 -5
  66. package/dist/utilities/hasLocalesTable.js.map +1 -1
  67. package/dist/utilities/validateExistingBlockIsIdentical.d.ts +5 -1
  68. package/dist/utilities/validateExistingBlockIsIdentical.d.ts.map +1 -1
  69. package/dist/utilities/validateExistingBlockIsIdentical.js +22 -7
  70. package/dist/utilities/validateExistingBlockIsIdentical.js.map +1 -1
  71. package/package.json +3 -3
@@ -12,6 +12,7 @@ type TraverseFieldArgs = {
12
12
  joinQuery: JoinQuery;
13
13
  joins?: BuildQueryJoinAliases;
14
14
  locale?: string;
15
+ parentIsLocalized?: boolean;
15
16
  path: string;
16
17
  select?: SelectType;
17
18
  selectAllOnCurrentLevel?: boolean;
@@ -20,13 +21,12 @@ type TraverseFieldArgs = {
20
21
  topLevelArgs: Record<string, unknown>;
21
22
  topLevelTableName: string;
22
23
  versions?: boolean;
23
- withinLocalizedField?: boolean;
24
24
  withTabledFields: {
25
25
  numbers?: boolean;
26
26
  rels?: boolean;
27
27
  texts?: boolean;
28
28
  };
29
29
  };
30
- export declare const traverseFields: ({ _locales, adapter, collectionSlug, currentArgs, currentTableName, depth, fields, joinQuery, joins, locale, path, select, selectAllOnCurrentLevel, selectMode, tablePath, topLevelArgs, topLevelTableName, versions, withinLocalizedField, withTabledFields, }: TraverseFieldArgs) => Record<string, unknown>;
30
+ export declare const traverseFields: ({ _locales, adapter, collectionSlug, currentArgs, currentTableName, depth, fields, joinQuery, joins, locale, parentIsLocalized, path, select, selectAllOnCurrentLevel, selectMode, tablePath, topLevelArgs, topLevelTableName, versions, withTabledFields, }: TraverseFieldArgs) => Record<string, unknown>;
31
31
  export {};
32
32
  //# sourceMappingURL=traverseFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/find/traverseFields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAS,MAAM,SAAS,CAAA;AAMvF,OAAO,KAAK,EAAE,qBAAqB,EAAkB,cAAc,EAAE,MAAM,aAAa,CAAA;AACxF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AASpD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,cAAc,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,SAAS,EAAE,SAAS,CAAA;IACpB,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,gBAAgB,EAAE;QAChB,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,KAAK,CAAC,EAAE,OAAO,CAAA;KAChB,CAAA;CACF,CAAA;AAED,eAAO,MAAM,cAAc,oQAqBxB,iBAAiB,4BAugBnB,CAAA"}
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/find/traverseFields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAS,MAAM,SAAS,CAAA;AAMvF,OAAO,KAAK,EAAE,qBAAqB,EAAkB,cAAc,EAAE,MAAM,aAAa,CAAA;AACxF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AASpD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,cAAc,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,SAAS,EAAE,SAAS,CAAA;IACpB,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gBAAgB,EAAE;QAChB,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,KAAK,CAAC,EAAE,OAAO,CAAA;KAChB,CAAA;CACF,CAAA;AAED,eAAO,MAAM,cAAc,iQAqBxB,iBAAiB,4BA0hBnB,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { sql } from 'drizzle-orm';
2
- import { fieldIsVirtual } from 'payload/shared';
2
+ import { fieldIsVirtual, fieldShouldBeLocalized } from 'payload/shared';
3
3
  import toSnakeCase from 'to-snake-case';
4
4
  import buildQuery from '../queries/buildQuery.js';
5
5
  import { getTableAlias } from '../queries/getTableAlias.js';
@@ -7,14 +7,18 @@ import { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js
7
7
  import { jsonAggBuildObject } from '../utilities/json.js';
8
8
  import { rawConstraint } from '../utilities/rawConstraint.js';
9
9
  import { chainMethods } from './chainMethods.js';
10
- export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs, currentTableName, depth, fields, joinQuery = {}, joins, locale, path, select, selectAllOnCurrentLevel = false, selectMode, tablePath, topLevelArgs, topLevelTableName, versions, withinLocalizedField = false, withTabledFields })=>{
10
+ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs, currentTableName, depth, fields, joinQuery = {}, joins, locale, parentIsLocalized = false, path, select, selectAllOnCurrentLevel = false, selectMode, tablePath, topLevelArgs, topLevelTableName, versions, withTabledFields })=>{
11
11
  fields.forEach((field)=>{
12
12
  if (fieldIsVirtual(field)) {
13
13
  return;
14
14
  }
15
+ const isFieldLocalized = fieldShouldBeLocalized({
16
+ field,
17
+ parentIsLocalized
18
+ });
15
19
  // handle simple relationship
16
20
  if (depth > 0 && (field.type === 'upload' || field.type === 'relationship') && !field.hasMany && typeof field.relationTo === 'string') {
17
- if (field.localized) {
21
+ if (isFieldLocalized) {
18
22
  _locales.with[`${path}${field.name}`] = true;
19
23
  } else {
20
24
  currentArgs.with[`${path}${field.name}`] = true;
@@ -72,13 +76,13 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
72
76
  fields: field.flattenedFields,
73
77
  joinQuery,
74
78
  locale,
79
+ parentIsLocalized: parentIsLocalized || field.localized,
75
80
  path: '',
76
81
  select: typeof arraySelect === 'object' ? arraySelect : undefined,
77
82
  selectMode,
78
83
  tablePath: '',
79
84
  topLevelArgs,
80
85
  topLevelTableName,
81
- withinLocalizedField: withinLocalizedField || field.localized,
82
86
  withTabledFields
83
87
  });
84
88
  if (typeof arraySelect === 'object' && withArray.with._locales && Object.keys(withArray.with._locales).length === 1) {
@@ -156,13 +160,13 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
156
160
  fields: block.flattenedFields,
157
161
  joinQuery,
158
162
  locale,
163
+ parentIsLocalized: parentIsLocalized || field.localized,
159
164
  path: '',
160
165
  select: typeof blockSelect === 'object' ? blockSelect : undefined,
161
166
  selectMode: blockSelectMode,
162
167
  tablePath: '',
163
168
  topLevelArgs,
164
169
  topLevelTableName,
165
- withinLocalizedField: withinLocalizedField || field.localized,
166
170
  withTabledFields
167
171
  });
168
172
  if (typeof blockSelect === 'object' && withBlock.with._locales && Object.keys(withBlock.with._locales.columns).length === 1) {
@@ -190,6 +194,7 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
190
194
  joinQuery,
191
195
  joins,
192
196
  locale,
197
+ parentIsLocalized: parentIsLocalized || field.localized,
193
198
  path: `${path}${field.name}_`,
194
199
  select: typeof fieldSelect === 'object' ? fieldSelect : undefined,
195
200
  selectAllOnCurrentLevel: selectAllOnCurrentLevel || fieldSelect === true || selectMode === 'exclude' && typeof fieldSelect === 'undefined',
@@ -198,7 +203,6 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
198
203
  topLevelArgs,
199
204
  topLevelTableName,
200
205
  versions,
201
- withinLocalizedField: withinLocalizedField || field.localized,
202
206
  withTabledFields
203
207
  });
204
208
  break;
@@ -216,7 +220,7 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
216
220
  if (joinQuery[joinSchemaPath] === false) {
217
221
  break;
218
222
  }
219
- const { limit: limitArg = field.defaultLimit ?? 10, sort = field.defaultSort, where } = joinQuery[joinSchemaPath] || {};
223
+ const { limit: limitArg = field.defaultLimit ?? 10, page, sort = field.defaultSort, where } = joinQuery[joinSchemaPath] || {};
220
224
  let limit = limitArg;
221
225
  if (limit !== 0) {
222
226
  // get an additional document and slice it later to determine if there is a next page
@@ -263,6 +267,9 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
263
267
  fields,
264
268
  joins,
265
269
  locale,
270
+ // Parent is never localized, as we're passing the `fields` of a **different** collection here. This means that the
271
+ // parent localization "boundary" is crossed, and we're now in the context of the joined collection.
272
+ parentIsLocalized: false,
266
273
  selectLocale: true,
267
274
  sort,
268
275
  tableName: joinCollectionTableName,
@@ -286,6 +293,17 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
286
293
  method: 'limit'
287
294
  });
288
295
  }
296
+ if (page && limit !== 0) {
297
+ const offset = (page - 1) * limit - 1;
298
+ if (offset > 0) {
299
+ chainedMethods.push({
300
+ args: [
301
+ offset
302
+ ],
303
+ method: 'offset'
304
+ });
305
+ }
306
+ }
289
307
  const db = adapter.drizzle;
290
308
  for(let key in selectFields){
291
309
  const val = selectFields[key];
@@ -314,7 +332,7 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
314
332
  if (adapter.name === 'sqlite') {
315
333
  break;
316
334
  }
317
- const args = field.localized ? _locales : currentArgs;
335
+ const args = isFieldLocalized ? _locales : currentArgs;
318
336
  if (!args.columns) {
319
337
  args.columns = {};
320
338
  }
@@ -361,7 +379,7 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
361
379
  }
362
380
  if (select || selectAllOnCurrentLevel) {
363
381
  const fieldPath = `${path}${field.name}`;
364
- if ((field.localized || withinLocalizedField) && _locales) {
382
+ if ((isFieldLocalized || parentIsLocalized) && _locales) {
365
383
  _locales.columns[fieldPath] = true;
366
384
  } else if (adapter.tables[currentTableName]?.[fieldPath]) {
367
385
  currentArgs.columns[fieldPath] = true;
@@ -376,7 +394,7 @@ export const traverseFields = ({ _locales, adapter, collectionSlug, currentArgs,
376
394
  }
377
395
  if (selectAllOnCurrentLevel || selectMode === 'include' && select[field.name] === true || selectMode === 'exclude' && typeof select[field.name] === 'undefined') {
378
396
  const fieldPath = `${path}${field.name}`;
379
- if ((field.localized || withinLocalizedField) && _locales) {
397
+ if ((isFieldLocalized || parentIsLocalized) && _locales) {
380
398
  _locales.columns[fieldPath] = true;
381
399
  } else if (adapter.tables[currentTableName]?.[fieldPath]) {
382
400
  currentArgs.columns[fieldPath] = true;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/find/traverseFields.ts"],"sourcesContent":["import type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { FlattenedField, JoinQuery, SelectMode, SelectType, Where } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport { fieldIsVirtual } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, ChainedMethods, DrizzleAdapter } from '../types.js'\nimport type { Result } from './buildFindManyArgs.js'\n\nimport buildQuery from '../queries/buildQuery.js'\nimport { getTableAlias } from '../queries/getTableAlias.js'\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { jsonAggBuildObject } from '../utilities/json.js'\nimport { rawConstraint } from '../utilities/rawConstraint.js'\nimport { chainMethods } from './chainMethods.js'\n\ntype TraverseFieldArgs = {\n _locales: Result\n adapter: DrizzleAdapter\n collectionSlug?: string\n currentArgs: Result\n currentTableName: string\n depth?: number\n fields: FlattenedField[]\n joinQuery: JoinQuery\n joins?: BuildQueryJoinAliases\n locale?: string\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 withinLocalizedField?: 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 fields,\n joinQuery = {},\n joins,\n locale,\n path,\n select,\n selectAllOnCurrentLevel = false,\n selectMode,\n tablePath,\n topLevelArgs,\n topLevelTableName,\n versions,\n withinLocalizedField = false,\n withTabledFields,\n}: TraverseFieldArgs) => {\n fields.forEach((field) => {\n if (fieldIsVirtual(field)) {\n return\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 (field.localized) {\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 currentArgs.with[`${path}${field.name}`] = withArray\n\n traverseFields({\n _locales: withArray.with._locales,\n adapter,\n currentArgs: withArray,\n currentTableName: arrayTableName,\n depth,\n fields: field.flattenedFields,\n joinQuery,\n locale,\n path: '',\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withinLocalizedField: withinLocalizedField || field.localized,\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 ;(field.blockReferences ?? field.blocks).forEach((_block) => {\n const block = typeof _block === 'string' ? adapter.payload.blocks[_block] : _block\n const blockKey = `_blocks_${block.slug}`\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' && blocksSelect[block.slug] === true) {\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 = adapter.tableNameMap.get(\n `${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 fields: block.flattenedFields,\n joinQuery,\n locale,\n path: '',\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withinLocalizedField: withinLocalizedField || field.localized,\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 fields: field.flattenedFields,\n joinQuery,\n joins,\n locale,\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 withinLocalizedField: withinLocalizedField || field.localized,\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 limit: limitArg = field.defaultLimit ?? 10,\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 fields = adapter.payload.collections[field.collection].config.flattenedFields\n\n const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(field.collection))\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 if (Array.isArray(field.targetField.relationTo)) {\n joinQueryWhere = {\n [field.on]: {\n equals: {\n relationTo: collectionSlug,\n value: rawConstraint(currentIDColumn),\n },\n },\n }\n } else {\n joinQueryWhere = {\n [field.on]: {\n equals: rawConstraint(currentIDColumn),\n },\n }\n }\n\n if (where && Object.keys(where).length) {\n joinQueryWhere = {\n and: [joinQueryWhere, where],\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 selectLocale: true,\n sort,\n tableName: joinCollectionTableName,\n where: joinQueryWhere,\n })\n\n const chainedMethods: ChainedMethods = []\n\n joins.forEach(({ type, condition, table }) => {\n chainedMethods.push({\n args: [table, condition],\n method: type ?? 'leftJoin',\n })\n })\n\n if (limit !== 0) {\n chainedMethods.push({\n args: [limit],\n method: 'limit',\n })\n }\n\n const db = adapter.drizzle as LibSQLDatabase\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 const subQuery = chainMethods({\n methods: chainedMethods,\n query: db\n .select(selectFields as any)\n .from(newAliasTable)\n .where(subQueryWhere)\n .orderBy(() => orderBy.map(({ column, order }) => order(column))),\n }).as(subQueryAlias)\n\n currentArgs.extras[columnName] = sql`${db\n .select({\n result: jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".id`),\n ...(selectFields._locale && {\n locale: sql.raw(`\"${subQueryAlias}\".${selectFields._locale.name}`),\n }),\n }),\n })\n .from(sql`${subQuery}`)}`.as(subQueryAlias)\n\n break\n }\n\n case 'point': {\n if (adapter.name === 'sqlite') {\n break\n }\n\n const args = field.localized ? _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' && select[field.name] === true) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n shouldSelect = true\n }\n } else {\n shouldSelect = true\n }\n\n if (shouldSelect) {\n args.extras[name] = sql.raw(`ST_AsGeoJSON(${toSnakeCase(name)})::jsonb`).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 ((field.localized || withinLocalizedField) && _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 (!select && !selectAllOnCurrentLevel) {\n break\n }\n\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && select[field.name] === true) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n const fieldPath = `${path}${field.name}`\n\n if ((field.localized || withinLocalizedField) && _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":["sql","fieldIsVirtual","toSnakeCase","buildQuery","getTableAlias","getNameFromDrizzleTable","jsonAggBuildObject","rawConstraint","chainMethods","traverseFields","_locales","adapter","collectionSlug","currentArgs","currentTableName","depth","fields","joinQuery","joins","locale","path","select","selectAllOnCurrentLevel","selectMode","tablePath","topLevelArgs","topLevelTableName","versions","withinLocalizedField","withTabledFields","forEach","field","type","hasMany","relationTo","localized","with","name","arraySelect","withArray","columns","id","_order","_parentID","orderBy","asc","arrayTableName","tableNameMap","get","tables","_locale","_uuid","arrayTableNameWithLocales","localesSuffix","flattenedFields","undefined","Object","keys","length","blocksSelect","blockReferences","blocks","_block","block","payload","blockKey","slug","blockSelect","blockSelectMode","withBlock","_path","tableName","fieldSelect","joinSchemaPath","replaceAll","limit","limitArg","defaultLimit","sort","defaultSort","where","collections","collection","config","joinCollectionTableName","currentIDColumn","parent","joinQueryWhere","Array","isArray","targetField","on","equals","value","and","columnName","subQueryAlias","newAliasTable","selectFields","subQueryWhere","aliasTable","selectLocale","chainedMethods","condition","table","push","args","method","db","drizzle","key","val","split","pop","subQuery","methods","query","from","map","column","order","as","extras","result","raw","shouldSelect","withSelect","fieldPath","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 { FlattenedField, JoinQuery, SelectMode, SelectType, Where } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport { fieldIsVirtual, fieldShouldBeLocalized } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, ChainedMethods, DrizzleAdapter } from '../types.js'\nimport type { Result } from './buildFindManyArgs.js'\n\nimport buildQuery from '../queries/buildQuery.js'\nimport { getTableAlias } from '../queries/getTableAlias.js'\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { jsonAggBuildObject } from '../utilities/json.js'\nimport { rawConstraint } from '../utilities/rawConstraint.js'\nimport { chainMethods } from './chainMethods.js'\n\ntype TraverseFieldArgs = {\n _locales: Result\n adapter: DrizzleAdapter\n collectionSlug?: string\n currentArgs: Result\n currentTableName: string\n depth?: number\n fields: FlattenedField[]\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 fields,\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 currentArgs.with[`${path}${field.name}`] = withArray\n\n traverseFields({\n _locales: withArray.with._locales,\n adapter,\n currentArgs: withArray,\n currentTableName: arrayTableName,\n depth,\n fields: field.flattenedFields,\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 ;(field.blockReferences ?? field.blocks).forEach((_block) => {\n const block = typeof _block === 'string' ? adapter.payload.blocks[_block] : _block\n const blockKey = `_blocks_${block.slug}`\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' && blocksSelect[block.slug] === true) {\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 = adapter.tableNameMap.get(\n `${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 fields: block.flattenedFields,\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 fields: field.flattenedFields,\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 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 fields = adapter.payload.collections[field.collection].config.flattenedFields\n\n const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(field.collection))\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 if (Array.isArray(field.targetField.relationTo)) {\n joinQueryWhere = {\n [field.on]: {\n equals: {\n relationTo: collectionSlug,\n value: rawConstraint(currentIDColumn),\n },\n },\n }\n } else {\n joinQueryWhere = {\n [field.on]: {\n equals: rawConstraint(currentIDColumn),\n },\n }\n }\n\n if (where && Object.keys(where).length) {\n joinQueryWhere = {\n and: [joinQueryWhere, where],\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 // Parent is never localized, as we're passing the `fields` of a **different** collection here. This means that the\n // parent localization \"boundary\" is crossed, and we're now in the context of the joined collection.\n parentIsLocalized: false,\n selectLocale: true,\n sort,\n tableName: joinCollectionTableName,\n where: joinQueryWhere,\n })\n\n const chainedMethods: ChainedMethods = []\n\n joins.forEach(({ type, condition, table }) => {\n chainedMethods.push({\n args: [table, condition],\n method: type ?? 'leftJoin',\n })\n })\n\n if (limit !== 0) {\n chainedMethods.push({\n args: [limit],\n method: 'limit',\n })\n }\n\n if (page && limit !== 0) {\n const offset = (page - 1) * limit - 1\n if (offset > 0) {\n chainedMethods.push({\n args: [offset],\n method: 'offset',\n })\n }\n }\n\n const db = adapter.drizzle as LibSQLDatabase\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 const subQuery = chainMethods({\n methods: chainedMethods,\n query: db\n .select(selectFields as any)\n .from(newAliasTable)\n .where(subQueryWhere)\n .orderBy(() => orderBy.map(({ column, order }) => order(column))),\n }).as(subQueryAlias)\n\n currentArgs.extras[columnName] = sql`${db\n .select({\n result: jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".id`),\n ...(selectFields._locale && {\n locale: sql.raw(`\"${subQueryAlias}\".${selectFields._locale.name}`),\n }),\n }),\n })\n .from(sql`${subQuery}`)}`.as(subQueryAlias)\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' && select[field.name] === true) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n shouldSelect = true\n }\n } else {\n shouldSelect = true\n }\n\n if (shouldSelect) {\n args.extras[name] = sql.raw(`ST_AsGeoJSON(${toSnakeCase(name)})::jsonb`).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 (!select && !selectAllOnCurrentLevel) {\n break\n }\n\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && select[field.name] === true) ||\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":["sql","fieldIsVirtual","fieldShouldBeLocalized","toSnakeCase","buildQuery","getTableAlias","getNameFromDrizzleTable","jsonAggBuildObject","rawConstraint","chainMethods","traverseFields","_locales","adapter","collectionSlug","currentArgs","currentTableName","depth","fields","joinQuery","joins","locale","parentIsLocalized","path","select","selectAllOnCurrentLevel","selectMode","tablePath","topLevelArgs","topLevelTableName","versions","withTabledFields","forEach","field","isFieldLocalized","type","hasMany","relationTo","with","name","arraySelect","withArray","columns","id","_order","_parentID","orderBy","asc","arrayTableName","tableNameMap","get","tables","_locale","_uuid","arrayTableNameWithLocales","localesSuffix","flattenedFields","localized","undefined","Object","keys","length","blocksSelect","blockReferences","blocks","_block","block","payload","blockKey","slug","blockSelect","blockSelectMode","withBlock","_path","tableName","fieldSelect","joinSchemaPath","replaceAll","limit","limitArg","defaultLimit","page","sort","defaultSort","where","collections","collection","config","joinCollectionTableName","currentIDColumn","parent","joinQueryWhere","Array","isArray","targetField","on","equals","value","and","columnName","subQueryAlias","newAliasTable","selectFields","subQueryWhere","aliasTable","selectLocale","chainedMethods","condition","table","push","args","method","offset","db","drizzle","key","val","split","pop","subQuery","methods","query","from","map","column","order","as","extras","result","raw","shouldSelect","withSelect","fieldPath","rels","numbers","texts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"countDistinct.d.ts","sourceRoot":"","sources":["../../src/postgres/countDistinct.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAuB,aAAa,EAAE,MAAM,YAAY,CAAA;AAIpE,eAAO,MAAM,aAAa,EAAE,aAkC3B,CAAA"}
1
+ {"version":3,"file":"countDistinct.d.ts","sourceRoot":"","sources":["../../src/postgres/countDistinct.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAuB,aAAa,EAAE,MAAM,YAAY,CAAA;AAIpE,eAAO,MAAM,aAAa,EAAE,aAyC3B,CAAA"}
@@ -1,18 +1,15 @@
1
1
  import { count, sql } from 'drizzle-orm';
2
2
  import { chainMethods } from '../find/chainMethods.js';
3
3
  export const countDistinct = async function countDistinct({ db, joins, tableName, where }) {
4
+ // When we don't have any joins - use a simple COUNT(*) query.
5
+ if (joins.length === 0) {
6
+ const countResult = await db.select({
7
+ count: count()
8
+ }).from(this.tables[tableName]).where(where);
9
+ return Number(countResult[0].count);
10
+ }
4
11
  const chainedMethods = [];
5
- // COUNT(DISTINCT id) is slow on large tables, so we only use DISTINCT if we have to
6
- const visitedPaths = new Set([]);
7
- let useDistinct = false;
8
- joins.forEach(({ condition, queryPath, table })=>{
9
- if (!useDistinct && queryPath) {
10
- if (visitedPaths.has(queryPath)) {
11
- useDistinct = true;
12
- } else {
13
- visitedPaths.add(queryPath);
14
- }
15
- }
12
+ joins.forEach(({ condition, table })=>{
16
13
  chainedMethods.push({
17
14
  args: [
18
15
  table,
@@ -21,11 +18,15 @@ export const countDistinct = async function countDistinct({ db, joins, tableName
21
18
  method: 'leftJoin'
22
19
  });
23
20
  });
21
+ // When we have any joins, we need to count each individual ID only once.
22
+ // COUNT(*) doesn't work for this well in this case, as it also counts joined tables.
23
+ // SELECT (COUNT DISTINCT id) has a very slow performance on large tables.
24
+ // Instead, COUNT (GROUP BY id) can be used which is still slower than COUNT(*) but acceptable.
24
25
  const countResult = await chainMethods({
25
26
  methods: chainedMethods,
26
27
  query: db.select({
27
- count: useDistinct ? sql`COUNT(DISTINCT ${this.tables[tableName].id})` : count()
28
- }).from(this.tables[tableName]).where(where)
28
+ count: sql`COUNT(1) OVER()`
29
+ }).from(this.tables[tableName]).where(where).groupBy(this.tables[tableName].id).limit(1)
29
30
  });
30
31
  return Number(countResult[0].count);
31
32
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/postgres/countDistinct.ts"],"sourcesContent":["import { count, sql } from 'drizzle-orm'\n\nimport type { ChainedMethods, TransactionPg } from '../types.js'\nimport type { BasePostgresAdapter, CountDistinct } from './types.js'\n\nimport { chainMethods } from '../find/chainMethods.js'\n\nexport const countDistinct: CountDistinct = async function countDistinct(\n this: BasePostgresAdapter,\n { db, joins, tableName, where },\n) {\n const chainedMethods: ChainedMethods = []\n\n // COUNT(DISTINCT id) is slow on large tables, so we only use DISTINCT if we have to\n const visitedPaths = new Set([])\n let useDistinct = false\n joins.forEach(({ condition, queryPath, table }) => {\n if (!useDistinct && queryPath) {\n if (visitedPaths.has(queryPath)) {\n useDistinct = true\n } else {\n visitedPaths.add(queryPath)\n }\n }\n chainedMethods.push({\n args: [table, condition],\n method: 'leftJoin',\n })\n })\n\n const countResult = await chainMethods({\n methods: chainedMethods,\n query: (db as TransactionPg)\n .select({\n count: useDistinct ? sql`COUNT(DISTINCT ${this.tables[tableName].id})` : count(),\n })\n .from(this.tables[tableName])\n .where(where),\n })\n\n return Number(countResult[0].count)\n}\n"],"names":["count","sql","chainMethods","countDistinct","db","joins","tableName","where","chainedMethods","visitedPaths","Set","useDistinct","forEach","condition","queryPath","table","has","add","push","args","method","countResult","methods","query","select","tables","id","from","Number"],"mappings":"AAAA,SAASA,KAAK,EAAEC,GAAG,QAAQ,cAAa;AAKxC,SAASC,YAAY,QAAQ,0BAAyB;AAEtD,OAAO,MAAMC,gBAA+B,eAAeA,cAEzD,EAAEC,EAAE,EAAEC,KAAK,EAAEC,SAAS,EAAEC,KAAK,EAAE;IAE/B,MAAMC,iBAAiC,EAAE;IAEzC,qFAAqF;IACrF,MAAMC,eAAe,IAAIC,IAAI,EAAE;IAC/B,IAAIC,cAAc;IAClBN,MAAMO,OAAO,CAAC,CAAC,EAAEC,SAAS,EAAEC,SAAS,EAAEC,KAAK,EAAE;QAC5C,IAAI,CAACJ,eAAeG,WAAW;YAC7B,IAAIL,aAAaO,GAAG,CAACF,YAAY;gBAC/BH,cAAc;YAChB,OAAO;gBACLF,aAAaQ,GAAG,CAACH;YACnB;QACF;QACAN,eAAeU,IAAI,CAAC;YAClBC,MAAM;gBAACJ;gBAAOF;aAAU;YACxBO,QAAQ;QACV;IACF;IAEA,MAAMC,cAAc,MAAMnB,aAAa;QACrCoB,SAASd;QACTe,OAAO,AAACnB,GACLoB,MAAM,CAAC;YACNxB,OAAOW,cAAcV,GAAG,CAAC,eAAe,EAAE,IAAI,CAACwB,MAAM,CAACnB,UAAU,CAACoB,EAAE,CAAC,CAAC,CAAC,GAAG1B;QAC3E,GACC2B,IAAI,CAAC,IAAI,CAACF,MAAM,CAACnB,UAAU,EAC3BC,KAAK,CAACA;IACX;IAEA,OAAOqB,OAAOP,WAAW,CAAC,EAAE,CAACrB,KAAK;AACpC,EAAC"}
1
+ {"version":3,"sources":["../../src/postgres/countDistinct.ts"],"sourcesContent":["import { count, sql } from 'drizzle-orm'\n\nimport type { ChainedMethods } from '../types.js'\nimport type { BasePostgresAdapter, CountDistinct } from './types.js'\n\nimport { chainMethods } from '../find/chainMethods.js'\n\nexport const countDistinct: CountDistinct = async function countDistinct(\n this: BasePostgresAdapter,\n { db, joins, tableName, where },\n) {\n // When we don't have any joins - use a simple COUNT(*) query.\n if (joins.length === 0) {\n const countResult = await db\n .select({\n count: count(),\n })\n .from(this.tables[tableName])\n .where(where)\n return Number(countResult[0].count)\n }\n\n const chainedMethods: ChainedMethods = []\n\n joins.forEach(({ condition, table }) => {\n chainedMethods.push({\n args: [table, condition],\n method: 'leftJoin',\n })\n })\n\n // When we have any joins, we need to count each individual ID only once.\n // COUNT(*) doesn't work for this well in this case, as it also counts joined tables.\n // SELECT (COUNT DISTINCT id) has a very slow performance on large tables.\n // Instead, COUNT (GROUP BY id) can be used which is still slower than COUNT(*) but acceptable.\n const countResult = await chainMethods({\n methods: chainedMethods,\n query: db\n .select({\n count: sql`COUNT(1) OVER()`,\n })\n .from(this.tables[tableName])\n .where(where)\n .groupBy(this.tables[tableName].id)\n .limit(1),\n })\n\n return Number(countResult[0].count)\n}\n"],"names":["count","sql","chainMethods","countDistinct","db","joins","tableName","where","length","countResult","select","from","tables","Number","chainedMethods","forEach","condition","table","push","args","method","methods","query","groupBy","id","limit"],"mappings":"AAAA,SAASA,KAAK,EAAEC,GAAG,QAAQ,cAAa;AAKxC,SAASC,YAAY,QAAQ,0BAAyB;AAEtD,OAAO,MAAMC,gBAA+B,eAAeA,cAEzD,EAAEC,EAAE,EAAEC,KAAK,EAAEC,SAAS,EAAEC,KAAK,EAAE;IAE/B,8DAA8D;IAC9D,IAAIF,MAAMG,MAAM,KAAK,GAAG;QACtB,MAAMC,cAAc,MAAML,GACvBM,MAAM,CAAC;YACNV,OAAOA;QACT,GACCW,IAAI,CAAC,IAAI,CAACC,MAAM,CAACN,UAAU,EAC3BC,KAAK,CAACA;QACT,OAAOM,OAAOJ,WAAW,CAAC,EAAE,CAACT,KAAK;IACpC;IAEA,MAAMc,iBAAiC,EAAE;IAEzCT,MAAMU,OAAO,CAAC,CAAC,EAAEC,SAAS,EAAEC,KAAK,EAAE;QACjCH,eAAeI,IAAI,CAAC;YAClBC,MAAM;gBAACF;gBAAOD;aAAU;YACxBI,QAAQ;QACV;IACF;IAEA,yEAAyE;IACzE,qFAAqF;IACrF,0EAA0E;IAC1E,+FAA+F;IAC/F,MAAMX,cAAc,MAAMP,aAAa;QACrCmB,SAASP;QACTQ,OAAOlB,GACJM,MAAM,CAAC;YACNV,OAAOC,GAAG,CAAC,eAAe,CAAC;QAC7B,GACCU,IAAI,CAAC,IAAI,CAACC,MAAM,CAACN,UAAU,EAC3BC,KAAK,CAACA,OACNgB,OAAO,CAAC,IAAI,CAACX,MAAM,CAACN,UAAU,CAACkB,EAAE,EACjCC,KAAK,CAAC;IACX;IAEA,OAAOZ,OAAOJ,WAAW,CAAC,EAAE,CAACT,KAAK;AACpC,EAAC"}
@@ -2,7 +2,7 @@ import type { SQL, Table } from 'drizzle-orm';
2
2
  import type { FlattenedField, Where } from 'payload';
3
3
  import type { DrizzleAdapter, GenericColumn } from '../types.js';
4
4
  import type { BuildQueryJoinAliases } from './buildQuery.js';
5
- export declare function buildAndOrConditions({ adapter, aliasTable, fields, joins, locale, selectFields, selectLocale, tableName, where, }: {
5
+ export declare function buildAndOrConditions({ adapter, aliasTable, fields, joins, locale, parentIsLocalized, selectFields, selectLocale, tableName, where, }: {
6
6
  adapter: DrizzleAdapter;
7
7
  aliasTable?: Table;
8
8
  collectionSlug?: string;
@@ -10,6 +10,7 @@ export declare function buildAndOrConditions({ adapter, aliasTable, fields, join
10
10
  globalSlug?: string;
11
11
  joins: BuildQueryJoinAliases;
12
12
  locale?: string;
13
+ parentIsLocalized: boolean;
13
14
  selectFields: Record<string, GenericColumn>;
14
15
  selectLocale?: boolean;
15
16
  tableName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"buildAndOrConditions.d.ts","sourceRoot":"","sources":["../../src/queries/buildAndOrConditions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAI5D,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,UAAU,EACV,MAAM,EACN,KAAK,EACL,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,KAAK,GACN,EAAE;IACD,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,EAAE,CAAA;CACf,GAAG,GAAG,EAAE,CAyBR"}
1
+ {"version":3,"file":"buildAndOrConditions.d.ts","sourceRoot":"","sources":["../../src/queries/buildAndOrConditions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAI5D,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,UAAU,EACV,MAAM,EACN,KAAK,EACL,MAAM,EACN,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,KAAK,GACN,EAAE;IACD,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,EAAE,CAAA;CACf,GAAG,GAAG,EAAE,CA0BR"}
@@ -1,5 +1,5 @@
1
1
  import { parseParams } from './parseParams.js';
2
- export function buildAndOrConditions({ adapter, aliasTable, fields, joins, locale, selectFields, selectLocale, tableName, where }) {
2
+ export function buildAndOrConditions({ adapter, aliasTable, fields, joins, locale, parentIsLocalized, selectFields, selectLocale, tableName, where }) {
3
3
  const completedConditions = [];
4
4
  // Loop over all AND / OR operations and add them to the AND / OR query param
5
5
  // Operations should come through as an array
@@ -12,6 +12,7 @@ export function buildAndOrConditions({ adapter, aliasTable, fields, joins, local
12
12
  fields,
13
13
  joins,
14
14
  locale,
15
+ parentIsLocalized,
15
16
  selectFields,
16
17
  selectLocale,
17
18
  tableName,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/buildAndOrConditions.ts"],"sourcesContent":["import type { SQL, Table } from 'drizzle-orm'\nimport type { FlattenedField, Where } from 'payload'\n\nimport type { DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\nimport { parseParams } from './parseParams.js'\n\nexport function buildAndOrConditions({\n adapter,\n aliasTable,\n fields,\n joins,\n locale,\n selectFields,\n selectLocale,\n tableName,\n where,\n}: {\n adapter: DrizzleAdapter\n aliasTable?: Table\n collectionSlug?: string\n fields: FlattenedField[]\n globalSlug?: string\n joins: BuildQueryJoinAliases\n locale?: string\n selectFields: Record<string, GenericColumn>\n selectLocale?: boolean\n tableName: string\n where: Where[]\n}): SQL[] {\n const completedConditions = []\n // Loop over all AND / OR operations and add them to the AND / OR query param\n // Operations should come through as an array\n\n for (const condition of where) {\n // If the operation is properly formatted as an object\n if (typeof condition === 'object') {\n const result = parseParams({\n adapter,\n aliasTable,\n fields,\n joins,\n locale,\n selectFields,\n selectLocale,\n tableName,\n where: condition,\n })\n if (result && Object.keys(result).length > 0) {\n completedConditions.push(result)\n }\n }\n }\n return completedConditions\n}\n"],"names":["parseParams","buildAndOrConditions","adapter","aliasTable","fields","joins","locale","selectFields","selectLocale","tableName","where","completedConditions","condition","result","Object","keys","length","push"],"mappings":"AAMA,SAASA,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,SAASC,qBAAqB,EACnCC,OAAO,EACPC,UAAU,EACVC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNC,YAAY,EACZC,YAAY,EACZC,SAAS,EACTC,KAAK,EAaN;IACC,MAAMC,sBAAsB,EAAE;IAC9B,6EAA6E;IAC7E,6CAA6C;IAE7C,KAAK,MAAMC,aAAaF,MAAO;QAC7B,sDAAsD;QACtD,IAAI,OAAOE,cAAc,UAAU;YACjC,MAAMC,SAASb,YAAY;gBACzBE;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC,OAAOE;YACT;YACA,IAAIC,UAAUC,OAAOC,IAAI,CAACF,QAAQG,MAAM,GAAG,GAAG;gBAC5CL,oBAAoBM,IAAI,CAACJ;YAC3B;QACF;IACF;IACA,OAAOF;AACT"}
1
+ {"version":3,"sources":["../../src/queries/buildAndOrConditions.ts"],"sourcesContent":["import type { SQL, Table } from 'drizzle-orm'\nimport type { FlattenedField, Where } from 'payload'\n\nimport type { DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\nimport { parseParams } from './parseParams.js'\n\nexport function buildAndOrConditions({\n adapter,\n aliasTable,\n fields,\n joins,\n locale,\n parentIsLocalized,\n selectFields,\n selectLocale,\n tableName,\n where,\n}: {\n adapter: DrizzleAdapter\n aliasTable?: Table\n collectionSlug?: string\n fields: FlattenedField[]\n globalSlug?: string\n joins: BuildQueryJoinAliases\n locale?: string\n parentIsLocalized: boolean\n selectFields: Record<string, GenericColumn>\n selectLocale?: boolean\n tableName: string\n where: Where[]\n}): SQL[] {\n const completedConditions = []\n // Loop over all AND / OR operations and add them to the AND / OR query param\n // Operations should come through as an array\n\n for (const condition of where) {\n // If the operation is properly formatted as an object\n if (typeof condition === 'object') {\n const result = parseParams({\n adapter,\n aliasTable,\n fields,\n joins,\n locale,\n parentIsLocalized,\n selectFields,\n selectLocale,\n tableName,\n where: condition,\n })\n if (result && Object.keys(result).length > 0) {\n completedConditions.push(result)\n }\n }\n }\n return completedConditions\n}\n"],"names":["parseParams","buildAndOrConditions","adapter","aliasTable","fields","joins","locale","parentIsLocalized","selectFields","selectLocale","tableName","where","completedConditions","condition","result","Object","keys","length","push"],"mappings":"AAMA,SAASA,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,SAASC,qBAAqB,EACnCC,OAAO,EACPC,UAAU,EACVC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNC,iBAAiB,EACjBC,YAAY,EACZC,YAAY,EACZC,SAAS,EACTC,KAAK,EAcN;IACC,MAAMC,sBAAsB,EAAE;IAC9B,6EAA6E;IAC7E,6CAA6C;IAE7C,KAAK,MAAMC,aAAaF,MAAO;QAC7B,sDAAsD;QACtD,IAAI,OAAOE,cAAc,UAAU;YACjC,MAAMC,SAASd,YAAY;gBACzBE;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC,OAAOE;YACT;YACA,IAAIC,UAAUC,OAAOC,IAAI,CAACF,QAAQG,MAAM,GAAG,GAAG;gBAC5CL,oBAAoBM,IAAI,CAACJ;YAC3B;QACF;IACF;IACA,OAAOF;AACT"}
@@ -8,6 +8,7 @@ type Args = {
8
8
  fields: FlattenedField[];
9
9
  joins: BuildQueryJoinAliases;
10
10
  locale?: string;
11
+ parentIsLocalized: boolean;
11
12
  selectFields: Record<string, GenericColumn>;
12
13
  sort?: Sort;
13
14
  tableName: string;
@@ -15,6 +16,6 @@ type Args = {
15
16
  /**
16
17
  * Gets the order by column and direction constructed from the sort argument adds the column to the select fields and joins if necessary
17
18
  */
18
- export declare const buildOrderBy: ({ adapter, aliasTable, fields, joins, locale, selectFields, sort, tableName, }: Args) => BuildQueryResult["orderBy"];
19
+ export declare const buildOrderBy: ({ adapter, aliasTable, fields, joins, locale, parentIsLocalized, selectFields, sort, tableName, }: Args) => BuildQueryResult["orderBy"];
19
20
  export {};
20
21
  //# sourceMappingURL=buildOrderBy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildOrderBy.d.ts","sourceRoot":"","sources":["../../src/queries/buildOrderBy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAInD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAK9E,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,mFAStB,IAAI,KAAG,gBAAgB,CAAC,SAAS,CAuDnC,CAAA"}
1
+ {"version":3,"file":"buildOrderBy.d.ts","sourceRoot":"","sources":["../../src/queries/buildOrderBy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAInD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAK9E,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,sGAUtB,IAAI,KAAG,gBAAgB,CAAC,SAAS,CAwDnC,CAAA"}
@@ -3,7 +3,7 @@ import { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js
3
3
  import { getTableColumnFromPath } from './getTableColumnFromPath.js';
4
4
  /**
5
5
  * Gets the order by column and direction constructed from the sort argument adds the column to the select fields and joins if necessary
6
- */ export const buildOrderBy = ({ adapter, aliasTable, fields, joins, locale, selectFields, sort, tableName })=>{
6
+ */ export const buildOrderBy = ({ adapter, aliasTable, fields, joins, locale, parentIsLocalized, selectFields, sort, tableName })=>{
7
7
  const orderBy = [];
8
8
  if (!sort) {
9
9
  const createdAt = adapter.tables[tableName]?.createdAt;
@@ -35,6 +35,7 @@ import { getTableColumnFromPath } from './getTableColumnFromPath.js';
35
35
  fields,
36
36
  joins,
37
37
  locale,
38
+ parentIsLocalized,
38
39
  pathSegments: sortProperty.replace(/__/g, '.').split('.'),
39
40
  selectFields,
40
41
  tableName,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/buildOrderBy.ts"],"sourcesContent":["import type { Table } from 'drizzle-orm'\nimport type { FlattenedField, Sort } from 'payload'\n\nimport { asc, desc } from 'drizzle-orm'\n\nimport type { DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { BuildQueryJoinAliases, BuildQueryResult } from './buildQuery.js'\n\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { getTableColumnFromPath } from './getTableColumnFromPath.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n aliasTable?: Table\n fields: FlattenedField[]\n joins: BuildQueryJoinAliases\n locale?: string\n selectFields: Record<string, GenericColumn>\n sort?: Sort\n tableName: string\n}\n\n/**\n * Gets the order by column and direction constructed from the sort argument adds the column to the select fields and joins if necessary\n */\nexport const buildOrderBy = ({\n adapter,\n aliasTable,\n fields,\n joins,\n locale,\n selectFields,\n sort,\n tableName,\n}: Args): BuildQueryResult['orderBy'] => {\n const orderBy: BuildQueryResult['orderBy'] = []\n\n if (!sort) {\n const createdAt = adapter.tables[tableName]?.createdAt\n if (createdAt) {\n sort = '-createdAt'\n } else {\n sort = '-id'\n }\n }\n\n if (typeof sort === 'string') {\n sort = [sort]\n }\n\n for (const sortItem of sort) {\n let sortProperty: string\n let sortDirection: 'asc' | 'desc'\n if (sortItem[0] === '-') {\n sortProperty = sortItem.substring(1)\n sortDirection = 'desc'\n } else {\n sortProperty = sortItem\n sortDirection = 'asc'\n }\n try {\n const { columnName: sortTableColumnName, table: sortTable } = getTableColumnFromPath({\n adapter,\n collectionPath: sortProperty,\n fields,\n joins,\n locale,\n pathSegments: sortProperty.replace(/__/g, '.').split('.'),\n selectFields,\n tableName,\n value: sortProperty,\n })\n if (sortTable?.[sortTableColumnName]) {\n orderBy.push({\n column:\n aliasTable && tableName === getNameFromDrizzleTable(sortTable)\n ? aliasTable[sortTableColumnName]\n : sortTable[sortTableColumnName],\n order: sortDirection === 'asc' ? asc : desc,\n })\n\n selectFields[sortTableColumnName] = sortTable[sortTableColumnName]\n }\n } catch (err) {\n // continue\n }\n }\n\n return orderBy\n}\n"],"names":["asc","desc","getNameFromDrizzleTable","getTableColumnFromPath","buildOrderBy","adapter","aliasTable","fields","joins","locale","selectFields","sort","tableName","orderBy","createdAt","tables","sortItem","sortProperty","sortDirection","substring","columnName","sortTableColumnName","table","sortTable","collectionPath","pathSegments","replace","split","value","push","column","order","err"],"mappings":"AAGA,SAASA,GAAG,EAAEC,IAAI,QAAQ,cAAa;AAKvC,SAASC,uBAAuB,QAAQ,0CAAyC;AACjF,SAASC,sBAAsB,QAAQ,8BAA6B;AAapE;;CAEC,GACD,OAAO,MAAMC,eAAe,CAAC,EAC3BC,OAAO,EACPC,UAAU,EACVC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNC,YAAY,EACZC,IAAI,EACJC,SAAS,EACJ;IACL,MAAMC,UAAuC,EAAE;IAE/C,IAAI,CAACF,MAAM;QACT,MAAMG,YAAYT,QAAQU,MAAM,CAACH,UAAU,EAAEE;QAC7C,IAAIA,WAAW;YACbH,OAAO;QACT,OAAO;YACLA,OAAO;QACT;IACF;IAEA,IAAI,OAAOA,SAAS,UAAU;QAC5BA,OAAO;YAACA;SAAK;IACf;IAEA,KAAK,MAAMK,YAAYL,KAAM;QAC3B,IAAIM;QACJ,IAAIC;QACJ,IAAIF,QAAQ,CAAC,EAAE,KAAK,KAAK;YACvBC,eAAeD,SAASG,SAAS,CAAC;YAClCD,gBAAgB;QAClB,OAAO;YACLD,eAAeD;YACfE,gBAAgB;QAClB;QACA,IAAI;YACF,MAAM,EAAEE,YAAYC,mBAAmB,EAAEC,OAAOC,SAAS,EAAE,GAAGpB,uBAAuB;gBACnFE;gBACAmB,gBAAgBP;gBAChBV;gBACAC;gBACAC;gBACAgB,cAAcR,aAAaS,OAAO,CAAC,OAAO,KAAKC,KAAK,CAAC;gBACrDjB;gBACAE;gBACAgB,OAAOX;YACT;YACA,IAAIM,WAAW,CAACF,oBAAoB,EAAE;gBACpCR,QAAQgB,IAAI,CAAC;oBACXC,QACExB,cAAcM,cAAcV,wBAAwBqB,aAChDjB,UAAU,CAACe,oBAAoB,GAC/BE,SAAS,CAACF,oBAAoB;oBACpCU,OAAOb,kBAAkB,QAAQlB,MAAMC;gBACzC;gBAEAS,YAAY,CAACW,oBAAoB,GAAGE,SAAS,CAACF,oBAAoB;YACpE;QACF,EAAE,OAAOW,KAAK;QACZ,WAAW;QACb;IACF;IAEA,OAAOnB;AACT,EAAC"}
1
+ {"version":3,"sources":["../../src/queries/buildOrderBy.ts"],"sourcesContent":["import type { Table } from 'drizzle-orm'\nimport type { FlattenedField, Sort } from 'payload'\n\nimport { asc, desc } from 'drizzle-orm'\n\nimport type { DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { BuildQueryJoinAliases, BuildQueryResult } from './buildQuery.js'\n\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { getTableColumnFromPath } from './getTableColumnFromPath.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n aliasTable?: Table\n fields: FlattenedField[]\n joins: BuildQueryJoinAliases\n locale?: string\n parentIsLocalized: boolean\n selectFields: Record<string, GenericColumn>\n sort?: Sort\n tableName: string\n}\n\n/**\n * Gets the order by column and direction constructed from the sort argument adds the column to the select fields and joins if necessary\n */\nexport const buildOrderBy = ({\n adapter,\n aliasTable,\n fields,\n joins,\n locale,\n parentIsLocalized,\n selectFields,\n sort,\n tableName,\n}: Args): BuildQueryResult['orderBy'] => {\n const orderBy: BuildQueryResult['orderBy'] = []\n\n if (!sort) {\n const createdAt = adapter.tables[tableName]?.createdAt\n if (createdAt) {\n sort = '-createdAt'\n } else {\n sort = '-id'\n }\n }\n\n if (typeof sort === 'string') {\n sort = [sort]\n }\n\n for (const sortItem of sort) {\n let sortProperty: string\n let sortDirection: 'asc' | 'desc'\n if (sortItem[0] === '-') {\n sortProperty = sortItem.substring(1)\n sortDirection = 'desc'\n } else {\n sortProperty = sortItem\n sortDirection = 'asc'\n }\n try {\n const { columnName: sortTableColumnName, table: sortTable } = getTableColumnFromPath({\n adapter,\n collectionPath: sortProperty,\n fields,\n joins,\n locale,\n parentIsLocalized,\n pathSegments: sortProperty.replace(/__/g, '.').split('.'),\n selectFields,\n tableName,\n value: sortProperty,\n })\n if (sortTable?.[sortTableColumnName]) {\n orderBy.push({\n column:\n aliasTable && tableName === getNameFromDrizzleTable(sortTable)\n ? aliasTable[sortTableColumnName]\n : sortTable[sortTableColumnName],\n order: sortDirection === 'asc' ? asc : desc,\n })\n\n selectFields[sortTableColumnName] = sortTable[sortTableColumnName]\n }\n } catch (err) {\n // continue\n }\n }\n\n return orderBy\n}\n"],"names":["asc","desc","getNameFromDrizzleTable","getTableColumnFromPath","buildOrderBy","adapter","aliasTable","fields","joins","locale","parentIsLocalized","selectFields","sort","tableName","orderBy","createdAt","tables","sortItem","sortProperty","sortDirection","substring","columnName","sortTableColumnName","table","sortTable","collectionPath","pathSegments","replace","split","value","push","column","order","err"],"mappings":"AAGA,SAASA,GAAG,EAAEC,IAAI,QAAQ,cAAa;AAKvC,SAASC,uBAAuB,QAAQ,0CAAyC;AACjF,SAASC,sBAAsB,QAAQ,8BAA6B;AAcpE;;CAEC,GACD,OAAO,MAAMC,eAAe,CAAC,EAC3BC,OAAO,EACPC,UAAU,EACVC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNC,iBAAiB,EACjBC,YAAY,EACZC,IAAI,EACJC,SAAS,EACJ;IACL,MAAMC,UAAuC,EAAE;IAE/C,IAAI,CAACF,MAAM;QACT,MAAMG,YAAYV,QAAQW,MAAM,CAACH,UAAU,EAAEE;QAC7C,IAAIA,WAAW;YACbH,OAAO;QACT,OAAO;YACLA,OAAO;QACT;IACF;IAEA,IAAI,OAAOA,SAAS,UAAU;QAC5BA,OAAO;YAACA;SAAK;IACf;IAEA,KAAK,MAAMK,YAAYL,KAAM;QAC3B,IAAIM;QACJ,IAAIC;QACJ,IAAIF,QAAQ,CAAC,EAAE,KAAK,KAAK;YACvBC,eAAeD,SAASG,SAAS,CAAC;YAClCD,gBAAgB;QAClB,OAAO;YACLD,eAAeD;YACfE,gBAAgB;QAClB;QACA,IAAI;YACF,MAAM,EAAEE,YAAYC,mBAAmB,EAAEC,OAAOC,SAAS,EAAE,GAAGrB,uBAAuB;gBACnFE;gBACAoB,gBAAgBP;gBAChBX;gBACAC;gBACAC;gBACAC;gBACAgB,cAAcR,aAAaS,OAAO,CAAC,OAAO,KAAKC,KAAK,CAAC;gBACrDjB;gBACAE;gBACAgB,OAAOX;YACT;YACA,IAAIM,WAAW,CAACF,oBAAoB,EAAE;gBACpCR,QAAQgB,IAAI,CAAC;oBACXC,QACEzB,cAAcO,cAAcX,wBAAwBsB,aAChDlB,UAAU,CAACgB,oBAAoB,GAC/BE,SAAS,CAACF,oBAAoB;oBACpCU,OAAOb,kBAAkB,QAAQnB,MAAMC;gBACzC;gBAEAU,YAAY,CAACW,oBAAoB,GAAGE,SAAS,CAACF,oBAAoB;YACpE;QACF,EAAE,OAAOW,KAAK;QACZ,WAAW;QACb;IACF;IAEA,OAAOnB;AACT,EAAC"}
@@ -14,6 +14,7 @@ type BuildQueryArgs = {
14
14
  fields: FlattenedField[];
15
15
  joins?: BuildQueryJoinAliases;
16
16
  locale?: string;
17
+ parentIsLocalized?: boolean;
17
18
  selectLocale?: boolean;
18
19
  sort?: Sort;
19
20
  tableName: string;
@@ -28,6 +29,6 @@ export type BuildQueryResult = {
28
29
  selectFields: Record<string, GenericColumn>;
29
30
  where: SQL;
30
31
  };
31
- declare const buildQuery: ({ adapter, aliasTable, fields, joins, locale, selectLocale, sort, tableName, where: incomingWhere, }: BuildQueryArgs) => BuildQueryResult;
32
+ declare const buildQuery: ({ adapter, aliasTable, fields, joins, locale, parentIsLocalized, selectLocale, sort, tableName, where: incomingWhere, }: BuildQueryArgs) => BuildQueryResult;
32
33
  export default buildQuery;
33
34
  //# sourceMappingURL=buildQuery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildQuery.d.ts","sourceRoot":"","sources":["../../src/queries/buildQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAK9E,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,GAAG,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IAC7C,IAAI,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,WAAW,CAAA;CAC9C,EAAE,CAAA;AAEH,KAAK,cAAc,GAAG;IACpB,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,qBAAqB,CAAA;IAC5B,OAAO,EAAE;QACP,MAAM,EAAE,aAAa,CAAA;QACrB,KAAK,EAAE,OAAO,GAAG,GAAG,OAAO,IAAI,CAAA;KAChC,EAAE,CAAA;IACH,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,KAAK,EAAE,GAAG,CAAA;CACX,CAAA;AACD,QAAA,MAAM,UAAU,yGAUb,cAAc,KAAG,gBAsCnB,CAAA;AAED,eAAe,UAAU,CAAA"}
1
+ {"version":3,"file":"buildQuery.d.ts","sourceRoot":"","sources":["../../src/queries/buildQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAK9E,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,GAAG,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IAC7C,IAAI,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,WAAW,CAAA;CAC9C,EAAE,CAAA;AAEH,KAAK,cAAc,GAAG;IACpB,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,qBAAqB,CAAA;IAC5B,OAAO,EAAE;QACP,MAAM,EAAE,aAAa,CAAA;QACrB,KAAK,EAAE,OAAO,GAAG,GAAG,OAAO,IAAI,CAAA;KAChC,EAAE,CAAA;IACH,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,KAAK,EAAE,GAAG,CAAA;CACX,CAAA;AACD,QAAA,MAAM,UAAU,4HAWb,cAAc,KAAG,gBAwCnB,CAAA;AAED,eAAe,UAAU,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { buildOrderBy } from './buildOrderBy.js';
2
2
  import { parseParams } from './parseParams.js';
3
- const buildQuery = function buildQuery({ adapter, aliasTable, fields, joins = [], locale, selectLocale, sort, tableName, where: incomingWhere }) {
3
+ const buildQuery = function buildQuery({ adapter, aliasTable, fields, joins = [], locale, parentIsLocalized, selectLocale, sort, tableName, where: incomingWhere }) {
4
4
  const selectFields = {
5
5
  id: adapter.tables[tableName].id
6
6
  };
@@ -10,6 +10,7 @@ const buildQuery = function buildQuery({ adapter, aliasTable, fields, joins = []
10
10
  fields,
11
11
  joins,
12
12
  locale,
13
+ parentIsLocalized,
13
14
  selectFields,
14
15
  sort,
15
16
  tableName
@@ -22,6 +23,7 @@ const buildQuery = function buildQuery({ adapter, aliasTable, fields, joins = []
22
23
  fields,
23
24
  joins,
24
25
  locale,
26
+ parentIsLocalized,
25
27
  selectFields,
26
28
  selectLocale,
27
29
  tableName,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/buildQuery.ts"],"sourcesContent":["import type { asc, desc, SQL, Table } from 'drizzle-orm'\nimport type { PgTableWithColumns } from 'drizzle-orm/pg-core'\nimport type { FlattenedField, Sort, Where } from 'payload'\n\nimport type { DrizzleAdapter, GenericColumn, GenericTable } from '../types.js'\n\nimport { buildOrderBy } from './buildOrderBy.js'\nimport { parseParams } from './parseParams.js'\n\nexport type BuildQueryJoinAliases = {\n condition: SQL\n queryPath?: string\n table: GenericTable | PgTableWithColumns<any>\n type?: 'innerJoin' | 'leftJoin' | 'rightJoin'\n}[]\n\ntype BuildQueryArgs = {\n adapter: DrizzleAdapter\n aliasTable?: Table\n fields: FlattenedField[]\n joins?: BuildQueryJoinAliases\n locale?: string\n selectLocale?: boolean\n sort?: Sort\n tableName: string\n where: Where\n}\n\nexport type BuildQueryResult = {\n joins: BuildQueryJoinAliases\n orderBy: {\n column: GenericColumn\n order: typeof asc | typeof desc\n }[]\n selectFields: Record<string, GenericColumn>\n where: SQL\n}\nconst buildQuery = function buildQuery({\n adapter,\n aliasTable,\n fields,\n joins = [],\n locale,\n selectLocale,\n sort,\n tableName,\n where: incomingWhere,\n}: BuildQueryArgs): BuildQueryResult {\n const selectFields: Record<string, GenericColumn> = {\n id: adapter.tables[tableName].id,\n }\n\n const orderBy = buildOrderBy({\n adapter,\n aliasTable,\n fields,\n joins,\n locale,\n selectFields,\n sort,\n tableName,\n })\n\n let where: SQL\n\n if (incomingWhere && Object.keys(incomingWhere).length > 0) {\n where = parseParams({\n adapter,\n aliasTable,\n fields,\n joins,\n locale,\n selectFields,\n selectLocale,\n tableName,\n where: incomingWhere,\n })\n }\n\n return {\n joins,\n orderBy,\n selectFields,\n where,\n }\n}\n\nexport default buildQuery\n"],"names":["buildOrderBy","parseParams","buildQuery","adapter","aliasTable","fields","joins","locale","selectLocale","sort","tableName","where","incomingWhere","selectFields","id","tables","orderBy","Object","keys","length"],"mappings":"AAMA,SAASA,YAAY,QAAQ,oBAAmB;AAChD,SAASC,WAAW,QAAQ,mBAAkB;AA8B9C,MAAMC,aAAa,SAASA,WAAW,EACrCC,OAAO,EACPC,UAAU,EACVC,MAAM,EACNC,QAAQ,EAAE,EACVC,MAAM,EACNC,YAAY,EACZC,IAAI,EACJC,SAAS,EACTC,OAAOC,aAAa,EACL;IACf,MAAMC,eAA8C;QAClDC,IAAIX,QAAQY,MAAM,CAACL,UAAU,CAACI,EAAE;IAClC;IAEA,MAAME,UAAUhB,aAAa;QAC3BG;QACAC;QACAC;QACAC;QACAC;QACAM;QACAJ;QACAC;IACF;IAEA,IAAIC;IAEJ,IAAIC,iBAAiBK,OAAOC,IAAI,CAACN,eAAeO,MAAM,GAAG,GAAG;QAC1DR,QAAQV,YAAY;YAClBE;YACAC;YACAC;YACAC;YACAC;YACAM;YACAL;YACAE;YACAC,OAAOC;QACT;IACF;IAEA,OAAO;QACLN;QACAU;QACAH;QACAF;IACF;AACF;AAEA,eAAeT,WAAU"}
1
+ {"version":3,"sources":["../../src/queries/buildQuery.ts"],"sourcesContent":["import type { asc, desc, SQL, Table } from 'drizzle-orm'\nimport type { PgTableWithColumns } from 'drizzle-orm/pg-core'\nimport type { FlattenedField, Sort, Where } from 'payload'\n\nimport type { DrizzleAdapter, GenericColumn, GenericTable } from '../types.js'\n\nimport { buildOrderBy } from './buildOrderBy.js'\nimport { parseParams } from './parseParams.js'\n\nexport type BuildQueryJoinAliases = {\n condition: SQL\n queryPath?: string\n table: GenericTable | PgTableWithColumns<any>\n type?: 'innerJoin' | 'leftJoin' | 'rightJoin'\n}[]\n\ntype BuildQueryArgs = {\n adapter: DrizzleAdapter\n aliasTable?: Table\n fields: FlattenedField[]\n joins?: BuildQueryJoinAliases\n locale?: string\n parentIsLocalized?: boolean\n selectLocale?: boolean\n sort?: Sort\n tableName: string\n where: Where\n}\n\nexport type BuildQueryResult = {\n joins: BuildQueryJoinAliases\n orderBy: {\n column: GenericColumn\n order: typeof asc | typeof desc\n }[]\n selectFields: Record<string, GenericColumn>\n where: SQL\n}\nconst buildQuery = function buildQuery({\n adapter,\n aliasTable,\n fields,\n joins = [],\n locale,\n parentIsLocalized,\n selectLocale,\n sort,\n tableName,\n where: incomingWhere,\n}: BuildQueryArgs): BuildQueryResult {\n const selectFields: Record<string, GenericColumn> = {\n id: adapter.tables[tableName].id,\n }\n\n const orderBy = buildOrderBy({\n adapter,\n aliasTable,\n fields,\n joins,\n locale,\n parentIsLocalized,\n selectFields,\n sort,\n tableName,\n })\n\n let where: SQL\n\n if (incomingWhere && Object.keys(incomingWhere).length > 0) {\n where = parseParams({\n adapter,\n aliasTable,\n fields,\n joins,\n locale,\n parentIsLocalized,\n selectFields,\n selectLocale,\n tableName,\n where: incomingWhere,\n })\n }\n\n return {\n joins,\n orderBy,\n selectFields,\n where,\n }\n}\n\nexport default buildQuery\n"],"names":["buildOrderBy","parseParams","buildQuery","adapter","aliasTable","fields","joins","locale","parentIsLocalized","selectLocale","sort","tableName","where","incomingWhere","selectFields","id","tables","orderBy","Object","keys","length"],"mappings":"AAMA,SAASA,YAAY,QAAQ,oBAAmB;AAChD,SAASC,WAAW,QAAQ,mBAAkB;AA+B9C,MAAMC,aAAa,SAASA,WAAW,EACrCC,OAAO,EACPC,UAAU,EACVC,MAAM,EACNC,QAAQ,EAAE,EACVC,MAAM,EACNC,iBAAiB,EACjBC,YAAY,EACZC,IAAI,EACJC,SAAS,EACTC,OAAOC,aAAa,EACL;IACf,MAAMC,eAA8C;QAClDC,IAAIZ,QAAQa,MAAM,CAACL,UAAU,CAACI,EAAE;IAClC;IAEA,MAAME,UAAUjB,aAAa;QAC3BG;QACAC;QACAC;QACAC;QACAC;QACAC;QACAM;QACAJ;QACAC;IACF;IAEA,IAAIC;IAEJ,IAAIC,iBAAiBK,OAAOC,IAAI,CAACN,eAAeO,MAAM,GAAG,GAAG;QAC1DR,QAAQX,YAAY;YAClBE;YACAC;YACAC;YACAC;YACAC;YACAC;YACAM;YACAL;YACAE;YACAC,OAAOC;QACT;IACF;IAEA,OAAO;QACLP;QACAW;QACAH;QACAF;IACF;AACF;AAEA,eAAeV,WAAU"}
@@ -32,6 +32,7 @@ type Args = {
32
32
  fields: FlattenedField[];
33
33
  joins: BuildQueryJoinAliases;
34
34
  locale?: string;
35
+ parentIsLocalized: boolean;
35
36
  pathSegments: string[];
36
37
  rootTableName?: string;
37
38
  selectFields: Record<string, GenericColumn>;
@@ -51,6 +52,6 @@ type Args = {
51
52
  * Adds tables to `join`
52
53
  * @returns TableColumn
53
54
  */
54
- export declare const getTableColumnFromPath: ({ adapter, aliasTable, collectionPath, columnPrefix, constraintPath: incomingConstraintPath, constraints, fields, joins, locale: incomingLocale, pathSegments: incomingSegments, rootTableName: incomingRootTableName, selectFields, selectLocale, tableName, tableNameSuffix, value, }: Args) => TableColumn;
55
+ export declare const getTableColumnFromPath: ({ adapter, aliasTable, collectionPath, columnPrefix, constraintPath: incomingConstraintPath, constraints, fields, joins, locale: incomingLocale, parentIsLocalized, pathSegments: incomingSegments, rootTableName: incomingRootTableName, selectFields, selectLocale, tableName, tableNameSuffix, value, }: Args) => TableColumn;
55
56
  export {};
56
57
  //# sourceMappingURL=getTableColumnFromPath.d.ts.map