@payloadcms/db-postgres 3.0.0-canary.f1db24e → 3.0.0-canary.f83d96a

Sign up to get free protection for your applications and to get access to all the features.
Files changed (285) hide show
  1. package/README.md +1 -1
  2. package/dist/connect.d.ts +1 -1
  3. package/dist/connect.d.ts.map +1 -1
  4. package/dist/connect.js.map +1 -1
  5. package/dist/count.d.ts +1 -1
  6. package/dist/count.d.ts.map +1 -1
  7. package/dist/count.js +1 -10
  8. package/dist/count.js.map +1 -1
  9. package/dist/create.d.ts +1 -1
  10. package/dist/create.d.ts.map +1 -1
  11. package/dist/create.js.map +1 -1
  12. package/dist/createGlobal.d.ts +2 -3
  13. package/dist/createGlobal.d.ts.map +1 -1
  14. package/dist/createGlobal.js.map +1 -1
  15. package/dist/createGlobalVersion.d.ts +2 -3
  16. package/dist/createGlobalVersion.d.ts.map +1 -1
  17. package/dist/createGlobalVersion.js +1 -1
  18. package/dist/createGlobalVersion.js.map +1 -1
  19. package/dist/createMigration.d.ts +1 -1
  20. package/dist/createMigration.d.ts.map +1 -1
  21. package/dist/createMigration.js +56 -35
  22. package/dist/createMigration.js.map +1 -1
  23. package/dist/createVersion.d.ts +1 -2
  24. package/dist/createVersion.d.ts.map +1 -1
  25. package/dist/createVersion.js +3 -7
  26. package/dist/createVersion.js.map +1 -1
  27. package/dist/deleteMany.d.ts +1 -1
  28. package/dist/deleteMany.d.ts.map +1 -1
  29. package/dist/deleteMany.js.map +1 -1
  30. package/dist/deleteOne.d.ts +1 -1
  31. package/dist/deleteOne.d.ts.map +1 -1
  32. package/dist/deleteOne.js +2 -2
  33. package/dist/deleteOne.js.map +1 -1
  34. package/dist/deleteVersions.d.ts +1 -1
  35. package/dist/deleteVersions.d.ts.map +1 -1
  36. package/dist/deleteVersions.js +1 -1
  37. package/dist/deleteVersions.js.map +1 -1
  38. package/dist/destroy.d.ts +1 -1
  39. package/dist/destroy.d.ts.map +1 -1
  40. package/dist/destroy.js.map +1 -1
  41. package/dist/exports/migration-utils.d.ts +2 -0
  42. package/dist/exports/migration-utils.d.ts.map +1 -0
  43. package/dist/exports/migration-utils.js +3 -0
  44. package/dist/exports/migration-utils.js.map +1 -0
  45. package/dist/find/buildFindManyArgs.d.ts +6 -2
  46. package/dist/find/buildFindManyArgs.d.ts.map +1 -1
  47. package/dist/find/buildFindManyArgs.js +2 -1
  48. package/dist/find/buildFindManyArgs.js.map +1 -1
  49. package/dist/find/chainMethods.d.ts.map +1 -1
  50. package/dist/find/chainMethods.js.map +1 -1
  51. package/dist/find/findMany.d.ts +1 -2
  52. package/dist/find/findMany.d.ts.map +1 -1
  53. package/dist/find/findMany.js +4 -15
  54. package/dist/find/findMany.js.map +1 -1
  55. package/dist/find/traverseFields.d.ts +4 -3
  56. package/dist/find/traverseFields.d.ts.map +1 -1
  57. package/dist/find/traverseFields.js +23 -5
  58. package/dist/find/traverseFields.js.map +1 -1
  59. package/dist/find.d.ts +1 -1
  60. package/dist/find.d.ts.map +1 -1
  61. package/dist/find.js.map +1 -1
  62. package/dist/findGlobal.d.ts +1 -1
  63. package/dist/findGlobal.d.ts.map +1 -1
  64. package/dist/findGlobal.js.map +1 -1
  65. package/dist/findGlobalVersions.d.ts +1 -1
  66. package/dist/findGlobalVersions.d.ts.map +1 -1
  67. package/dist/findGlobalVersions.js +1 -1
  68. package/dist/findGlobalVersions.js.map +1 -1
  69. package/dist/findOne.d.ts +1 -2
  70. package/dist/findOne.d.ts.map +1 -1
  71. package/dist/findOne.js.map +1 -1
  72. package/dist/findVersions.d.ts +1 -1
  73. package/dist/findVersions.d.ts.map +1 -1
  74. package/dist/findVersions.js +1 -1
  75. package/dist/findVersions.js.map +1 -1
  76. package/dist/index.d.ts +1 -1
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +1 -1
  79. package/dist/index.js.map +1 -1
  80. package/dist/init.d.ts +1 -1
  81. package/dist/init.d.ts.map +1 -1
  82. package/dist/init.js +15 -20
  83. package/dist/init.js.map +1 -1
  84. package/dist/migrate.d.ts.map +1 -1
  85. package/dist/migrate.js +1 -1
  86. package/dist/migrate.js.map +1 -1
  87. package/dist/migrateDown.js +1 -1
  88. package/dist/migrateDown.js.map +1 -1
  89. package/dist/migrateFresh.d.ts.map +1 -1
  90. package/dist/migrateFresh.js +1 -1
  91. package/dist/migrateFresh.js.map +1 -1
  92. package/dist/migrateRefresh.js +1 -1
  93. package/dist/migrateRefresh.js.map +1 -1
  94. package/dist/migrateReset.js +1 -1
  95. package/dist/migrateReset.js.map +1 -1
  96. package/dist/migrateStatus.js +1 -1
  97. package/dist/migrateStatus.js.map +1 -1
  98. package/dist/predefinedMigrations/relationships-v2-v3.d.ts +4 -0
  99. package/dist/predefinedMigrations/relationships-v2-v3.d.ts.map +1 -0
  100. package/dist/predefinedMigrations/relationships-v2-v3.js.map +1 -0
  101. package/dist/predefinedMigrations/relationships-v2-v3.mjs +11 -0
  102. package/dist/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts +19 -0
  103. package/dist/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts.map +1 -0
  104. package/dist/predefinedMigrations/v2-v3/fetchAndResave/index.js +169 -0
  105. package/dist/predefinedMigrations/v2-v3/fetchAndResave/index.js.map +1 -0
  106. package/dist/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.d.ts +11 -0
  107. package/dist/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.d.ts.map +1 -0
  108. package/dist/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.js +191 -0
  109. package/dist/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.js.map +1 -0
  110. package/dist/predefinedMigrations/v2-v3/groupUpSQLStatements.d.ts +3 -0
  111. package/dist/predefinedMigrations/v2-v3/groupUpSQLStatements.d.ts.map +1 -0
  112. package/dist/predefinedMigrations/v2-v3/groupUpSQLStatements.js +56 -0
  113. package/dist/predefinedMigrations/v2-v3/groupUpSQLStatements.js.map +1 -0
  114. package/dist/predefinedMigrations/v2-v3/index.d.ts +23 -0
  115. package/dist/predefinedMigrations/v2-v3/index.d.ts.map +1 -0
  116. package/dist/predefinedMigrations/v2-v3/index.js +211 -0
  117. package/dist/predefinedMigrations/v2-v3/index.js.map +1 -0
  118. package/dist/predefinedMigrations/v2-v3/migrateRelationships.d.ts +19 -0
  119. package/dist/predefinedMigrations/v2-v3/migrateRelationships.d.ts.map +1 -0
  120. package/dist/predefinedMigrations/v2-v3/migrateRelationships.js +57 -0
  121. package/dist/predefinedMigrations/v2-v3/migrateRelationships.js.map +1 -0
  122. package/dist/predefinedMigrations/v2-v3/traverseFields.d.ts +22 -0
  123. package/dist/predefinedMigrations/v2-v3/traverseFields.d.ts.map +1 -0
  124. package/dist/predefinedMigrations/v2-v3/traverseFields.js +85 -0
  125. package/dist/predefinedMigrations/v2-v3/traverseFields.js.map +1 -0
  126. package/dist/predefinedMigrations/v2-v3/types.d.ts +9 -0
  127. package/dist/predefinedMigrations/v2-v3/types.d.ts.map +1 -0
  128. package/dist/predefinedMigrations/v2-v3/types.js +6 -0
  129. package/dist/predefinedMigrations/v2-v3/types.js.map +1 -0
  130. package/dist/queries/buildAndOrConditions.d.ts +4 -5
  131. package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
  132. package/dist/queries/buildAndOrConditions.js +1 -2
  133. package/dist/queries/buildAndOrConditions.js.map +1 -1
  134. package/dist/queries/buildQuery.d.ts +2 -3
  135. package/dist/queries/buildQuery.d.ts.map +1 -1
  136. package/dist/queries/buildQuery.js +1 -5
  137. package/dist/queries/buildQuery.js.map +1 -1
  138. package/dist/queries/createJSONQuery/convertPathToJSONTraversal.js.map +1 -1
  139. package/dist/queries/createJSONQuery/formatJSONPathSegment.js.map +1 -1
  140. package/dist/queries/createJSONQuery/index.js.map +1 -1
  141. package/dist/queries/getTableColumnFromPath.d.ts +4 -5
  142. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  143. package/dist/queries/getTableColumnFromPath.js +170 -99
  144. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  145. package/dist/queries/operatorMap.js.map +1 -1
  146. package/dist/queries/parseParams.d.ts +4 -5
  147. package/dist/queries/parseParams.d.ts.map +1 -1
  148. package/dist/queries/parseParams.js +3 -5
  149. package/dist/queries/parseParams.js.map +1 -1
  150. package/dist/queries/sanitizeQueryValue.d.ts +1 -1
  151. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  152. package/dist/queries/sanitizeQueryValue.js +2 -3
  153. package/dist/queries/sanitizeQueryValue.js.map +1 -1
  154. package/dist/queries/selectDistinct.d.ts +3 -4
  155. package/dist/queries/selectDistinct.d.ts.map +1 -1
  156. package/dist/queries/selectDistinct.js +3 -14
  157. package/dist/queries/selectDistinct.js.map +1 -1
  158. package/dist/queryDrafts.d.ts +1 -1
  159. package/dist/queryDrafts.d.ts.map +1 -1
  160. package/dist/queryDrafts.js +1 -2
  161. package/dist/queryDrafts.js.map +1 -1
  162. package/dist/schema/build.d.ts +9 -5
  163. package/dist/schema/build.d.ts.map +1 -1
  164. package/dist/schema/build.js +161 -112
  165. package/dist/schema/build.js.map +1 -1
  166. package/dist/schema/createIndex.js.map +1 -1
  167. package/dist/schema/createTableName.d.ts +1 -1
  168. package/dist/schema/createTableName.d.ts.map +1 -1
  169. package/dist/schema/createTableName.js +1 -1
  170. package/dist/schema/createTableName.js.map +1 -1
  171. package/dist/schema/idToUUID.d.ts +1 -1
  172. package/dist/schema/idToUUID.d.ts.map +1 -1
  173. package/dist/schema/idToUUID.js.map +1 -1
  174. package/dist/schema/parentIDColumnMap.js.map +1 -1
  175. package/dist/schema/setColumnID.d.ts +1 -1
  176. package/dist/schema/setColumnID.d.ts.map +1 -1
  177. package/dist/schema/setColumnID.js +2 -2
  178. package/dist/schema/setColumnID.js.map +1 -1
  179. package/dist/schema/traverseFields.d.ts +5 -7
  180. package/dist/schema/traverseFields.d.ts.map +1 -1
  181. package/dist/schema/traverseFields.js +105 -42
  182. package/dist/schema/traverseFields.js.map +1 -1
  183. package/dist/schema/validateExistingBlockIsIdentical.d.ts +1 -1
  184. package/dist/schema/validateExistingBlockIsIdentical.d.ts.map +1 -1
  185. package/dist/schema/validateExistingBlockIsIdentical.js +2 -2
  186. package/dist/schema/validateExistingBlockIsIdentical.js.map +1 -1
  187. package/dist/transactions/beginTransaction.d.ts +1 -1
  188. package/dist/transactions/beginTransaction.d.ts.map +1 -1
  189. package/dist/transactions/beginTransaction.js.map +1 -1
  190. package/dist/transactions/commitTransaction.d.ts +1 -1
  191. package/dist/transactions/commitTransaction.d.ts.map +1 -1
  192. package/dist/transactions/commitTransaction.js.map +1 -1
  193. package/dist/transactions/rollbackTransaction.d.ts +1 -1
  194. package/dist/transactions/rollbackTransaction.d.ts.map +1 -1
  195. package/dist/transactions/rollbackTransaction.js.map +1 -1
  196. package/dist/transform/read/hasManyNumber.d.ts +1 -1
  197. package/dist/transform/read/hasManyNumber.d.ts.map +1 -1
  198. package/dist/transform/read/hasManyNumber.js.map +1 -1
  199. package/dist/transform/read/hasManyText.d.ts +1 -1
  200. package/dist/transform/read/hasManyText.d.ts.map +1 -1
  201. package/dist/transform/read/hasManyText.js.map +1 -1
  202. package/dist/transform/read/index.d.ts +4 -3
  203. package/dist/transform/read/index.d.ts.map +1 -1
  204. package/dist/transform/read/index.js +2 -1
  205. package/dist/transform/read/index.js.map +1 -1
  206. package/dist/transform/read/relationship.d.ts +1 -1
  207. package/dist/transform/read/relationship.d.ts.map +1 -1
  208. package/dist/transform/read/relationship.js +0 -4
  209. package/dist/transform/read/relationship.js.map +1 -1
  210. package/dist/transform/read/traverseFields.d.ts +8 -3
  211. package/dist/transform/read/traverseFields.d.ts.map +1 -1
  212. package/dist/transform/read/traverseFields.js +70 -56
  213. package/dist/transform/read/traverseFields.js.map +1 -1
  214. package/dist/transform/write/array.d.ts +1 -1
  215. package/dist/transform/write/array.d.ts.map +1 -1
  216. package/dist/transform/write/array.js.map +1 -1
  217. package/dist/transform/write/blocks.d.ts +1 -1
  218. package/dist/transform/write/blocks.d.ts.map +1 -1
  219. package/dist/transform/write/blocks.js.map +1 -1
  220. package/dist/transform/write/index.d.ts +1 -1
  221. package/dist/transform/write/index.d.ts.map +1 -1
  222. package/dist/transform/write/index.js.map +1 -1
  223. package/dist/transform/write/numbers.js.map +1 -1
  224. package/dist/transform/write/relationships.d.ts +1 -1
  225. package/dist/transform/write/relationships.d.ts.map +1 -1
  226. package/dist/transform/write/relationships.js +1 -1
  227. package/dist/transform/write/relationships.js.map +1 -1
  228. package/dist/transform/write/selects.js.map +1 -1
  229. package/dist/transform/write/texts.js.map +1 -1
  230. package/dist/transform/write/traverseFields.d.ts +1 -1
  231. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  232. package/dist/transform/write/traverseFields.js +21 -4
  233. package/dist/transform/write/traverseFields.js.map +1 -1
  234. package/dist/transform/write/types.js.map +1 -1
  235. package/dist/types.d.ts +1 -3
  236. package/dist/types.d.ts.map +1 -1
  237. package/dist/types.js.map +1 -1
  238. package/dist/update.d.ts +1 -1
  239. package/dist/update.d.ts.map +1 -1
  240. package/dist/update.js +1 -2
  241. package/dist/update.js.map +1 -1
  242. package/dist/updateGlobal.d.ts +2 -3
  243. package/dist/updateGlobal.d.ts.map +1 -1
  244. package/dist/updateGlobal.js.map +1 -1
  245. package/dist/updateGlobalVersion.d.ts +1 -2
  246. package/dist/updateGlobalVersion.d.ts.map +1 -1
  247. package/dist/updateGlobalVersion.js +1 -1
  248. package/dist/updateGlobalVersion.js.map +1 -1
  249. package/dist/updateVersion.d.ts +1 -2
  250. package/dist/updateVersion.d.ts.map +1 -1
  251. package/dist/updateVersion.js +1 -1
  252. package/dist/updateVersion.js.map +1 -1
  253. package/dist/upsertRow/deleteExistingArrayRows.d.ts.map +1 -1
  254. package/dist/upsertRow/deleteExistingArrayRows.js.map +1 -1
  255. package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -1
  256. package/dist/upsertRow/deleteExistingRowsByPath.js.map +1 -1
  257. package/dist/upsertRow/index.d.ts +2 -2
  258. package/dist/upsertRow/index.d.ts.map +1 -1
  259. package/dist/upsertRow/index.js +12 -8
  260. package/dist/upsertRow/index.js.map +1 -1
  261. package/dist/upsertRow/insertArrays.d.ts.map +1 -1
  262. package/dist/upsertRow/insertArrays.js.map +1 -1
  263. package/dist/upsertRow/types.d.ts +6 -1
  264. package/dist/upsertRow/types.d.ts.map +1 -1
  265. package/dist/upsertRow/types.js.map +1 -1
  266. package/dist/utilities/appendPrefixToKeys.d.ts.map +1 -1
  267. package/dist/utilities/appendPrefixToKeys.js.map +1 -1
  268. package/dist/utilities/createBlocksMap.d.ts.map +1 -1
  269. package/dist/utilities/createBlocksMap.js.map +1 -1
  270. package/dist/utilities/createMigrationTable.d.ts.map +1 -1
  271. package/dist/utilities/createMigrationTable.js.map +1 -1
  272. package/dist/utilities/createRelationshipMap.d.ts.map +1 -1
  273. package/dist/utilities/createRelationshipMap.js.map +1 -1
  274. package/dist/utilities/hasLocalesTable.d.ts +1 -1
  275. package/dist/utilities/hasLocalesTable.d.ts.map +1 -1
  276. package/dist/utilities/hasLocalesTable.js +1 -1
  277. package/dist/utilities/hasLocalesTable.js.map +1 -1
  278. package/dist/utilities/isArrayOfRows.js.map +1 -1
  279. package/dist/utilities/migrationTableExists.d.ts.map +1 -1
  280. package/dist/utilities/migrationTableExists.js.map +1 -1
  281. package/dist/utilities/parseError.js.map +1 -1
  282. package/dist/utilities/pushDevSchema.d.ts.map +1 -1
  283. package/dist/utilities/pushDevSchema.js +1 -1
  284. package/dist/utilities/pushDevSchema.js.map +1 -1
  285. package/package.json +20 -11
@@ -1,15 +1,14 @@
1
1
  /* eslint-disable no-param-reassign */ import { and, eq, like, sql } from 'drizzle-orm';
2
2
  import { alias } from 'drizzle-orm/pg-core';
3
- import { APIError } from 'payload/errors';
4
- import { fieldAffectsData, tabHasName } from 'payload/types';
5
- import { flattenTopLevelFields } from 'payload/utilities';
3
+ import { APIError, flattenTopLevelFields } from 'payload';
4
+ import { fieldAffectsData, tabHasName } from 'payload/shared';
6
5
  import toSnakeCase from 'to-snake-case';
7
6
  import { v4 as uuid } from 'uuid';
8
7
  /**
9
8
  * Transforms path to table and column name
10
9
  * Adds tables to `join`
11
10
  * @returns TableColumn
12
- */ export const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPrefix = '', constraintPath: incomingConstraintPath, constraints = [], fields, joinAliases, joins, locale: incomingLocale, pathSegments: incomingSegments, rootTableName: incomingRootTableName, selectFields, tableName, tableNameSuffix = '', value })=>{
11
+ */ export const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPrefix = '', constraintPath: incomingConstraintPath, constraints = [], fields, joins, locale: incomingLocale, pathSegments: incomingSegments, rootTableName: incomingRootTableName, selectFields, tableName, tableNameSuffix = '', value })=>{
13
12
  const fieldPath = incomingSegments[0];
14
13
  let locale = incomingLocale;
15
14
  const rootTableName = incomingRootTableName || tableName;
@@ -55,7 +54,6 @@ import { v4 as uuid } from 'uuid';
55
54
  ...tab,
56
55
  type: 'tab'
57
56
  })),
58
- joinAliases,
59
57
  joins,
60
58
  locale,
61
59
  pathSegments: pathSegments.slice(1),
@@ -77,7 +75,6 @@ import { v4 as uuid } from 'uuid';
77
75
  constraintPath: `${constraintPath}${field.name}.`,
78
76
  constraints,
79
77
  fields: field.fields,
80
- joinAliases,
81
78
  joins,
82
79
  locale,
83
80
  pathSegments: pathSegments.slice(1),
@@ -96,7 +93,6 @@ import { v4 as uuid } from 'uuid';
96
93
  constraintPath,
97
94
  constraints,
98
95
  fields: field.fields,
99
- joinAliases,
100
96
  joins,
101
97
  locale,
102
98
  pathSegments: pathSegments.slice(1),
@@ -111,7 +107,10 @@ import { v4 as uuid } from 'uuid';
111
107
  {
112
108
  if (locale && field.localized && adapter.payload.config.localization) {
113
109
  newTableName = `${tableName}${adapter.localesSuffix}`;
114
- joins[tableName] = eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID);
110
+ joins.push({
111
+ condition: eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID),
112
+ table: adapter.tables[newTableName]
113
+ });
115
114
  if (locale !== 'all') {
116
115
  constraints.push({
117
116
  columnName: '_locale',
@@ -128,7 +127,6 @@ import { v4 as uuid } from 'uuid';
128
127
  constraintPath: `${constraintPath}${field.name}.`,
129
128
  constraints,
130
129
  fields: field.fields,
131
- joinAliases,
132
130
  joins,
133
131
  locale,
134
132
  pathSegments: pathSegments.slice(1),
@@ -144,7 +142,10 @@ import { v4 as uuid } from 'uuid';
144
142
  if (field.hasMany) {
145
143
  const newTableName = adapter.tableNameMap.get(`${tableName}_${tableNameSuffix}${toSnakeCase(field.name)}`);
146
144
  if (locale && field.localized && adapter.payload.config.localization) {
147
- joins[newTableName] = and(eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent), eq(adapter.tables[newTableName]._locale, locale));
145
+ joins.push({
146
+ condition: and(eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent), eq(adapter.tables[newTableName]._locale, locale)),
147
+ table: adapter.tables[newTableName]
148
+ });
148
149
  if (locale !== 'all') {
149
150
  constraints.push({
150
151
  columnName: '_locale',
@@ -153,7 +154,10 @@ import { v4 as uuid } from 'uuid';
153
154
  });
154
155
  }
155
156
  } else {
156
- joins[newTableName] = eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent);
157
+ joins.push({
158
+ condition: eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent),
159
+ table: adapter.tables[newTableName]
160
+ });
157
161
  }
158
162
  return {
159
163
  columnName: 'value',
@@ -180,7 +184,10 @@ import { v4 as uuid } from 'uuid';
180
184
  eq(adapter.tables[newTableName].path, `${constraintPath}${field.name}`)
181
185
  ];
182
186
  if (locale && field.localized && adapter.payload.config.localization) {
183
- joins[newTableName] = and(...joinConstraints, eq(adapter.tables[newTableName]._locale, locale));
187
+ joins.push({
188
+ condition: and(...joinConstraints, eq(adapter.tables[newTableName]._locale, locale)),
189
+ table: adapter.tables[newTableName]
190
+ });
184
191
  if (locale !== 'all') {
185
192
  constraints.push({
186
193
  columnName: 'locale',
@@ -189,7 +196,10 @@ import { v4 as uuid } from 'uuid';
189
196
  });
190
197
  }
191
198
  } else {
192
- joins[newTableName] = and(...joinConstraints);
199
+ joins.push({
200
+ condition: and(...joinConstraints),
201
+ table: adapter.tables[newTableName]
202
+ });
193
203
  }
194
204
  return {
195
205
  columnName,
@@ -205,7 +215,10 @@ import { v4 as uuid } from 'uuid';
205
215
  newTableName = adapter.tableNameMap.get(`${tableName}_${tableNameSuffix}${toSnakeCase(field.name)}`);
206
216
  constraintPath = `${constraintPath}${field.name}.%.`;
207
217
  if (locale && field.localized && adapter.payload.config.localization) {
208
- joins[newTableName] = and(eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID), eq(adapter.tables[newTableName]._locale, locale));
218
+ joins.push({
219
+ condition: and(eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID), eq(adapter.tables[newTableName]._locale, locale)),
220
+ table: adapter.tables[newTableName]
221
+ });
209
222
  if (locale !== 'all') {
210
223
  constraints.push({
211
224
  columnName: '_locale',
@@ -214,7 +227,10 @@ import { v4 as uuid } from 'uuid';
214
227
  });
215
228
  }
216
229
  } else {
217
- joins[newTableName] = eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID);
230
+ joins.push({
231
+ condition: eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID),
232
+ table: adapter.tables[newTableName]
233
+ });
218
234
  }
219
235
  return getTableColumnFromPath({
220
236
  adapter,
@@ -222,7 +238,6 @@ import { v4 as uuid } from 'uuid';
222
238
  constraintPath,
223
239
  constraints,
224
240
  fields: field.fields,
225
- joinAliases,
226
241
  joins,
227
242
  locale,
228
243
  pathSegments: pathSegments.slice(1),
@@ -245,10 +260,15 @@ import { v4 as uuid } from 'uuid';
245
260
  blockTypes.forEach((blockType)=>{
246
261
  const block = field.blocks.find((block)=>block.slug === blockType);
247
262
  newTableName = adapter.tableNameMap.get(`${tableName}_blocks_${toSnakeCase(block.slug)}`);
248
- joins[newTableName] = eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID);
263
+ const newAliasTableName = toSnakeCase(uuid());
264
+ const newAliasTable = alias(adapter.tables[newTableName], newAliasTableName);
265
+ joins.push({
266
+ condition: eq(adapter.tables[tableName].id, newAliasTable._parentID),
267
+ table: newAliasTable
268
+ });
249
269
  constraints.push({
250
270
  columnName: '_path',
251
- table: adapter.tables[newTableName],
271
+ table: newAliasTable,
252
272
  value: pathSegments[0]
253
273
  });
254
274
  });
@@ -272,7 +292,6 @@ import { v4 as uuid } from 'uuid';
272
292
  constraintPath,
273
293
  constraints: blockConstraints,
274
294
  fields: block.fields,
275
- joinAliases,
276
295
  joins,
277
296
  locale,
278
297
  pathSegments: pathSegments.slice(1),
@@ -294,7 +313,10 @@ import { v4 as uuid } from 'uuid';
294
313
  ...blockSelectFields
295
314
  };
296
315
  if (field.localized && adapter.payload.config.localization) {
297
- joins[newTableName] = and(eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID), eq(adapter.tables[newTableName]._locale, locale));
316
+ joins.push({
317
+ condition: and(eq((aliasTable || adapter.tables[tableName]).id, adapter.tables[newTableName]._parentID), eq(adapter.tables[newTableName]._locale, locale)),
318
+ table: adapter.tables[newTableName]
319
+ });
298
320
  if (locale) {
299
321
  constraints.push({
300
322
  columnName: '_locale',
@@ -303,7 +325,10 @@ import { v4 as uuid } from 'uuid';
303
325
  });
304
326
  }
305
327
  } else {
306
- joins[newTableName] = eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID);
328
+ joins.push({
329
+ condition: eq((aliasTable || adapter.tables[tableName]).id, adapter.tables[newTableName]._parentID),
330
+ table: adapter.tables[newTableName]
331
+ });
307
332
  }
308
333
  return true;
309
334
  });
@@ -322,103 +347,149 @@ import { v4 as uuid } from 'uuid';
322
347
  case 'relationship':
323
348
  case 'upload':
324
349
  {
325
- let relationshipFields;
326
- const relationTableName = `${rootTableName}${adapter.relationshipsSuffix}`;
327
350
  const newCollectionPath = pathSegments.slice(1).join('.');
328
- const aliasRelationshipTableName = uuid();
329
- const aliasRelationshipTable = alias(adapter.tables[relationTableName], aliasRelationshipTableName);
330
- // Join in the relationships table
331
- if (locale && field.localized && adapter.payload.config.localization) {
332
- joinAliases.push({
333
- condition: and(eq((aliasTable || adapter.tables[rootTableName]).id, aliasRelationshipTable.parent), eq(aliasRelationshipTable.locale, locale), like(aliasRelationshipTable.path, `${constraintPath}${field.name}`)),
334
- table: aliasRelationshipTable
335
- });
336
- if (locale !== 'all') {
337
- constraints.push({
338
- columnName: 'locale',
339
- table: aliasRelationshipTable,
340
- value: locale
351
+ if (Array.isArray(field.relationTo) || field.type === 'relationship' && field.hasMany) {
352
+ let relationshipFields;
353
+ const relationTableName = `${rootTableName}${adapter.relationshipsSuffix}`;
354
+ const aliasRelationshipTableName = uuid();
355
+ const aliasRelationshipTable = alias(adapter.tables[relationTableName], aliasRelationshipTableName);
356
+ // Join in the relationships table
357
+ if (locale && field.localized && adapter.payload.config.localization) {
358
+ joins.push({
359
+ condition: and(eq((aliasTable || adapter.tables[rootTableName]).id, aliasRelationshipTable.parent), eq(aliasRelationshipTable.locale, locale), like(aliasRelationshipTable.path, `${constraintPath}${field.name}`)),
360
+ table: aliasRelationshipTable
361
+ });
362
+ if (locale !== 'all') {
363
+ constraints.push({
364
+ columnName: 'locale',
365
+ table: aliasRelationshipTable,
366
+ value: locale
367
+ });
368
+ }
369
+ } else {
370
+ // Join in the relationships table
371
+ joins.push({
372
+ condition: and(eq((aliasTable || adapter.tables[rootTableName]).id, aliasRelationshipTable.parent), like(aliasRelationshipTable.path, `${constraintPath}${field.name}`)),
373
+ table: aliasRelationshipTable
341
374
  });
342
375
  }
343
- } else {
344
- // Join in the relationships table
345
- joinAliases.push({
346
- condition: and(eq((aliasTable || adapter.tables[rootTableName]).id, aliasRelationshipTable.parent), like(aliasRelationshipTable.path, `${constraintPath}${field.name}`)),
347
- table: aliasRelationshipTable
348
- });
349
- }
350
- selectFields[`${relationTableName}.path`] = aliasRelationshipTable.path;
351
- let newAliasTable;
352
- if (typeof field.relationTo === 'string') {
353
- const relationshipConfig = adapter.payload.collections[field.relationTo].config;
354
- newTableName = adapter.tableNameMap.get(toSnakeCase(relationshipConfig.slug));
355
- // parent to relationship join table
356
- relationshipFields = relationshipConfig.fields;
357
- newAliasTable = alias(adapter.tables[newTableName], toSnakeCase(uuid()));
358
- joinAliases.push({
359
- condition: eq(newAliasTable.id, aliasRelationshipTable[`${field.relationTo}ID`]),
360
- table: newAliasTable
361
- });
362
- if (newCollectionPath === '' || newCollectionPath === 'id') {
376
+ selectFields[`${relationTableName}.path`] = aliasRelationshipTable.path;
377
+ let newAliasTable;
378
+ if (typeof field.relationTo === 'string') {
379
+ const relationshipConfig = adapter.payload.collections[field.relationTo].config;
380
+ newTableName = adapter.tableNameMap.get(toSnakeCase(relationshipConfig.slug));
381
+ // parent to relationship join table
382
+ relationshipFields = relationshipConfig.fields;
383
+ newAliasTable = alias(adapter.tables[newTableName], toSnakeCase(uuid()));
384
+ joins.push({
385
+ condition: eq(newAliasTable.id, aliasRelationshipTable[`${field.relationTo}ID`]),
386
+ table: newAliasTable
387
+ });
388
+ if (newCollectionPath === '' || newCollectionPath === 'id') {
389
+ return {
390
+ columnName: `${field.relationTo}ID`,
391
+ constraints,
392
+ field,
393
+ table: aliasRelationshipTable
394
+ };
395
+ }
396
+ } else if (newCollectionPath === 'value') {
397
+ const tableColumnsNames = field.relationTo.map((relationTo)=>{
398
+ const relationTableName = adapter.tableNameMap.get(toSnakeCase(adapter.payload.collections[relationTo].config.slug));
399
+ return `"${aliasRelationshipTableName}"."${relationTableName}_id"`;
400
+ });
363
401
  return {
364
- columnName: `${field.relationTo}ID`,
365
402
  constraints,
366
403
  field,
404
+ rawColumn: sql.raw(`COALESCE(${tableColumnsNames.join(', ')})`),
367
405
  table: aliasRelationshipTable
368
406
  };
407
+ } else if (newCollectionPath === 'relationTo') {
408
+ const relationTo = Array.isArray(field.relationTo) ? field.relationTo : [
409
+ field.relationTo
410
+ ];
411
+ return {
412
+ constraints,
413
+ field,
414
+ getNotNullColumnByValue: (val)=>{
415
+ const matchedRelation = relationTo.find((relation)=>relation === val);
416
+ if (matchedRelation) return `${matchedRelation}ID`;
417
+ return undefined;
418
+ },
419
+ table: aliasRelationshipTable
420
+ };
421
+ } else {
422
+ throw new APIError('Not supported');
369
423
  }
370
- } else if (newCollectionPath === 'value') {
371
- const tableColumnsNames = field.relationTo.map((relationTo)=>{
372
- const relationTableName = adapter.tableNameMap.get(toSnakeCase(adapter.payload.collections[relationTo].config.slug));
373
- return `"${aliasRelationshipTableName}"."${relationTableName}_id"`;
374
- });
375
- return {
424
+ return getTableColumnFromPath({
425
+ adapter,
426
+ aliasTable: newAliasTable,
427
+ collectionPath: newCollectionPath,
376
428
  constraints,
377
- field,
378
- rawColumn: sql.raw(`COALESCE(${tableColumnsNames.join(', ')})`),
379
- table: aliasRelationshipTable
380
- };
381
- } else if (newCollectionPath === 'relationTo') {
382
- const relationTo = Array.isArray(field.relationTo) ? field.relationTo : [
383
- field.relationTo
384
- ];
385
- return {
429
+ fields: relationshipFields,
430
+ joins,
431
+ locale,
432
+ pathSegments: pathSegments.slice(1),
433
+ rootTableName: newTableName,
434
+ selectFields,
435
+ tableName: newTableName,
436
+ value
437
+ });
438
+ } else if (pathSegments.length > 1 && !(pathSegments.length === 2 && pathSegments[1] === 'id')) {
439
+ // simple relationships
440
+ const columnName = `${columnPrefix}${field.name}`;
441
+ const newTableName = adapter.tableNameMap.get(toSnakeCase(adapter.payload.collections[field.relationTo].config.slug));
442
+ const aliasTableName = uuid();
443
+ const newAliasTable = alias(adapter.tables[newTableName], aliasTableName);
444
+ if (field.localized && adapter.payload.config.localization) {
445
+ const aliasLocaleTableName = uuid();
446
+ const aliasLocaleTable = alias(adapter.tables[`${rootTableName}${adapter.localesSuffix}`], aliasLocaleTableName);
447
+ joins.push({
448
+ condition: and(eq(aliasLocaleTable._parentID, adapter.tables[rootTableName].id), eq(aliasLocaleTable._locale, locale)),
449
+ table: aliasLocaleTable
450
+ });
451
+ joins.push({
452
+ condition: eq(aliasLocaleTable[columnName], newAliasTable.id),
453
+ table: newAliasTable
454
+ });
455
+ } else {
456
+ joins.push({
457
+ condition: eq(newAliasTable.id, aliasTable ? aliasTable[columnName] : adapter.tables[tableName][columnName]),
458
+ table: newAliasTable
459
+ });
460
+ }
461
+ return getTableColumnFromPath({
462
+ adapter,
463
+ aliasTable: newAliasTable,
464
+ collectionPath: newCollectionPath,
465
+ constraintPath: '',
386
466
  constraints,
387
- field,
388
- getNotNullColumnByValue: (val)=>{
389
- const matchedRelation = relationTo.find((relation)=>relation === val);
390
- if (matchedRelation) return `${matchedRelation}ID`;
391
- return undefined;
392
- },
393
- table: aliasRelationshipTable
394
- };
395
- } else {
396
- throw new APIError('Not supported');
467
+ fields: adapter.payload.collections[field.relationTo].config.fields,
468
+ joins,
469
+ locale,
470
+ pathSegments: pathSegments.slice(1),
471
+ selectFields,
472
+ tableName: newTableName,
473
+ value
474
+ });
397
475
  }
398
- return getTableColumnFromPath({
399
- adapter,
400
- aliasTable: newAliasTable,
401
- collectionPath: newCollectionPath,
402
- constraints,
403
- fields: relationshipFields,
404
- joinAliases,
405
- joins,
406
- locale,
407
- pathSegments: pathSegments.slice(1),
408
- rootTableName: newTableName,
409
- selectFields,
410
- tableName: newTableName,
411
- value
412
- });
476
+ break;
477
+ }
478
+ default:
479
+ {
480
+ break;
413
481
  }
414
482
  }
415
483
  if (fieldAffectsData(field)) {
416
484
  if (field.localized && adapter.payload.config.localization) {
417
485
  // If localized, we go to localized table and set aliasTable to undefined
418
486
  // so it is not picked up below to be used as targetTable
419
- newTableName = `${tableName}${adapter.localesSuffix}`;
420
487
  const parentTable = aliasTable || adapter.tables[tableName];
421
- joins[newTableName] = eq(parentTable.id, adapter.tables[newTableName]._parentID);
488
+ newTableName = `${tableName}${adapter.localesSuffix}`;
489
+ joins.push({
490
+ condition: eq(parentTable.id, adapter.tables[newTableName]._parentID),
491
+ table: adapter.tables[newTableName]
492
+ });
422
493
  aliasTable = undefined;
423
494
  if (locale !== 'all') {
424
495
  constraints.push({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/getTableColumnFromPath.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { SQL } from 'drizzle-orm'\nimport type { PgTableWithColumns } from 'drizzle-orm/pg-core'\nimport type { Field, FieldAffectingData, NumberField, TabAsField, TextField } from 'payload/types'\n\nimport { and, eq, like, sql } from 'drizzle-orm'\nimport { alias } from 'drizzle-orm/pg-core'\nimport { APIError } from 'payload/errors'\nimport { fieldAffectsData, tabHasName } from 'payload/types'\nimport { flattenTopLevelFields } from 'payload/utilities'\nimport toSnakeCase from 'to-snake-case'\nimport { v4 as uuid } from 'uuid'\n\nimport type { GenericColumn, GenericTable, PostgresAdapter } from '../types.js'\nimport type { BuildQueryJoinAliases, BuildQueryJoins } from './buildQuery.js'\n\ntype Constraint = {\n columnName: string\n table: GenericTable | PgTableWithColumns<any>\n value: unknown\n}\n\ntype TableColumn = {\n columnName?: string\n constraints: Constraint[]\n field: FieldAffectingData\n getNotNullColumnByValue?: (val: unknown) => string\n pathSegments?: string[]\n rawColumn?: SQL\n table: GenericTable | PgTableWithColumns<any>\n}\n\ntype Args = {\n adapter: PostgresAdapter\n aliasTable?: GenericTable | PgTableWithColumns<any>\n collectionPath: string\n columnPrefix?: string\n constraintPath?: string\n constraints?: Constraint[]\n fields: (Field | TabAsField)[]\n joinAliases: BuildQueryJoinAliases\n joins: BuildQueryJoins\n locale?: string\n pathSegments: string[]\n rootTableName?: string\n selectFields: Record<string, GenericColumn>\n tableName: string\n /**\n * If creating a new table name for arrays and blocks, this suffix should be appended to the table name\n */\n tableNameSuffix?: string\n /**\n * The raw value of the query before sanitization\n */\n value: unknown\n}\n/**\n * Transforms path to table and column name\n * Adds tables to `join`\n * @returns TableColumn\n */\nexport const getTableColumnFromPath = ({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix = '',\n constraintPath: incomingConstraintPath,\n constraints = [],\n fields,\n joinAliases,\n joins,\n locale: incomingLocale,\n pathSegments: incomingSegments,\n rootTableName: incomingRootTableName,\n selectFields,\n tableName,\n tableNameSuffix = '',\n value,\n}: Args): TableColumn => {\n const fieldPath = incomingSegments[0]\n let locale = incomingLocale\n const rootTableName = incomingRootTableName || tableName\n let constraintPath = incomingConstraintPath || ''\n\n const field = flattenTopLevelFields(fields as Field[]).find(\n (fieldToFind) => fieldAffectsData(fieldToFind) && fieldToFind.name === fieldPath,\n ) as Field | TabAsField\n let newTableName = tableName\n\n if (!field && fieldPath === 'id') {\n selectFields.id = adapter.tables[newTableName].id\n return {\n columnName: 'id',\n constraints,\n field: {\n name: 'id',\n type: adapter.idType === 'uuid' ? 'text' : 'number',\n } as NumberField | TextField,\n table: adapter.tables[newTableName],\n }\n }\n\n if (field) {\n const pathSegments = [...incomingSegments]\n\n // If next segment is a locale,\n // we need to take it out and use it as the locale from this point on\n if ('localized' in field && field.localized && adapter.payload.config.localization) {\n const matchedLocale = adapter.payload.config.localization.localeCodes.find(\n (locale) => locale === pathSegments[1],\n )\n\n if (matchedLocale) {\n locale = matchedLocale\n pathSegments.splice(1, 1)\n }\n }\n\n switch (field.type) {\n case 'tabs': {\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix,\n constraintPath,\n constraints,\n fields: field.tabs.map((tab) => ({\n ...tab,\n type: 'tab',\n })),\n joinAliases,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n tableName: newTableName,\n tableNameSuffix,\n value,\n })\n }\n case 'tab': {\n if (tabHasName(field)) {\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix: `${columnPrefix}${field.name}_`,\n constraintPath: `${constraintPath}${field.name}.`,\n constraints,\n fields: field.fields,\n joinAliases,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n tableName: newTableName,\n tableNameSuffix: `${tableNameSuffix}${toSnakeCase(field.name)}_`,\n value,\n })\n }\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix,\n constraintPath,\n constraints,\n fields: field.fields,\n joinAliases,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n tableName: newTableName,\n tableNameSuffix,\n value,\n })\n }\n\n case 'group': {\n if (locale && field.localized && adapter.payload.config.localization) {\n newTableName = `${tableName}${adapter.localesSuffix}`\n\n joins[tableName] = eq(\n adapter.tables[tableName].id,\n adapter.tables[newTableName]._parentID,\n )\n if (locale !== 'all') {\n constraints.push({\n columnName: '_locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n }\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix: `${columnPrefix}${field.name}_`,\n constraintPath: `${constraintPath}${field.name}.`,\n constraints,\n fields: field.fields,\n joinAliases,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n tableName: newTableName,\n tableNameSuffix: `${tableNameSuffix}${toSnakeCase(field.name)}_`,\n value,\n })\n }\n\n case 'select': {\n if (field.hasMany) {\n const newTableName = adapter.tableNameMap.get(\n `${tableName}_${tableNameSuffix}${toSnakeCase(field.name)}`,\n )\n\n if (locale && field.localized && adapter.payload.config.localization) {\n joins[newTableName] = and(\n eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent),\n eq(adapter.tables[newTableName]._locale, locale),\n )\n if (locale !== 'all') {\n constraints.push({\n columnName: '_locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n } else {\n joins[newTableName] = eq(\n adapter.tables[tableName].id,\n adapter.tables[newTableName].parent,\n )\n }\n\n return {\n columnName: 'value',\n constraints,\n field,\n table: adapter.tables[newTableName],\n }\n }\n break\n }\n\n case 'text':\n case 'number': {\n if (field.hasMany) {\n let tableType = 'texts'\n let columnName = 'text'\n if (field.type === 'number') {\n tableType = 'numbers'\n columnName = 'number'\n }\n newTableName = `${tableName}_${tableType}`\n const joinConstraints = [\n eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent),\n eq(adapter.tables[newTableName].path, `${constraintPath}${field.name}`),\n ]\n\n if (locale && field.localized && adapter.payload.config.localization) {\n joins[newTableName] = and(\n ...joinConstraints,\n eq(adapter.tables[newTableName]._locale, locale),\n )\n if (locale !== 'all') {\n constraints.push({\n columnName: 'locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n } else {\n joins[newTableName] = and(...joinConstraints)\n }\n\n return {\n columnName,\n constraints,\n field,\n table: adapter.tables[newTableName],\n }\n }\n break\n }\n\n case 'array': {\n newTableName = adapter.tableNameMap.get(\n `${tableName}_${tableNameSuffix}${toSnakeCase(field.name)}`,\n )\n\n constraintPath = `${constraintPath}${field.name}.%.`\n if (locale && field.localized && adapter.payload.config.localization) {\n joins[newTableName] = and(\n eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID),\n eq(adapter.tables[newTableName]._locale, locale),\n )\n if (locale !== 'all') {\n constraints.push({\n columnName: '_locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n } else {\n joins[newTableName] = eq(\n adapter.tables[tableName].id,\n adapter.tables[newTableName]._parentID,\n )\n }\n return getTableColumnFromPath({\n adapter,\n collectionPath,\n constraintPath,\n constraints,\n fields: field.fields,\n joinAliases,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n tableName: newTableName,\n value,\n })\n }\n\n case 'blocks': {\n let blockTableColumn: TableColumn\n let newTableName: string\n\n // handle blockType queries\n if (pathSegments[1] === 'blockType') {\n // find the block config using the value\n const blockTypes = Array.isArray(value) ? value : [value]\n blockTypes.forEach((blockType) => {\n const block = field.blocks.find((block) => block.slug === blockType)\n\n newTableName = adapter.tableNameMap.get(\n `${tableName}_blocks_${toSnakeCase(block.slug)}`,\n )\n\n joins[newTableName] = eq(\n adapter.tables[tableName].id,\n adapter.tables[newTableName]._parentID,\n )\n constraints.push({\n columnName: '_path',\n table: adapter.tables[newTableName],\n value: pathSegments[0],\n })\n })\n return {\n constraints,\n field,\n getNotNullColumnByValue: () => 'id',\n table: adapter.tables[tableName],\n }\n }\n\n const hasBlockField = field.blocks.some((block) => {\n newTableName = adapter.tableNameMap.get(`${tableName}_blocks_${toSnakeCase(block.slug)}`)\n constraintPath = `${constraintPath}${field.name}.%.`\n\n let result\n const blockConstraints = []\n const blockSelectFields = {}\n try {\n result = getTableColumnFromPath({\n adapter,\n collectionPath,\n constraintPath,\n constraints: blockConstraints,\n fields: block.fields,\n joinAliases,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields: blockSelectFields,\n tableName: newTableName,\n value,\n })\n } catch (error) {\n // this is fine, not every block will have the field\n }\n if (!result) {\n return\n }\n blockTableColumn = result\n constraints = constraints.concat(blockConstraints)\n selectFields = { ...selectFields, ...blockSelectFields }\n if (field.localized && adapter.payload.config.localization) {\n joins[newTableName] = and(\n eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID),\n eq(adapter.tables[newTableName]._locale, locale),\n )\n if (locale) {\n constraints.push({\n columnName: '_locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n } else {\n joins[newTableName] = eq(\n adapter.tables[tableName].id,\n adapter.tables[newTableName]._parentID,\n )\n }\n return true\n })\n if (hasBlockField) {\n return {\n columnName: blockTableColumn.columnName,\n constraints,\n field: blockTableColumn.field,\n pathSegments: pathSegments.slice(1),\n rawColumn: blockTableColumn.rawColumn,\n table: blockTableColumn.table,\n }\n }\n break\n }\n\n case 'relationship':\n case 'upload': {\n let relationshipFields\n const relationTableName = `${rootTableName}${adapter.relationshipsSuffix}`\n const newCollectionPath = pathSegments.slice(1).join('.')\n const aliasRelationshipTableName = uuid()\n const aliasRelationshipTable = alias(\n adapter.tables[relationTableName],\n aliasRelationshipTableName,\n )\n\n // Join in the relationships table\n if (locale && field.localized && adapter.payload.config.localization) {\n joinAliases.push({\n condition: and(\n eq((aliasTable || adapter.tables[rootTableName]).id, aliasRelationshipTable.parent),\n eq(aliasRelationshipTable.locale, locale),\n like(aliasRelationshipTable.path, `${constraintPath}${field.name}`),\n ),\n table: aliasRelationshipTable,\n })\n if (locale !== 'all') {\n constraints.push({\n columnName: 'locale',\n table: aliasRelationshipTable,\n value: locale,\n })\n }\n } else {\n // Join in the relationships table\n joinAliases.push({\n condition: and(\n eq((aliasTable || adapter.tables[rootTableName]).id, aliasRelationshipTable.parent),\n like(aliasRelationshipTable.path, `${constraintPath}${field.name}`),\n ),\n table: aliasRelationshipTable,\n })\n }\n\n selectFields[`${relationTableName}.path`] = aliasRelationshipTable.path\n\n let newAliasTable\n\n if (typeof field.relationTo === 'string') {\n const relationshipConfig = adapter.payload.collections[field.relationTo].config\n\n newTableName = adapter.tableNameMap.get(toSnakeCase(relationshipConfig.slug))\n\n // parent to relationship join table\n relationshipFields = relationshipConfig.fields\n\n newAliasTable = alias(adapter.tables[newTableName], toSnakeCase(uuid()))\n\n joinAliases.push({\n condition: eq(newAliasTable.id, aliasRelationshipTable[`${field.relationTo}ID`]),\n table: newAliasTable,\n })\n\n if (newCollectionPath === '' || newCollectionPath === 'id') {\n return {\n columnName: `${field.relationTo}ID`,\n constraints,\n field,\n table: aliasRelationshipTable,\n }\n }\n } else if (newCollectionPath === 'value') {\n const tableColumnsNames = field.relationTo.map((relationTo) => {\n const relationTableName = adapter.tableNameMap.get(\n toSnakeCase(adapter.payload.collections[relationTo].config.slug),\n )\n\n return `\"${aliasRelationshipTableName}\".\"${relationTableName}_id\"`\n })\n return {\n constraints,\n field,\n rawColumn: sql.raw(`COALESCE(${tableColumnsNames.join(', ')})`),\n table: aliasRelationshipTable,\n }\n } else if (newCollectionPath === 'relationTo') {\n const relationTo = Array.isArray(field.relationTo) ? field.relationTo : [field.relationTo]\n\n return {\n constraints,\n field,\n getNotNullColumnByValue: (val) => {\n const matchedRelation = relationTo.find((relation) => relation === val)\n if (matchedRelation) return `${matchedRelation}ID`\n return undefined\n },\n table: aliasRelationshipTable,\n }\n } else {\n throw new APIError('Not supported')\n }\n\n return getTableColumnFromPath({\n adapter,\n aliasTable: newAliasTable,\n collectionPath: newCollectionPath,\n constraints,\n fields: relationshipFields,\n joinAliases,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName: newTableName,\n selectFields,\n tableName: newTableName,\n value,\n })\n }\n }\n\n if (fieldAffectsData(field)) {\n if (field.localized && adapter.payload.config.localization) {\n // If localized, we go to localized table and set aliasTable to undefined\n // so it is not picked up below to be used as targetTable\n newTableName = `${tableName}${adapter.localesSuffix}`\n\n const parentTable = aliasTable || adapter.tables[tableName]\n\n joins[newTableName] = eq(parentTable.id, adapter.tables[newTableName]._parentID)\n\n aliasTable = undefined\n\n if (locale !== 'all') {\n constraints.push({\n columnName: '_locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n }\n\n const targetTable = aliasTable || adapter.tables[newTableName]\n\n selectFields[`${newTableName}.${columnPrefix}${field.name}`] =\n targetTable[`${columnPrefix}${field.name}`]\n\n return {\n columnName: `${columnPrefix}${field.name}`,\n constraints,\n field,\n pathSegments,\n table: targetTable,\n }\n }\n }\n\n throw new APIError(`Cannot find field for path at ${fieldPath}`)\n}\n"],"names":["and","eq","like","sql","alias","APIError","fieldAffectsData","tabHasName","flattenTopLevelFields","toSnakeCase","v4","uuid","getTableColumnFromPath","adapter","aliasTable","collectionPath","columnPrefix","constraintPath","incomingConstraintPath","constraints","fields","joinAliases","joins","locale","incomingLocale","pathSegments","incomingSegments","rootTableName","incomingRootTableName","selectFields","tableName","tableNameSuffix","value","fieldPath","field","find","fieldToFind","name","newTableName","id","tables","columnName","type","idType","table","localized","payload","config","localization","matchedLocale","localeCodes","splice","tabs","map","tab","slice","localesSuffix","_parentID","push","hasMany","tableNameMap","get","parent","_locale","tableType","joinConstraints","path","blockTableColumn","blockTypes","Array","isArray","forEach","blockType","block","blocks","slug","getNotNullColumnByValue","hasBlockField","some","result","blockConstraints","blockSelectFields","error","concat","rawColumn","relationshipFields","relationTableName","relationshipsSuffix","newCollectionPath","join","aliasRelationshipTableName","aliasRelationshipTable","condition","newAliasTable","relationTo","relationshipConfig","collections","tableColumnsNames","raw","val","matchedRelation","relation","undefined","parentTable","targetTable"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../src/queries/getTableColumnFromPath.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { SQL } from 'drizzle-orm'\nimport type { PgTableWithColumns } from 'drizzle-orm/pg-core'\nimport type { Field, FieldAffectingData, NumberField, TabAsField, TextField } from 'payload'\n\nimport { and, eq, like, sql } from 'drizzle-orm'\nimport { alias } from 'drizzle-orm/pg-core'\nimport { APIError, flattenTopLevelFields } from 'payload'\nimport { fieldAffectsData, tabHasName } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\nimport { v4 as uuid } from 'uuid'\n\nimport type { GenericColumn, GenericTable, PostgresAdapter } from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\ntype Constraint = {\n columnName: string\n table: GenericTable | PgTableWithColumns<any>\n value: unknown\n}\n\ntype TableColumn = {\n columnName?: string\n constraints: Constraint[]\n field: FieldAffectingData\n getNotNullColumnByValue?: (val: unknown) => string\n pathSegments?: string[]\n rawColumn?: SQL\n table: GenericTable | PgTableWithColumns<any>\n}\n\ntype Args = {\n adapter: PostgresAdapter\n aliasTable?: GenericTable | PgTableWithColumns<any>\n collectionPath: string\n columnPrefix?: string\n constraintPath?: string\n constraints?: Constraint[]\n fields: (Field | TabAsField)[]\n joins: BuildQueryJoinAliases\n locale?: string\n pathSegments: string[]\n rootTableName?: string\n selectFields: Record<string, GenericColumn>\n tableName: string\n /**\n * If creating a new table name for arrays and blocks, this suffix should be appended to the table name\n */\n tableNameSuffix?: string\n /**\n * The raw value of the query before sanitization\n */\n value: unknown\n}\n/**\n * Transforms path to table and column name\n * Adds tables to `join`\n * @returns TableColumn\n */\nexport const getTableColumnFromPath = ({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix = '',\n constraintPath: incomingConstraintPath,\n constraints = [],\n fields,\n joins,\n locale: incomingLocale,\n pathSegments: incomingSegments,\n rootTableName: incomingRootTableName,\n selectFields,\n tableName,\n tableNameSuffix = '',\n value,\n}: Args): TableColumn => {\n const fieldPath = incomingSegments[0]\n let locale = incomingLocale\n const rootTableName = incomingRootTableName || tableName\n let constraintPath = incomingConstraintPath || ''\n\n const field = flattenTopLevelFields(fields as Field[]).find(\n (fieldToFind) => fieldAffectsData(fieldToFind) && fieldToFind.name === fieldPath,\n ) as Field | TabAsField\n let newTableName = tableName\n\n if (!field && fieldPath === 'id') {\n selectFields.id = adapter.tables[newTableName].id\n return {\n columnName: 'id',\n constraints,\n field: {\n name: 'id',\n type: adapter.idType === 'uuid' ? 'text' : 'number',\n } as NumberField | TextField,\n table: adapter.tables[newTableName],\n }\n }\n\n if (field) {\n const pathSegments = [...incomingSegments]\n\n // If next segment is a locale,\n // we need to take it out and use it as the locale from this point on\n if ('localized' in field && field.localized && adapter.payload.config.localization) {\n const matchedLocale = adapter.payload.config.localization.localeCodes.find(\n (locale) => locale === pathSegments[1],\n )\n\n if (matchedLocale) {\n locale = matchedLocale\n pathSegments.splice(1, 1)\n }\n }\n\n switch (field.type) {\n case 'tabs': {\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix,\n constraintPath,\n constraints,\n fields: field.tabs.map((tab) => ({\n ...tab,\n type: 'tab',\n })),\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n tableName: newTableName,\n tableNameSuffix,\n value,\n })\n }\n case 'tab': {\n if (tabHasName(field)) {\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix: `${columnPrefix}${field.name}_`,\n constraintPath: `${constraintPath}${field.name}.`,\n constraints,\n fields: field.fields,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n tableName: newTableName,\n tableNameSuffix: `${tableNameSuffix}${toSnakeCase(field.name)}_`,\n value,\n })\n }\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix,\n constraintPath,\n constraints,\n fields: field.fields,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n tableName: newTableName,\n tableNameSuffix,\n value,\n })\n }\n\n case 'group': {\n if (locale && field.localized && adapter.payload.config.localization) {\n newTableName = `${tableName}${adapter.localesSuffix}`\n\n joins.push({\n condition: eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID),\n table: adapter.tables[newTableName],\n })\n if (locale !== 'all') {\n constraints.push({\n columnName: '_locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n }\n return getTableColumnFromPath({\n adapter,\n aliasTable,\n collectionPath,\n columnPrefix: `${columnPrefix}${field.name}_`,\n constraintPath: `${constraintPath}${field.name}.`,\n constraints,\n fields: field.fields,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n tableName: newTableName,\n tableNameSuffix: `${tableNameSuffix}${toSnakeCase(field.name)}_`,\n value,\n })\n }\n\n case 'select': {\n if (field.hasMany) {\n const newTableName = adapter.tableNameMap.get(\n `${tableName}_${tableNameSuffix}${toSnakeCase(field.name)}`,\n )\n\n if (locale && field.localized && adapter.payload.config.localization) {\n joins.push({\n condition: and(\n eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent),\n eq(adapter.tables[newTableName]._locale, locale),\n ),\n table: adapter.tables[newTableName],\n })\n if (locale !== 'all') {\n constraints.push({\n columnName: '_locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n } else {\n joins.push({\n condition: eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent),\n table: adapter.tables[newTableName],\n })\n }\n\n return {\n columnName: 'value',\n constraints,\n field,\n table: adapter.tables[newTableName],\n }\n }\n break\n }\n\n case 'text':\n case 'number': {\n if (field.hasMany) {\n let tableType = 'texts'\n let columnName = 'text'\n if (field.type === 'number') {\n tableType = 'numbers'\n columnName = 'number'\n }\n newTableName = `${tableName}_${tableType}`\n const joinConstraints = [\n eq(adapter.tables[tableName].id, adapter.tables[newTableName].parent),\n eq(adapter.tables[newTableName].path, `${constraintPath}${field.name}`),\n ]\n\n if (locale && field.localized && adapter.payload.config.localization) {\n joins.push({\n condition: and(...joinConstraints, eq(adapter.tables[newTableName]._locale, locale)),\n table: adapter.tables[newTableName],\n })\n if (locale !== 'all') {\n constraints.push({\n columnName: 'locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n } else {\n joins.push({\n condition: and(...joinConstraints),\n table: adapter.tables[newTableName],\n })\n }\n\n return {\n columnName,\n constraints,\n field,\n table: adapter.tables[newTableName],\n }\n }\n break\n }\n\n case 'array': {\n newTableName = adapter.tableNameMap.get(\n `${tableName}_${tableNameSuffix}${toSnakeCase(field.name)}`,\n )\n\n constraintPath = `${constraintPath}${field.name}.%.`\n if (locale && field.localized && adapter.payload.config.localization) {\n joins.push({\n condition: and(\n eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID),\n eq(adapter.tables[newTableName]._locale, locale),\n ),\n table: adapter.tables[newTableName],\n })\n if (locale !== 'all') {\n constraints.push({\n columnName: '_locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n } else {\n joins.push({\n condition: eq(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID),\n table: adapter.tables[newTableName],\n })\n }\n return getTableColumnFromPath({\n adapter,\n collectionPath,\n constraintPath,\n constraints,\n fields: field.fields,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields,\n tableName: newTableName,\n value,\n })\n }\n\n case 'blocks': {\n let blockTableColumn: TableColumn\n let newTableName: string\n\n // handle blockType queries\n if (pathSegments[1] === 'blockType') {\n // find the block config using the value\n const blockTypes = Array.isArray(value) ? value : [value]\n blockTypes.forEach((blockType) => {\n const block = field.blocks.find((block) => block.slug === blockType)\n newTableName = adapter.tableNameMap.get(\n `${tableName}_blocks_${toSnakeCase(block.slug)}`,\n )\n const newAliasTableName = toSnakeCase(uuid())\n const newAliasTable = alias(adapter.tables[newTableName], newAliasTableName)\n\n joins.push({\n condition: eq(adapter.tables[tableName].id, newAliasTable._parentID),\n table: newAliasTable,\n })\n constraints.push({\n columnName: '_path',\n table: newAliasTable,\n value: pathSegments[0],\n })\n })\n return {\n constraints,\n field,\n getNotNullColumnByValue: () => 'id',\n table: adapter.tables[tableName],\n }\n }\n\n const hasBlockField = field.blocks.some((block) => {\n newTableName = adapter.tableNameMap.get(`${tableName}_blocks_${toSnakeCase(block.slug)}`)\n constraintPath = `${constraintPath}${field.name}.%.`\n\n let result\n const blockConstraints = []\n const blockSelectFields = {}\n try {\n result = getTableColumnFromPath({\n adapter,\n collectionPath,\n constraintPath,\n constraints: blockConstraints,\n fields: block.fields,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName,\n selectFields: blockSelectFields,\n tableName: newTableName,\n value,\n })\n } catch (error) {\n // this is fine, not every block will have the field\n }\n if (!result) {\n return\n }\n blockTableColumn = result\n constraints = constraints.concat(blockConstraints)\n selectFields = { ...selectFields, ...blockSelectFields }\n if (field.localized && adapter.payload.config.localization) {\n joins.push({\n condition: and(\n eq(\n (aliasTable || adapter.tables[tableName]).id,\n adapter.tables[newTableName]._parentID,\n ),\n eq(adapter.tables[newTableName]._locale, locale),\n ),\n table: adapter.tables[newTableName],\n })\n if (locale) {\n constraints.push({\n columnName: '_locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n } else {\n joins.push({\n condition: eq(\n (aliasTable || adapter.tables[tableName]).id,\n adapter.tables[newTableName]._parentID,\n ),\n table: adapter.tables[newTableName],\n })\n }\n return true\n })\n if (hasBlockField) {\n return {\n columnName: blockTableColumn.columnName,\n constraints,\n field: blockTableColumn.field,\n pathSegments: pathSegments.slice(1),\n rawColumn: blockTableColumn.rawColumn,\n table: blockTableColumn.table,\n }\n }\n break\n }\n\n case 'relationship':\n case 'upload': {\n const newCollectionPath = pathSegments.slice(1).join('.')\n if (Array.isArray(field.relationTo) || (field.type === 'relationship' && field.hasMany)) {\n let relationshipFields\n const relationTableName = `${rootTableName}${adapter.relationshipsSuffix}`\n const aliasRelationshipTableName = uuid()\n const aliasRelationshipTable = alias(\n adapter.tables[relationTableName],\n aliasRelationshipTableName,\n )\n\n // Join in the relationships table\n if (locale && field.localized && adapter.payload.config.localization) {\n joins.push({\n condition: and(\n eq((aliasTable || adapter.tables[rootTableName]).id, aliasRelationshipTable.parent),\n eq(aliasRelationshipTable.locale, locale),\n like(aliasRelationshipTable.path, `${constraintPath}${field.name}`),\n ),\n table: aliasRelationshipTable,\n })\n if (locale !== 'all') {\n constraints.push({\n columnName: 'locale',\n table: aliasRelationshipTable,\n value: locale,\n })\n }\n } else {\n // Join in the relationships table\n joins.push({\n condition: and(\n eq((aliasTable || adapter.tables[rootTableName]).id, aliasRelationshipTable.parent),\n like(aliasRelationshipTable.path, `${constraintPath}${field.name}`),\n ),\n table: aliasRelationshipTable,\n })\n }\n\n selectFields[`${relationTableName}.path`] = aliasRelationshipTable.path\n\n let newAliasTable\n\n if (typeof field.relationTo === 'string') {\n const relationshipConfig = adapter.payload.collections[field.relationTo].config\n\n newTableName = adapter.tableNameMap.get(toSnakeCase(relationshipConfig.slug))\n\n // parent to relationship join table\n relationshipFields = relationshipConfig.fields\n\n newAliasTable = alias(adapter.tables[newTableName], toSnakeCase(uuid()))\n\n joins.push({\n condition: eq(newAliasTable.id, aliasRelationshipTable[`${field.relationTo}ID`]),\n table: newAliasTable,\n })\n\n if (newCollectionPath === '' || newCollectionPath === 'id') {\n return {\n columnName: `${field.relationTo}ID`,\n constraints,\n field,\n table: aliasRelationshipTable,\n }\n }\n } else if (newCollectionPath === 'value') {\n const tableColumnsNames = field.relationTo.map((relationTo) => {\n const relationTableName = adapter.tableNameMap.get(\n toSnakeCase(adapter.payload.collections[relationTo].config.slug),\n )\n\n return `\"${aliasRelationshipTableName}\".\"${relationTableName}_id\"`\n })\n return {\n constraints,\n field,\n rawColumn: sql.raw(`COALESCE(${tableColumnsNames.join(', ')})`),\n table: aliasRelationshipTable,\n }\n } else if (newCollectionPath === 'relationTo') {\n const relationTo = Array.isArray(field.relationTo)\n ? field.relationTo\n : [field.relationTo]\n\n return {\n constraints,\n field,\n getNotNullColumnByValue: (val) => {\n const matchedRelation = relationTo.find((relation) => relation === val)\n if (matchedRelation) return `${matchedRelation}ID`\n return undefined\n },\n table: aliasRelationshipTable,\n }\n } else {\n throw new APIError('Not supported')\n }\n\n return getTableColumnFromPath({\n adapter,\n aliasTable: newAliasTable,\n collectionPath: newCollectionPath,\n constraints,\n fields: relationshipFields,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n rootTableName: newTableName,\n selectFields,\n tableName: newTableName,\n value,\n })\n } else if (\n pathSegments.length > 1 &&\n !(pathSegments.length === 2 && pathSegments[1] === 'id')\n ) {\n // simple relationships\n const columnName = `${columnPrefix}${field.name}`\n const newTableName = adapter.tableNameMap.get(\n toSnakeCase(adapter.payload.collections[field.relationTo].config.slug),\n )\n const aliasTableName = uuid()\n const newAliasTable = alias(adapter.tables[newTableName], aliasTableName)\n\n if (field.localized && adapter.payload.config.localization) {\n const aliasLocaleTableName = uuid()\n const aliasLocaleTable = alias(\n adapter.tables[`${rootTableName}${adapter.localesSuffix}`],\n aliasLocaleTableName,\n )\n joins.push({\n condition: and(\n eq(aliasLocaleTable._parentID, adapter.tables[rootTableName].id),\n eq(aliasLocaleTable._locale, locale),\n ),\n table: aliasLocaleTable,\n })\n joins.push({\n condition: eq(aliasLocaleTable[columnName], newAliasTable.id),\n table: newAliasTable,\n })\n } else {\n joins.push({\n condition: eq(\n newAliasTable.id,\n aliasTable ? aliasTable[columnName] : adapter.tables[tableName][columnName],\n ),\n table: newAliasTable,\n })\n }\n\n return getTableColumnFromPath({\n adapter,\n aliasTable: newAliasTable,\n collectionPath: newCollectionPath,\n constraintPath: '',\n constraints,\n fields: adapter.payload.collections[field.relationTo].config.fields,\n joins,\n locale,\n pathSegments: pathSegments.slice(1),\n selectFields,\n tableName: newTableName,\n value,\n })\n }\n break\n }\n\n default: {\n // fall through\n break\n }\n }\n\n if (fieldAffectsData(field)) {\n if (field.localized && adapter.payload.config.localization) {\n // If localized, we go to localized table and set aliasTable to undefined\n // so it is not picked up below to be used as targetTable\n const parentTable = aliasTable || adapter.tables[tableName]\n newTableName = `${tableName}${adapter.localesSuffix}`\n\n joins.push({\n condition: eq(parentTable.id, adapter.tables[newTableName]._parentID),\n table: adapter.tables[newTableName],\n })\n\n aliasTable = undefined\n\n if (locale !== 'all') {\n constraints.push({\n columnName: '_locale',\n table: adapter.tables[newTableName],\n value: locale,\n })\n }\n }\n\n const targetTable = aliasTable || adapter.tables[newTableName]\n\n selectFields[`${newTableName}.${columnPrefix}${field.name}`] =\n targetTable[`${columnPrefix}${field.name}`]\n\n return {\n columnName: `${columnPrefix}${field.name}`,\n constraints,\n field,\n pathSegments,\n table: targetTable,\n }\n }\n }\n\n throw new APIError(`Cannot find field for path at ${fieldPath}`)\n}\n"],"names":["and","eq","like","sql","alias","APIError","flattenTopLevelFields","fieldAffectsData","tabHasName","toSnakeCase","v4","uuid","getTableColumnFromPath","adapter","aliasTable","collectionPath","columnPrefix","constraintPath","incomingConstraintPath","constraints","fields","joins","locale","incomingLocale","pathSegments","incomingSegments","rootTableName","incomingRootTableName","selectFields","tableName","tableNameSuffix","value","fieldPath","field","find","fieldToFind","name","newTableName","id","tables","columnName","type","idType","table","localized","payload","config","localization","matchedLocale","localeCodes","splice","tabs","map","tab","slice","localesSuffix","push","condition","_parentID","hasMany","tableNameMap","get","parent","_locale","tableType","joinConstraints","path","blockTableColumn","blockTypes","Array","isArray","forEach","blockType","block","blocks","slug","newAliasTableName","newAliasTable","getNotNullColumnByValue","hasBlockField","some","result","blockConstraints","blockSelectFields","error","concat","rawColumn","newCollectionPath","join","relationTo","relationshipFields","relationTableName","relationshipsSuffix","aliasRelationshipTableName","aliasRelationshipTable","relationshipConfig","collections","tableColumnsNames","raw","val","matchedRelation","relation","undefined","length","aliasTableName","aliasLocaleTableName","aliasLocaleTable","parentTable","targetTable"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/operatorMap.ts"],"sourcesContent":["import {\n and,\n eq,\n gt,\n gte,\n ilike,\n inArray,\n isNotNull,\n isNull,\n lt,\n lte,\n ne,\n notInArray,\n or,\n} from 'drizzle-orm'\n\nexport const operatorMap = {\n // intersects: intersects,\n and,\n contains: ilike,\n equals: eq,\n exists: isNotNull,\n greater_than: gt,\n greater_than_equal: gte,\n in: inArray,\n isNull, // handles exists: false\n less_than: lt,\n less_than_equal: lte,\n like: ilike,\n not_equals: ne,\n // TODO: geojson queries\n // near: near,\n // within: within,\n // all: all,\n not_in: notInArray,\n or,\n}\n"],"names":["and","eq","gt","gte","ilike","inArray","isNotNull","isNull","lt","lte","ne","notInArray","or","operatorMap","contains","equals","exists","greater_than","greater_than_equal","in","less_than","less_than_equal","like","not_equals","not_in"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SACEA,GAAG,EACHC,EAAE,EACFC,EAAE,EACFC,GAAG,EACHC,KAAK,EACLC,OAAO,EACPC,SAAS,EACTC,MAAM,EACNC,EAAE,EACFC,GAAG,EACHC,EAAE,EACFC,UAAU,EACVC,EAAE,QACG,cAAa;AAEpB,OAAO,MAAMC,cAAc;IACzB,0BAA0B;IAC1Bb;IACAc,UAAUV;IACVW,QAAQd;IACRe,QAAQV;IACRW,cAAcf;IACdgB,oBAAoBf;IACpBgB,IAAId;IACJE;IACAa,WAAWZ;IACXa,iBAAiBZ;IACjBa,MAAMlB;IACNmB,YAAYb;IACZ,wBAAwB;IACxB,cAAc;IACd,kBAAkB;IAClB,YAAY;IACZc,QAAQb;IACRC;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/queries/operatorMap.ts"],"sourcesContent":["import {\n and,\n eq,\n gt,\n gte,\n ilike,\n inArray,\n isNotNull,\n isNull,\n lt,\n lte,\n ne,\n notInArray,\n or,\n} from 'drizzle-orm'\n\nexport const operatorMap = {\n // intersects: intersects,\n and,\n contains: ilike,\n equals: eq,\n exists: isNotNull,\n greater_than: gt,\n greater_than_equal: gte,\n in: inArray,\n isNull, // handles exists: false\n less_than: lt,\n less_than_equal: lte,\n like: ilike,\n not_equals: ne,\n // TODO: geojson queries\n // near: near,\n // within: within,\n // all: all,\n not_in: notInArray,\n or,\n}\n"],"names":["and","eq","gt","gte","ilike","inArray","isNotNull","isNull","lt","lte","ne","notInArray","or","operatorMap","contains","equals","exists","greater_than","greater_than_equal","in","less_than","less_than_equal","like","not_equals","not_in"],"mappings":"AAAA,SACEA,GAAG,EACHC,EAAE,EACFC,EAAE,EACFC,GAAG,EACHC,KAAK,EACLC,OAAO,EACPC,SAAS,EACTC,MAAM,EACNC,EAAE,EACFC,GAAG,EACHC,EAAE,EACFC,UAAU,EACVC,EAAE,QACG,cAAa;AAEpB,OAAO,MAAMC,cAAc;IACzB,0BAA0B;IAC1Bb;IACAc,UAAUV;IACVW,QAAQd;IACRe,QAAQV;IACRW,cAAcf;IACdgB,oBAAoBf;IACpBgB,IAAId;IACJE;IACAa,WAAWZ;IACXa,iBAAiBZ;IACjBa,MAAMlB;IACNmB,YAAYb;IACZ,wBAAwB;IACxB,cAAc;IACd,kBAAkB;IAClB,YAAY;IACZc,QAAQb;IACRC;AACF,EAAC"}
@@ -1,17 +1,16 @@
1
1
  import type { SQL } from 'drizzle-orm';
2
- import type { Field, Where } from 'payload/types';
2
+ import type { Field, Where } from 'payload';
3
3
  import type { GenericColumn, PostgresAdapter } from '../types.js';
4
- import type { BuildQueryJoinAliases, BuildQueryJoins } from './buildQuery.js';
4
+ import type { BuildQueryJoinAliases } from './buildQuery.js';
5
5
  type Args = {
6
6
  adapter: PostgresAdapter;
7
7
  fields: Field[];
8
- joinAliases: BuildQueryJoinAliases;
9
- joins: BuildQueryJoins;
8
+ joins: BuildQueryJoinAliases;
10
9
  locale: string;
11
10
  selectFields: Record<string, GenericColumn>;
12
11
  tableName: string;
13
12
  where: Where;
14
13
  };
15
- export declare function parseParams({ adapter, fields, joinAliases, joins, locale, selectFields, tableName, where, }: Args): Promise<SQL>;
14
+ export declare function parseParams({ adapter, fields, joins, locale, selectFields, tableName, where, }: Args): Promise<SQL>;
16
15
  export {};
17
16
  //# sourceMappingURL=parseParams.d.ts.map