@payloadcms/drizzle 4.0.0-internal.183b315 → 4.0.0-internal.1ccb6d5

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 (400) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/count.d.ts.map +1 -1
  3. package/dist/count.js +25 -3
  4. package/dist/count.js.map +1 -1
  5. package/dist/countGlobalVersions.js +8 -3
  6. package/dist/countGlobalVersions.js.map +1 -1
  7. package/dist/countVersions.d.ts.map +1 -1
  8. package/dist/countVersions.js +29 -4
  9. package/dist/countVersions.js.map +1 -1
  10. package/dist/createGlobalVersion.d.ts.map +1 -1
  11. package/dist/createGlobalVersion.js +17 -2
  12. package/dist/createGlobalVersion.js.map +1 -1
  13. package/dist/createTableName.d.ts.map +1 -1
  14. package/dist/createTableName.js +2 -7
  15. package/dist/createTableName.js.map +1 -1
  16. package/dist/createVersion.d.ts.map +1 -1
  17. package/dist/createVersion.js +12 -1
  18. package/dist/createVersion.js.map +1 -1
  19. package/dist/deleteBranchGlobal.d.ts +10 -0
  20. package/dist/deleteBranchGlobal.d.ts.map +1 -0
  21. package/dist/deleteBranchGlobal.js +27 -0
  22. package/dist/deleteBranchGlobal.js.map +1 -0
  23. package/dist/deleteOne.d.ts.map +1 -1
  24. package/dist/deleteOne.js +25 -1
  25. package/dist/deleteOne.js.map +1 -1
  26. package/dist/exports/postgres.d.ts +5 -1
  27. package/dist/exports/postgres.d.ts.map +1 -1
  28. package/dist/exports/postgres.js +5 -1
  29. package/dist/exports/postgres.js.map +1 -1
  30. package/dist/exports/sqlite.d.ts +3 -1
  31. package/dist/exports/sqlite.d.ts.map +1 -1
  32. package/dist/exports/sqlite.js +3 -1
  33. package/dist/exports/sqlite.js.map +1 -1
  34. package/dist/find/buildFindManyArgs.d.ts +3 -2
  35. package/dist/find/buildFindManyArgs.d.ts.map +1 -1
  36. package/dist/find/buildFindManyArgs.js +2 -1
  37. package/dist/find/buildFindManyArgs.js.map +1 -1
  38. package/dist/find/buildPolymorphicJoinQuery.d.ts +40 -0
  39. package/dist/find/buildPolymorphicJoinQuery.d.ts.map +1 -0
  40. package/dist/find/buildPolymorphicJoinQuery.js +163 -0
  41. package/dist/find/buildPolymorphicJoinQuery.js.map +1 -0
  42. package/dist/find/buildPolymorphicJoinWhere.d.ts +20 -0
  43. package/dist/find/buildPolymorphicJoinWhere.d.ts.map +1 -0
  44. package/dist/find/buildPolymorphicJoinWhere.js +301 -0
  45. package/dist/find/buildPolymorphicJoinWhere.js.map +1 -0
  46. package/dist/find/createPolymorphicJoinWherePlan.d.ts +38 -0
  47. package/dist/find/createPolymorphicJoinWherePlan.d.ts.map +1 -0
  48. package/dist/find/createPolymorphicJoinWherePlan.js +200 -0
  49. package/dist/find/createPolymorphicJoinWherePlan.js.map +1 -0
  50. package/dist/find/findMany.d.ts +6 -1
  51. package/dist/find/findMany.d.ts.map +1 -1
  52. package/dist/find/findMany.js +16 -3
  53. package/dist/find/findMany.js.map +1 -1
  54. package/dist/find/traverseFields.d.ts +3 -2
  55. package/dist/find/traverseFields.d.ts.map +1 -1
  56. package/dist/find/traverseFields.js +83 -200
  57. package/dist/find/traverseFields.js.map +1 -1
  58. package/dist/find.d.ts.map +1 -1
  59. package/dist/find.js +32 -4
  60. package/dist/find.js.map +1 -1
  61. package/dist/findDistinct.d.ts.map +1 -1
  62. package/dist/findDistinct.js +104 -8
  63. package/dist/findDistinct.js.map +1 -1
  64. package/dist/findGlobal.d.ts.map +1 -1
  65. package/dist/findGlobal.js +24 -5
  66. package/dist/findGlobal.js.map +1 -1
  67. package/dist/findGlobalVersions.js +8 -3
  68. package/dist/findGlobalVersions.js.map +1 -1
  69. package/dist/findOne.d.ts +1 -1
  70. package/dist/findOne.d.ts.map +1 -1
  71. package/dist/findOne.js +30 -3
  72. package/dist/findOne.js.map +1 -1
  73. package/dist/findVersions.d.ts.map +1 -1
  74. package/dist/findVersions.js +32 -5
  75. package/dist/findVersions.js.map +1 -1
  76. package/dist/index.d.ts +6 -11
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +4 -9
  79. package/dist/index.js.map +1 -1
  80. package/dist/migrate.d.ts.map +1 -1
  81. package/dist/migrate.js +41 -15
  82. package/dist/migrate.js.map +1 -1
  83. package/dist/migrateDown.d.ts +2 -1
  84. package/dist/migrateDown.d.ts.map +1 -1
  85. package/dist/migrateDown.js +17 -4
  86. package/dist/migrateDown.js.map +1 -1
  87. package/dist/migrateFresh.d.ts +4 -2
  88. package/dist/migrateFresh.d.ts.map +1 -1
  89. package/dist/migrateFresh.js +26 -9
  90. package/dist/migrateFresh.js.map +1 -1
  91. package/dist/migrateRefresh.d.ts +2 -1
  92. package/dist/migrateRefresh.d.ts.map +1 -1
  93. package/dist/migrateRefresh.js +20 -5
  94. package/dist/migrateRefresh.js.map +1 -1
  95. package/dist/migrateReset.d.ts +2 -1
  96. package/dist/migrateReset.d.ts.map +1 -1
  97. package/dist/migrateReset.js +18 -4
  98. package/dist/migrateReset.js.map +1 -1
  99. package/dist/migrateStatus.d.ts +2 -1
  100. package/dist/migrateStatus.d.ts.map +1 -1
  101. package/dist/migrateStatus.js +11 -6
  102. package/dist/migrateStatus.js.map +1 -1
  103. package/dist/postgres/createDatabase.d.ts.map +1 -1
  104. package/dist/postgres/createExtensions.d.ts.map +1 -1
  105. package/dist/postgres/createJSONQuery/index.d.ts.map +1 -1
  106. package/dist/postgres/createJSONQuery/index.js +3 -3
  107. package/dist/postgres/createJSONQuery/index.js.map +1 -1
  108. package/dist/postgres/init.d.ts.map +1 -1
  109. package/dist/postgres/init.js +6 -0
  110. package/dist/postgres/init.js.map +1 -1
  111. package/dist/postgres/insert.d.ts.map +1 -1
  112. package/dist/postgres/insert.js +4 -2
  113. package/dist/postgres/insert.js.map +1 -1
  114. package/dist/postgres/predefinedMigrations/localize-status/index.d.ts +11 -0
  115. package/dist/postgres/predefinedMigrations/localize-status/index.d.ts.map +1 -0
  116. package/dist/postgres/predefinedMigrations/localize-status/index.js +296 -0
  117. package/dist/postgres/predefinedMigrations/localize-status/index.js.map +1 -0
  118. package/dist/postgres/predefinedMigrations/localize-status/migrateMainCollection.d.ts +13 -0
  119. package/dist/postgres/predefinedMigrations/localize-status/migrateMainCollection.d.ts.map +1 -0
  120. package/dist/postgres/predefinedMigrations/localize-status/migrateMainCollection.js +51 -0
  121. package/dist/postgres/predefinedMigrations/localize-status/migrateMainCollection.js.map +1 -0
  122. package/dist/postgres/predefinedMigrations/localize-status/migrateMainGlobal.d.ts +13 -0
  123. package/dist/postgres/predefinedMigrations/localize-status/migrateMainGlobal.d.ts.map +1 -0
  124. package/dist/postgres/predefinedMigrations/localize-status/migrateMainGlobal.js +54 -0
  125. package/dist/postgres/predefinedMigrations/localize-status/migrateMainGlobal.js.map +1 -0
  126. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.d.ts +35 -0
  127. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.d.ts.map +1 -0
  128. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.js +185 -0
  129. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.js.map +1 -0
  130. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts.map +1 -1
  131. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js +8 -4
  132. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js.map +1 -1
  133. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.d.ts.map +1 -1
  134. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.js.map +1 -1
  135. package/dist/postgres/predefinedMigrations/v2-v3/groupUpSQLStatements.d.ts.map +1 -1
  136. package/dist/postgres/predefinedMigrations/v2-v3/index.d.ts.map +1 -1
  137. package/dist/postgres/predefinedMigrations/v2-v3/index.js +2 -2
  138. package/dist/postgres/predefinedMigrations/v2-v3/index.js.map +1 -1
  139. package/dist/postgres/predefinedMigrations/v2-v3/migrateRelationships.d.ts.map +1 -1
  140. package/dist/postgres/predefinedMigrations/v2-v3/traverseFields.d.ts.map +1 -1
  141. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts +15 -0
  142. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts.map +1 -0
  143. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js +25 -0
  144. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js.map +1 -0
  145. package/dist/postgres/query/postgresUnaccent.d.ts +13 -0
  146. package/dist/postgres/query/postgresUnaccent.d.ts.map +1 -0
  147. package/dist/postgres/query/postgresUnaccent.js +40 -0
  148. package/dist/postgres/query/postgresUnaccent.js.map +1 -0
  149. package/dist/postgres/requireDrizzleKit.d.ts +4 -0
  150. package/dist/postgres/requireDrizzleKit.d.ts.map +1 -1
  151. package/dist/postgres/requireDrizzleKit.js +16 -10
  152. package/dist/postgres/requireDrizzleKit.js.map +1 -1
  153. package/dist/postgres/schema/buildDrizzleTable.d.ts.map +1 -1
  154. package/dist/postgres/schema/geometryColumn.d.ts +2 -2
  155. package/dist/postgres/schema/geometryColumn.d.ts.map +1 -1
  156. package/dist/postgres/types.d.ts +17 -2
  157. package/dist/postgres/types.d.ts.map +1 -1
  158. package/dist/postgres/types.js.map +1 -1
  159. package/dist/queries/addJoinTable.d.ts +1 -1
  160. package/dist/queries/addJoinTable.d.ts.map +1 -1
  161. package/dist/queries/buildAndOrConditions.d.ts +3 -2
  162. package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
  163. package/dist/queries/buildAndOrConditions.js +2 -1
  164. package/dist/queries/buildAndOrConditions.js.map +1 -1
  165. package/dist/queries/buildBranchVisibility.d.ts +11 -0
  166. package/dist/queries/buildBranchVisibility.d.ts.map +1 -0
  167. package/dist/queries/buildBranchVisibility.js +48 -0
  168. package/dist/queries/buildBranchVisibility.js.map +1 -0
  169. package/dist/queries/buildOperatorConstraint.d.ts +22 -0
  170. package/dist/queries/buildOperatorConstraint.d.ts.map +1 -0
  171. package/dist/queries/buildOperatorConstraint.js +63 -0
  172. package/dist/queries/buildOperatorConstraint.js.map +1 -0
  173. package/dist/queries/buildOrderBy.d.ts +3 -2
  174. package/dist/queries/buildOrderBy.d.ts.map +1 -1
  175. package/dist/queries/buildOrderBy.js +2 -1
  176. package/dist/queries/buildOrderBy.js.map +1 -1
  177. package/dist/queries/buildQuery.d.ts +3 -2
  178. package/dist/queries/buildQuery.d.ts.map +1 -1
  179. package/dist/queries/buildQuery.js +4 -2
  180. package/dist/queries/buildQuery.js.map +1 -1
  181. package/dist/queries/getTableAlias.d.ts.map +1 -1
  182. package/dist/queries/getTableColumnFromPath.d.ts +15 -5
  183. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  184. package/dist/queries/getTableColumnFromPath.js +228 -58
  185. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  186. package/dist/queries/operatorMap.d.ts +7 -3
  187. package/dist/queries/operatorMap.d.ts.map +1 -1
  188. package/dist/queries/operatorMap.js.map +1 -1
  189. package/dist/queries/parseParams.d.ts +3 -2
  190. package/dist/queries/parseParams.d.ts.map +1 -1
  191. package/dist/queries/parseParams.js +266 -11
  192. package/dist/queries/parseParams.js.map +1 -1
  193. package/dist/queries/resolveRelationshipPath.d.ts +36 -0
  194. package/dist/queries/resolveRelationshipPath.d.ts.map +1 -0
  195. package/dist/queries/resolveRelationshipPath.js +66 -0
  196. package/dist/queries/resolveRelationshipPath.js.map +1 -0
  197. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  198. package/dist/queries/selectDistinct.d.ts.map +1 -1
  199. package/dist/queries/validateOperatorHandlers.d.ts +8 -0
  200. package/dist/queries/validateOperatorHandlers.d.ts.map +1 -0
  201. package/dist/queries/validateOperatorHandlers.js +30 -0
  202. package/dist/queries/validateOperatorHandlers.js.map +1 -0
  203. package/dist/queryDrafts.d.ts.map +1 -1
  204. package/dist/queryDrafts.js +27 -5
  205. package/dist/queryDrafts.js.map +1 -1
  206. package/dist/schema/build.d.ts.map +1 -1
  207. package/dist/schema/build.js +28 -20
  208. package/dist/schema/build.js.map +1 -1
  209. package/dist/schema/buildDrizzleRelations.d.ts.map +1 -1
  210. package/dist/schema/buildRawSchema.d.ts.map +1 -1
  211. package/dist/schema/idToUUID.d.ts.map +1 -1
  212. package/dist/schema/traverseFields.d.ts.map +1 -1
  213. package/dist/schema/traverseFields.js +7 -6
  214. package/dist/schema/traverseFields.js.map +1 -1
  215. package/dist/schema/withDefault.d.ts.map +1 -1
  216. package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.d.ts.map +1 -1
  217. package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js +3 -2
  218. package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js.map +1 -1
  219. package/dist/sqlite/createJSONQuery/index.d.ts.map +1 -1
  220. package/dist/sqlite/createJSONQuery/index.js +6 -5
  221. package/dist/sqlite/createJSONQuery/index.js.map +1 -1
  222. package/dist/sqlite/createRequireDrizzleKit.d.ts +6 -0
  223. package/dist/sqlite/createRequireDrizzleKit.d.ts.map +1 -0
  224. package/dist/sqlite/createRequireDrizzleKit.js +15 -0
  225. package/dist/sqlite/createRequireDrizzleKit.js.map +1 -0
  226. package/dist/sqlite/execute.js.map +1 -1
  227. package/dist/sqlite/insert.d.ts.map +1 -1
  228. package/dist/sqlite/insert.js +9 -4
  229. package/dist/sqlite/insert.js.map +1 -1
  230. package/dist/sqlite/predefinedMigrations/localize-status/index.d.ts +28 -0
  231. package/dist/sqlite/predefinedMigrations/localize-status/index.d.ts.map +1 -0
  232. package/dist/sqlite/predefinedMigrations/localize-status/index.js +198 -0
  233. package/dist/sqlite/predefinedMigrations/localize-status/index.js.map +1 -0
  234. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainCollection.d.ts +12 -0
  235. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainCollection.d.ts.map +1 -0
  236. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainCollection.js +24 -0
  237. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainCollection.js.map +1 -0
  238. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.d.ts +12 -0
  239. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.d.ts.map +1 -0
  240. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.js +28 -0
  241. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.js.map +1 -0
  242. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.d.ts +15 -0
  243. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.d.ts.map +1 -0
  244. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.js +114 -0
  245. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.js.map +1 -0
  246. package/dist/sqlite/types.d.ts +4 -0
  247. package/dist/sqlite/types.d.ts.map +1 -1
  248. package/dist/sqlite/types.js.map +1 -1
  249. package/dist/transactions/beginTransaction.d.ts.map +1 -1
  250. package/dist/transactions/beginTransaction.js +13 -5
  251. package/dist/transactions/beginTransaction.js.map +1 -1
  252. package/dist/transactions/commitTransaction.d.ts.map +1 -1
  253. package/dist/transactions/commitTransaction.js +1 -5
  254. package/dist/transactions/commitTransaction.js.map +1 -1
  255. package/dist/transform/read/hasManyNumber.d.ts.map +1 -1
  256. package/dist/transform/read/hasManyText.d.ts.map +1 -1
  257. package/dist/transform/read/index.d.ts.map +1 -1
  258. package/dist/transform/read/relationship.d.ts.map +1 -1
  259. package/dist/transform/read/traverseFields.d.ts.map +1 -1
  260. package/dist/transform/read/traverseFields.js +2 -2
  261. package/dist/transform/read/traverseFields.js.map +1 -1
  262. package/dist/transform/write/array.d.ts +3 -2
  263. package/dist/transform/write/array.d.ts.map +1 -1
  264. package/dist/transform/write/array.js +2 -1
  265. package/dist/transform/write/array.js.map +1 -1
  266. package/dist/transform/write/blocks.d.ts +3 -2
  267. package/dist/transform/write/blocks.d.ts.map +1 -1
  268. package/dist/transform/write/blocks.js +3 -2
  269. package/dist/transform/write/blocks.js.map +1 -1
  270. package/dist/transform/write/index.d.ts.map +1 -1
  271. package/dist/transform/write/index.js +2 -0
  272. package/dist/transform/write/index.js.map +1 -1
  273. package/dist/transform/write/numbers.d.ts.map +1 -1
  274. package/dist/transform/write/relationships.d.ts.map +1 -1
  275. package/dist/transform/write/selects.d.ts.map +1 -1
  276. package/dist/transform/write/texts.d.ts.map +1 -1
  277. package/dist/transform/write/traverseFields.d.ts +2 -1
  278. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  279. package/dist/transform/write/traverseFields.js +52 -23
  280. package/dist/transform/write/traverseFields.js.map +1 -1
  281. package/dist/transform/write/types.d.ts +7 -0
  282. package/dist/transform/write/types.d.ts.map +1 -1
  283. package/dist/transform/write/types.js.map +1 -1
  284. package/dist/types.d.ts +53 -8
  285. package/dist/types.d.ts.map +1 -1
  286. package/dist/types.js +1 -3
  287. package/dist/types.js.map +1 -1
  288. package/dist/updateGlobal.d.ts +5 -1
  289. package/dist/updateGlobal.d.ts.map +1 -1
  290. package/dist/updateGlobal.js +96 -4
  291. package/dist/updateGlobal.js.map +1 -1
  292. package/dist/updateJobs.d.ts.map +1 -1
  293. package/dist/updateJobs.js +37 -0
  294. package/dist/updateJobs.js.map +1 -1
  295. package/dist/updateOne.d.ts.map +1 -1
  296. package/dist/updateOne.js +93 -4
  297. package/dist/updateOne.js.map +1 -1
  298. package/dist/upsertBranchGlobalChange.d.ts +3 -0
  299. package/dist/upsertBranchGlobalChange.d.ts.map +1 -0
  300. package/dist/upsertBranchGlobalChange.js +35 -0
  301. package/dist/upsertBranchGlobalChange.js.map +1 -0
  302. package/dist/upsertRow/deleteExistingArrayRows.d.ts.map +1 -1
  303. package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -1
  304. package/dist/upsertRow/deleteExistingRowsByPath.js +17 -12
  305. package/dist/upsertRow/deleteExistingRowsByPath.js.map +1 -1
  306. package/dist/upsertRow/handleUpsertError.d.ts.map +1 -1
  307. package/dist/upsertRow/handleUpsertError.js +2 -1
  308. package/dist/upsertRow/handleUpsertError.js.map +1 -1
  309. package/dist/upsertRow/index.d.ts +1 -1
  310. package/dist/upsertRow/index.d.ts.map +1 -1
  311. package/dist/upsertRow/index.js +161 -48
  312. package/dist/upsertRow/index.js.map +1 -1
  313. package/dist/upsertRow/insertArrays.d.ts.map +1 -1
  314. package/dist/upsertRow/insertArrays.js +2 -1
  315. package/dist/upsertRow/insertArrays.js.map +1 -1
  316. package/dist/upsertRow/shouldUseOptimizedUpsertRow.d.ts.map +1 -1
  317. package/dist/upsertRow/types.d.ts +3 -0
  318. package/dist/upsertRow/types.d.ts.map +1 -1
  319. package/dist/upsertRow/types.js.map +1 -1
  320. package/dist/utilities/appendPrefixToKeys.d.ts.map +1 -1
  321. package/dist/utilities/blocksToJsonMigrator.d.ts.map +1 -1
  322. package/dist/utilities/blocksToJsonMigrator.js +7 -18
  323. package/dist/utilities/blocksToJsonMigrator.js.map +1 -1
  324. package/dist/utilities/buildCreateMigration.d.ts.map +1 -1
  325. package/dist/utilities/buildCreateMigration.js +13 -9
  326. package/dist/utilities/buildCreateMigration.js.map +1 -1
  327. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.d.ts +15 -0
  328. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.d.ts.map +1 -0
  329. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js +110 -0
  330. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js.map +1 -0
  331. package/dist/utilities/buildForeignKeyName.d.ts.map +1 -1
  332. package/dist/utilities/buildForeignKeyName.js +3 -2
  333. package/dist/utilities/buildForeignKeyName.js.map +1 -1
  334. package/dist/utilities/buildIndexName.d.ts.map +1 -1
  335. package/dist/utilities/buildIndexName.js +3 -2
  336. package/dist/utilities/buildIndexName.js.map +1 -1
  337. package/dist/utilities/checkTruncatedIdentifiers.d.ts +13 -0
  338. package/dist/utilities/checkTruncatedIdentifiers.d.ts.map +1 -0
  339. package/dist/utilities/checkTruncatedIdentifiers.js +56 -0
  340. package/dist/utilities/checkTruncatedIdentifiers.js.map +1 -0
  341. package/dist/utilities/createBlocksMap.d.ts.map +1 -1
  342. package/dist/utilities/createRelationshipMap.d.ts.map +1 -1
  343. package/dist/utilities/createSchemaGenerator.d.ts.map +1 -1
  344. package/dist/utilities/createSchemaGenerator.js +10 -12
  345. package/dist/utilities/createSchemaGenerator.js.map +1 -1
  346. package/dist/utilities/escapeSQLValue.d.ts.map +1 -1
  347. package/dist/utilities/executeSchemaHooks.d.ts.map +1 -1
  348. package/dist/utilities/executeSchemaHooks.js +1 -1
  349. package/dist/utilities/executeSchemaHooks.js.map +1 -1
  350. package/dist/utilities/extendDrizzleTable.d.ts.map +1 -1
  351. package/dist/utilities/formatGeneratedFile.d.ts +10 -0
  352. package/dist/utilities/formatGeneratedFile.d.ts.map +1 -0
  353. package/dist/utilities/formatGeneratedFile.js +58 -0
  354. package/dist/utilities/formatGeneratedFile.js.map +1 -0
  355. package/dist/utilities/getArrayRelationName.d.ts.map +1 -1
  356. package/dist/utilities/getCollectionIdType.d.ts.map +1 -1
  357. package/dist/utilities/getMigrationTemplate.d.ts.map +1 -1
  358. package/dist/utilities/getNameFromDrizzleTable.d.ts.map +1 -1
  359. package/dist/utilities/getPrimaryDb.d.ts +1 -1
  360. package/dist/utilities/getPrimaryDb.d.ts.map +1 -1
  361. package/dist/utilities/getSizesToVariantsRenames.d.ts +54 -0
  362. package/dist/utilities/getSizesToVariantsRenames.d.ts.map +1 -0
  363. package/dist/utilities/getSizesToVariantsRenames.js +251 -0
  364. package/dist/utilities/getSizesToVariantsRenames.js.map +1 -0
  365. package/dist/utilities/getTransaction.d.ts +1 -1
  366. package/dist/utilities/getTransaction.d.ts.map +1 -1
  367. package/dist/utilities/getTransaction.js.map +1 -1
  368. package/dist/utilities/hasLocalesTable.d.ts.map +1 -1
  369. package/dist/utilities/isPolymorphicRelationship.d.ts.map +1 -1
  370. package/dist/utilities/isUUIDType.d.ts.map +1 -1
  371. package/dist/utilities/json.d.ts.map +1 -1
  372. package/dist/utilities/migrationTableExists.d.ts.map +1 -1
  373. package/dist/utilities/parseError.d.ts.map +1 -1
  374. package/dist/utilities/parseJSONPathSegment.d.ts +9 -0
  375. package/dist/utilities/parseJSONPathSegment.d.ts.map +1 -0
  376. package/dist/utilities/parseJSONPathSegment.js +17 -0
  377. package/dist/utilities/parseJSONPathSegment.js.map +1 -0
  378. package/dist/utilities/pushDevSchema.d.ts.map +1 -1
  379. package/dist/utilities/pushDevSchema.js +1 -1
  380. package/dist/utilities/pushDevSchema.js.map +1 -1
  381. package/dist/utilities/rawConstraint.d.ts.map +1 -1
  382. package/dist/utilities/sanitizePathSegment.d.ts.map +1 -1
  383. package/dist/utilities/validateExistingBlockIsIdentical.d.ts +1 -5
  384. package/dist/utilities/validateExistingBlockIsIdentical.d.ts.map +1 -1
  385. package/dist/utilities/validateExistingBlockIsIdentical.js.map +1 -1
  386. package/dist/utilities/validateIdentifierLength.d.ts +12 -0
  387. package/dist/utilities/validateIdentifierLength.d.ts.map +1 -0
  388. package/dist/utilities/validateIdentifierLength.js +18 -0
  389. package/dist/utilities/validateIdentifierLength.js.map +1 -0
  390. package/package.json +17 -19
  391. package/dist/find/chainMethods.d.ts +0 -20
  392. package/dist/find/chainMethods.d.ts.map +0 -1
  393. package/dist/find/chainMethods.js +0 -16
  394. package/dist/find/chainMethods.js.map +0 -1
  395. package/dist/sqlite/requireDrizzleKit.d.ts +0 -3
  396. package/dist/sqlite/requireDrizzleKit.d.ts.map +0 -1
  397. package/dist/sqlite/requireDrizzleKit.js +0 -12
  398. package/dist/sqlite/requireDrizzleKit.js.map +0 -1
  399. package/dist/utilities/isValidStringID.spec.js +0 -15
  400. package/dist/utilities/isValidStringID.spec.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/find/traverseFields.ts"],"sourcesContent":["import type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { SQLiteSelect, SQLiteSelectBase } from 'drizzle-orm/sqlite-core'\n\nimport { and, asc, count, desc, eq, getTableName, or, sql } from 'drizzle-orm'\nimport {\n appendVersionToQueryKey,\n buildVersionCollectionFields,\n combineQueries,\n type FlattenedField,\n getFieldByPath,\n getQueryDraftsSort,\n type JoinQuery,\n type SelectMode,\n type SelectType,\n type Where,\n} from 'payload'\nimport { fieldIsVirtual, fieldShouldBeLocalized, hasDraftsEnabled } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, DrizzleAdapter } from '../types.js'\nimport type { Result } from './buildFindManyArgs.js'\n\nimport { buildQuery } from '../queries/buildQuery.js'\nimport { getTableAlias } from '../queries/getTableAlias.js'\nimport { operatorMap } from '../queries/operatorMap.js'\nimport { getArrayRelationName } from '../utilities/getArrayRelationName.js'\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { jsonAggBuildObject } from '../utilities/json.js'\nimport { rawConstraint } from '../utilities/rawConstraint.js'\nimport { sanitizePathSegment } from '../utilities/sanitizePathSegment.js'\nimport {\n InternalBlockTableNameIndex,\n resolveBlockTableName,\n} from '../utilities/validateExistingBlockIsIdentical.js'\n\nconst flattenAllWherePaths = (where: Where, paths: { path: string; ref: any }[]) => {\n for (const k in where) {\n if (['AND', 'OR'].includes(k.toUpperCase())) {\n if (Array.isArray(where[k])) {\n for (const whereField of where[k]) {\n flattenAllWherePaths(whereField, paths)\n }\n }\n } else {\n // TODO: explore how to support arrays/relationship querying.\n paths.push({ path: k.split('.').join('_'), ref: where })\n }\n }\n}\n\nconst buildSQLWhere = (where: Where, alias: string) => {\n for (const k in where) {\n if (['AND', 'OR'].includes(k.toUpperCase())) {\n if (Array.isArray(where[k])) {\n const op = 'AND' === k.toUpperCase() ? and : or\n const accumulated = []\n for (const whereField of where[k]) {\n accumulated.push(buildSQLWhere(whereField, alias))\n }\n return op(...accumulated)\n }\n } else {\n let payloadOperator = Object.keys(where[k])[0]\n\n const value = where[k][payloadOperator]\n if (payloadOperator === '$raw') {\n if (typeof value !== 'string') {\n return undefined\n }\n return sql.raw(value)\n }\n\n // Handle exists: false -> use isNull instead of isNotNull\n\n // This logic is duplicated from sanitizeQueryValue.ts because buildSQLWhere\n // is a simplified WHERE builder for polymorphic joins that doesn't have access\n // to field definitions needed by sanitizeQueryValue\n if (payloadOperator === 'exists' && value === false) {\n payloadOperator = 'isNull'\n }\n\n if (!(payloadOperator in operatorMap)) {\n return undefined\n }\n\n const sanitizedColumnName = k\n .split('.')\n .map((s) => sanitizePathSegment(s))\n .join('_')\n\n return operatorMap[payloadOperator](sql.raw(`\"${alias}\".\"${sanitizedColumnName}\"`), value)\n }\n }\n}\n\ntype SQLSelect = SQLiteSelectBase<any, any, any, any>\n\ntype TraverseFieldArgs = {\n _locales: Result\n adapter: DrizzleAdapter\n collectionSlug?: string\n currentArgs: Result\n currentTableName: string\n depth?: number\n draftsEnabled?: boolean\n fields: FlattenedField[]\n forceWithFields?: boolean\n joinQuery: JoinQuery\n joins?: BuildQueryJoinAliases\n locale?: string\n parentIsLocalized?: boolean\n path: string\n select?: SelectType\n selectAllOnCurrentLevel?: boolean\n selectMode?: SelectMode\n tablePath: string\n topLevelArgs: Record<string, unknown>\n topLevelTableName: string\n versions?: boolean\n withTabledFields: {\n numbers?: boolean\n rels?: boolean\n texts?: boolean\n }\n}\n\nexport const traverseFields = ({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n draftsEnabled,\n fields,\n forceWithFields,\n joinQuery = {},\n joins,\n locale,\n parentIsLocalized = false,\n path,\n select,\n selectAllOnCurrentLevel = false,\n selectMode,\n tablePath,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n}: TraverseFieldArgs) => {\n fields.forEach((field) => {\n if (fieldIsVirtual(field)) {\n return\n }\n\n const isFieldLocalized = fieldShouldBeLocalized({\n field,\n parentIsLocalized,\n })\n\n // handle simple relationship\n if (\n depth > 0 &&\n (field.type === 'upload' || field.type === 'relationship') &&\n !field.hasMany &&\n typeof field.relationTo === 'string'\n ) {\n if (isFieldLocalized) {\n _locales.with[`${path}${field.name}`] = true\n } else {\n currentArgs.with[`${path}${field.name}`] = true\n }\n }\n\n switch (field.type) {\n case 'array': {\n const arraySelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && typeof arraySelect === 'undefined') ||\n (selectMode === 'exclude' && arraySelect === false)\n ) {\n break\n }\n }\n\n const withArray: Result = {\n columns:\n typeof arraySelect === 'object'\n ? {\n id: true,\n _order: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const arrayTableName = adapter.tableNameMap.get(\n `${currentTableName}_${tablePath}${toSnakeCase(field.name)}`,\n )\n\n if (typeof arraySelect === 'object') {\n if (adapter.tables[arrayTableName]._locale) {\n withArray.columns._locale = true\n }\n\n if (adapter.tables[arrayTableName]._uuid) {\n withArray.columns._uuid = true\n }\n }\n\n const arrayTableNameWithLocales = `${arrayTableName}${adapter.localesSuffix}`\n\n if (adapter.tables[arrayTableNameWithLocales]) {\n withArray.with._locales = {\n columns:\n typeof arraySelect === 'object'\n ? {\n _locale: true,\n }\n : {\n id: false,\n _parentID: false,\n },\n with: {},\n }\n }\n\n const relationName = getArrayRelationName({\n field,\n path: `${path}${field.name}`,\n tableName: arrayTableName,\n })\n\n currentArgs.with[relationName] = withArray\n\n traverseFields({\n _locales: withArray.with._locales,\n adapter,\n currentArgs: withArray,\n currentTableName: arrayTableName,\n depth,\n draftsEnabled,\n fields: field.flattenedFields,\n forceWithFields,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof arraySelect === 'object' &&\n withArray.with._locales &&\n Object.keys(withArray.with._locales).length === 1\n ) {\n delete withArray.with._locales\n }\n\n break\n }\n\n case 'blocks': {\n const blocksSelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && !blocksSelect) ||\n (selectMode === 'exclude' && blocksSelect === false)\n ) {\n break\n }\n }\n\n if (adapter.blocksAsJSON) {\n if (select || selectAllOnCurrentLevel) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n }\n\n break\n }\n\n ;(field.blockReferences ?? field.blocks).forEach((_block) => {\n const block = typeof _block === 'string' ? adapter.payload.blocks[_block] : _block\n const blockKey = `_blocks_${block.slug}${!block[InternalBlockTableNameIndex] ? '' : `_${block[InternalBlockTableNameIndex]}`}`\n\n let blockSelect: boolean | SelectType | undefined\n\n let blockSelectMode = selectMode\n\n if (selectMode === 'include' && blocksSelect === true) {\n blockSelect = true\n }\n\n if (typeof blocksSelect === 'object') {\n if (typeof blocksSelect[block.slug] === 'object') {\n blockSelect = blocksSelect[block.slug]\n } else if (\n (selectMode === 'include' && typeof blocksSelect[block.slug] === 'undefined') ||\n (selectMode === 'exclude' && blocksSelect[block.slug] === false)\n ) {\n blockSelect = {}\n blockSelectMode = 'include'\n } else if (selectMode === 'include' && Boolean(blocksSelect[block.slug])) {\n blockSelect = true\n }\n }\n\n if (!topLevelArgs[blockKey]) {\n const withBlock: Result = {\n columns:\n typeof blockSelect === 'object'\n ? {\n id: true,\n _order: true,\n _path: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const tableName = resolveBlockTableName(\n block,\n adapter.tableNameMap.get(`${topLevelTableName}_blocks_${toSnakeCase(block.slug)}`),\n )\n\n if (typeof blockSelect === 'object') {\n if (adapter.tables[tableName]._locale) {\n withBlock.columns._locale = true\n }\n\n if (adapter.tables[tableName]._uuid) {\n withBlock.columns._uuid = true\n }\n }\n\n if (adapter.tables[`${tableName}${adapter.localesSuffix}`]) {\n withBlock.with._locales = {\n with: {},\n }\n\n if (typeof blockSelect === 'object') {\n withBlock.with._locales.columns = {\n _locale: true,\n }\n }\n }\n topLevelArgs.with[blockKey] = withBlock\n\n traverseFields({\n _locales: withBlock.with._locales,\n adapter,\n currentArgs: withBlock,\n currentTableName: tableName,\n depth,\n draftsEnabled,\n fields: block.flattenedFields,\n forceWithFields: blockSelect === true,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof blockSelect === 'object' &&\n withBlock.with._locales &&\n Object.keys(withBlock.with._locales.columns).length === 1\n ) {\n delete withBlock.with._locales\n }\n }\n })\n\n break\n }\n\n case 'group':\n case 'tab': {\n const fieldSelect = select?.[field.name]\n\n if (fieldSelect === false) {\n break\n }\n\n traverseFields({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n draftsEnabled,\n fields: field.flattenedFields,\n forceWithFields,\n joinQuery,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: `${path}${field.name}_`,\n select: typeof fieldSelect === 'object' ? fieldSelect : undefined,\n selectAllOnCurrentLevel:\n selectAllOnCurrentLevel ||\n fieldSelect === true ||\n (selectMode === 'exclude' && typeof fieldSelect === 'undefined'),\n selectMode,\n tablePath: `${tablePath}${toSnakeCase(field.name)}_`,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n })\n\n break\n }\n case 'join': {\n // when `joinsQuery` is false, do not join\n if (joinQuery === false) {\n break\n }\n\n if (\n (select && selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n\n const joinSchemaPath = `${path.replaceAll('_', '.')}${field.name}`\n\n if (joinQuery[joinSchemaPath] === false) {\n break\n }\n\n const {\n count: shouldCount = false,\n limit: limitArg = field.defaultLimit ?? 10,\n page,\n sort = field.defaultSort,\n where,\n } = joinQuery[joinSchemaPath] || {}\n let limit = limitArg\n\n if (limit !== 0) {\n // get an additional document and slice it later to determine if there is a next page\n limit += 1\n }\n\n const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const db = adapter.drizzle as LibSQLDatabase\n\n if (Array.isArray(field.collection)) {\n let currentQuery: null | SQLSelect = null\n const onPath = field.on.split('.').join('_')\n\n if (Array.isArray(sort)) {\n throw new Error('Not implemented')\n }\n\n let sanitizedSort = sort\n\n if (!sanitizedSort) {\n if (\n field.collection.some((collection) =>\n adapter.payload.collections[collection].config.fields.some(\n (f) => f.type === 'date' && f.name === 'createdAt',\n ),\n )\n ) {\n sanitizedSort = '-createdAt'\n } else {\n sanitizedSort = 'id'\n }\n }\n\n const sortOrder = sanitizedSort.startsWith('-') ? desc : asc\n sanitizedSort = sanitizedSort.replace('-', '')\n\n const sortPath = sanitizedSort.split('.').join('_')\n\n const wherePaths: { path: string; ref: any }[] = []\n\n if (where) {\n flattenAllWherePaths(where, wherePaths)\n }\n\n for (const collection of field.collection) {\n const joinCollectionTableName = adapter.tableNameMap.get(toSnakeCase(collection))\n\n const table = adapter.tables[joinCollectionTableName]\n\n const sortColumn = table[sortPath]\n\n const selectFields = {\n id: adapter.tables[joinCollectionTableName].id,\n parent: sql`${adapter.tables[joinCollectionTableName][onPath]}`.as(onPath),\n relationTo: sql`${collection}`.as('relationTo'),\n sortPath: sql`${sortColumn ? sortColumn : null}`.as('sortPath'),\n }\n\n const collectionQueryWhere: any[] = []\n // Select for WHERE and Fallback NULL\n for (const { path, ref } of wherePaths) {\n const collectioConfig = adapter.payload.collections[collection].config\n const field = getFieldByPath({ fields: collectioConfig.flattenedFields, path })\n\n if (field && field.field.type === 'select' && field.field.hasMany) {\n let tableName = adapter.tableNameMap.get(\n `${toSnakeCase(collection)}_${toSnakeCase(path)}`,\n )\n let parentTable = getTableName(table)\n\n if (adapter.schemaName) {\n tableName = `\"${adapter.schemaName}\".\"${tableName}\"`\n parentTable = `\"${adapter.schemaName}\".\"${parentTable}\"`\n }\n\n if (adapter.name === 'postgres') {\n selectFields[path] = sql\n .raw(\n `(select jsonb_agg(${tableName}.value) from ${tableName} where ${tableName}.parent_id = ${parentTable}.id)`,\n )\n .as(path)\n } else {\n selectFields[path] = sql\n .raw(\n `(select json_group_array(${tableName}.value) from ${tableName} where ${tableName}.parent_id = ${parentTable}.id)`,\n )\n .as(path)\n }\n\n const constraint = ref[path]\n const operator = Object.keys(constraint)[0]\n const value: any = Object.values(constraint)[0]\n\n const query = adapter.createJSONQuery({\n column: `\"${path}\"`,\n operator,\n pathSegments: [field.field.name],\n table: parentTable,\n value,\n })\n ref[path] = { $raw: query }\n } else if (adapter.tables[joinCollectionTableName][path]) {\n selectFields[path] = sql`${adapter.tables[joinCollectionTableName][path]}`.as(path)\n // Allow to filter by collectionSlug\n } else if (path !== 'relationTo') {\n // For timestamp fields like deletedAt, we need to cast to timestamp in Postgres\n // SQLite doesn't require explicit type casting for UNION queries\n if (path === 'deletedAt' && adapter.name === 'postgres') {\n selectFields[path] = sql`null::timestamp with time zone`.as(path)\n } else {\n selectFields[path] = sql`null`.as(path)\n }\n }\n }\n\n let query: any = db.select(selectFields).from(adapter.tables[joinCollectionTableName])\n if (collectionQueryWhere.length) {\n query = query.where(and(...collectionQueryWhere))\n }\n if (currentQuery === null) {\n currentQuery = query as unknown as SQLSelect\n } else {\n currentQuery = currentQuery.unionAll(query) as SQLSelect\n }\n }\n\n const subQueryAlias = `${columnName}_subquery`\n\n let sqlWhere = eq(\n sql.raw(`\"${currentTableName}\".\"id\"`),\n sql.raw(`\"${subQueryAlias}\".\"${onPath}\"`),\n )\n\n if (where && Object.keys(where).length > 0) {\n sqlWhere = and(sqlWhere, buildSQLWhere(where, subQueryAlias))\n }\n\n if (shouldCount) {\n currentArgs.extras[`${columnName}_count`] = sql`${db\n .select({ count: count() })\n .from(sql`${currentQuery.as(subQueryAlias)}`)\n .where(sqlWhere)}`.as(`${columnName}_count`)\n }\n\n currentQuery = currentQuery.orderBy(sortOrder(sql`\"sortPath\"`)) as SQLSelect\n\n const sortedUnionAlias = `${columnName}_sorted`\n\n let limitOffsetSQL = sql.empty()\n if (limit) {\n limitOffsetSQL = sql` LIMIT ${limit}`\n }\n if (page && limit !== 0) {\n const offset = (page - 1) * limit\n if (offset > 0) {\n limitOffsetSQL = sql`${limitOffsetSQL} OFFSET ${offset}`\n }\n }\n\n // Correlate to parent row + apply any join where filters\n let innerWhere = sql.raw(`\"${sortedUnionAlias}\".\"${onPath}\" = \"${currentTableName}\".\"id\"`)\n if (where && Object.keys(where).length > 0) {\n const additionalWhere = buildSQLWhere(where, sortedUnionAlias)\n innerWhere = sql`${innerWhere} AND ${additionalWhere}`\n }\n\n // IMPORTANT: For polymorphic joins, LIMIT must be applied AFTER correlating to the parent row.\n // Otherwise, the limit applies globally across ALL parents, not per-parent.\n currentArgs.extras[columnName] = sql`(\n SELECT ${jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".\"id\"`),\n relationTo: sql.raw(`\"${subQueryAlias}\".\"relationTo\"`),\n })}\n FROM (\n SELECT * FROM ${sql`${currentQuery.as(sortedUnionAlias)}`}\n WHERE ${innerWhere}${limitOffsetSQL}\n ) AS ${sql.raw(`\"${subQueryAlias}\"`)}\n )`.as(columnName)\n } else {\n const useDrafts =\n (versions || draftsEnabled) &&\n hasDraftsEnabled(adapter.payload.collections[field.collection].config)\n\n const fields = useDrafts\n ? buildVersionCollectionFields(\n adapter.payload.config,\n adapter.payload.collections[field.collection].config,\n true,\n )\n : adapter.payload.collections[field.collection].config.flattenedFields\n\n const joinCollectionTableName = adapter.tableNameMap.get(\n useDrafts\n ? `_${toSnakeCase(field.collection)}${adapter.versionsSuffix}`\n : toSnakeCase(field.collection),\n )\n\n const joins: BuildQueryJoinAliases = []\n\n const currentIDColumn = versions\n ? adapter.tables[currentTableName].parent\n : adapter.tables[currentTableName].id\n\n let joinQueryWhere: Where\n\n const currentIDRaw = sql.raw(\n `\"${getNameFromDrizzleTable(currentIDColumn.table)}\".\"${currentIDColumn.name}\"`,\n )\n\n if (Array.isArray(field.targetField.relationTo)) {\n joinQueryWhere = {\n [field.on]: {\n equals: {\n relationTo: collectionSlug,\n value: rawConstraint(currentIDRaw),\n },\n },\n }\n } else {\n joinQueryWhere = {\n [field.on]: {\n equals: rawConstraint(currentIDRaw),\n },\n }\n }\n\n if (where && Object.keys(where).length) {\n joinQueryWhere = {\n and: [joinQueryWhere, where],\n }\n }\n\n if (useDrafts) {\n joinQueryWhere = combineQueries(appendVersionToQueryKey(joinQueryWhere), {\n latest: { equals: true },\n })\n }\n\n const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const subQueryAlias = `${columnName}_alias`\n\n const { newAliasTable } = getTableAlias({\n adapter,\n tableName: joinCollectionTableName,\n })\n\n const {\n orderBy,\n selectFields,\n where: subQueryWhere,\n } = buildQuery({\n adapter,\n aliasTable: newAliasTable,\n fields,\n joins,\n locale,\n parentIsLocalized,\n selectLocale: true,\n sort: useDrafts\n ? getQueryDraftsSort({\n collectionConfig: adapter.payload.collections[field.collection].config,\n sort,\n })\n : sort,\n tableName: joinCollectionTableName,\n where: joinQueryWhere,\n })\n\n for (let key in selectFields) {\n const val = selectFields[key]\n\n if (val.table && getNameFromDrizzleTable(val.table) === joinCollectionTableName) {\n delete selectFields[key]\n key = key.split('.').pop()\n selectFields[key] = newAliasTable[key]\n }\n }\n\n if (useDrafts) {\n selectFields.parent = newAliasTable.parent\n }\n\n let query: SQLiteSelect = db\n .select(selectFields as any)\n .from(newAliasTable)\n .where(subQueryWhere)\n .orderBy(() => orderBy.map(({ column, order }) => order(column)))\n .$dynamic()\n\n joins.forEach(({ type, condition, table }) => {\n query = query[type ?? 'leftJoin'](table, condition)\n })\n\n if (page && limit !== 0) {\n const offset = (page - 1) * limit - 1\n if (offset > 0) {\n query = query.offset(offset)\n }\n }\n\n if (limit !== 0) {\n query = query.limit(limit)\n }\n\n const subQuery = query.as(subQueryAlias)\n\n if (shouldCount) {\n let countSubquery: SQLiteSelect = db\n .select(selectFields as any)\n\n .from(newAliasTable)\n .where(subQueryWhere)\n .$dynamic()\n\n joins.forEach(({ type, condition, table }) => {\n countSubquery = countSubquery[type ?? 'leftJoin'](table, condition)\n })\n\n currentArgs.extras[`${columnName}_count`] = sql`${db\n .select({\n count: count(),\n })\n .from(sql`${countSubquery.as(`${subQueryAlias}_count_subquery`)}`)}`.as(\n `${subQueryAlias}_count`,\n )\n }\n\n currentArgs.extras[columnName] = sql`${db\n .select({\n result: jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".${useDrafts ? 'parent_id' : 'id'}`),\n ...(selectFields._locale && {\n locale: sql.raw(`\"${subQueryAlias}\".${selectFields._locale.name}`),\n }),\n }),\n })\n .from(sql`${subQuery}`)}`.as(subQueryAlias)\n }\n\n break\n }\n\n case 'point': {\n if (adapter.name === 'sqlite') {\n break\n }\n\n const args = isFieldLocalized ? _locales : currentArgs\n if (!args.columns) {\n args.columns = {}\n }\n\n if (!args.extras) {\n args.extras = {}\n }\n\n const name = `${path}${field.name}`\n\n // Drizzle handles that poorly. See https://github.com/drizzle-team/drizzle-orm/issues/2526\n // Additionally, this way we format the column value straight in the database using ST_AsGeoJSON\n args.columns[name] = false\n\n let shouldSelect = false\n\n if (select || selectAllOnCurrentLevel) {\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && Boolean(select[field.name])) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n shouldSelect = true\n }\n } else {\n shouldSelect = true\n }\n const tableName = fieldShouldBeLocalized({ field, parentIsLocalized })\n ? `${currentTableName}${adapter.localesSuffix}`\n : currentTableName\n\n if (shouldSelect) {\n args.extras[name] = sql\n .raw(`ST_AsGeoJSON(\"${adapter.tables[tableName][name].name}\")::jsonb`)\n .as(name)\n }\n break\n }\n\n case 'select': {\n if (select && !selectAllOnCurrentLevel) {\n if (\n (selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n }\n\n if (field.hasMany) {\n const withSelect: Result = {\n columns: {\n id: false,\n order: false,\n parent: false,\n },\n orderBy: ({ order }, { asc }) => [asc(order)],\n }\n\n currentArgs.with[`${path}${field.name}`] = withSelect\n break\n }\n\n if (select || selectAllOnCurrentLevel) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n }\n\n break\n }\n\n default: {\n if (forceWithFields) {\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n (field.hasMany || Array.isArray(field.relationTo))\n ) {\n withTabledFields.rels = true\n }\n\n if (field.type === 'number' && field.hasMany) {\n withTabledFields.numbers = true\n }\n\n if (field.type === 'text' && field.hasMany) {\n withTabledFields.texts = true\n }\n }\n\n if (!select && !selectAllOnCurrentLevel) {\n break\n }\n\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && Boolean(select[field.name])) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n\n if (\n !withTabledFields.rels &&\n (field.type === 'relationship' || field.type === 'upload') &&\n (field.hasMany || Array.isArray(field.relationTo))\n ) {\n withTabledFields.rels = true\n }\n\n if (!withTabledFields.numbers && field.type === 'number' && field.hasMany) {\n withTabledFields.numbers = true\n }\n\n if (!withTabledFields.texts && field.type === 'text' && field.hasMany) {\n withTabledFields.texts = true\n }\n }\n\n break\n }\n }\n })\n\n return topLevelArgs\n}\n"],"names":["and","asc","count","desc","eq","getTableName","or","sql","appendVersionToQueryKey","buildVersionCollectionFields","combineQueries","getFieldByPath","getQueryDraftsSort","fieldIsVirtual","fieldShouldBeLocalized","hasDraftsEnabled","toSnakeCase","buildQuery","getTableAlias","operatorMap","getArrayRelationName","getNameFromDrizzleTable","jsonAggBuildObject","rawConstraint","sanitizePathSegment","InternalBlockTableNameIndex","resolveBlockTableName","flattenAllWherePaths","where","paths","k","includes","toUpperCase","Array","isArray","whereField","push","path","split","join","ref","buildSQLWhere","alias","op","accumulated","payloadOperator","Object","keys","value","undefined","raw","sanitizedColumnName","map","s","traverseFields","_locales","adapter","collectionSlug","currentArgs","currentTableName","depth","draftsEnabled","fields","forceWithFields","joinQuery","joins","locale","parentIsLocalized","select","selectAllOnCurrentLevel","selectMode","tablePath","topLevelArgs","topLevelTableName","versions","withTabledFields","forEach","field","isFieldLocalized","type","hasMany","relationTo","with","name","arraySelect","withArray","columns","id","_order","_parentID","orderBy","arrayTableName","tableNameMap","get","tables","_locale","_uuid","arrayTableNameWithLocales","localesSuffix","relationName","tableName","flattenedFields","localized","length","blocksSelect","blocksAsJSON","fieldPath","blockReferences","blocks","_block","block","payload","blockKey","slug","blockSelect","blockSelectMode","Boolean","withBlock","_path","fieldSelect","joinSchemaPath","replaceAll","shouldCount","limit","limitArg","defaultLimit","page","sort","defaultSort","columnName","db","drizzle","collection","currentQuery","onPath","on","Error","sanitizedSort","some","collections","config","f","sortOrder","startsWith","replace","sortPath","wherePaths","joinCollectionTableName","table","sortColumn","selectFields","parent","as","collectionQueryWhere","collectioConfig","parentTable","schemaName","constraint","operator","values","query","createJSONQuery","column","pathSegments","$raw","from","unionAll","subQueryAlias","sqlWhere","extras","sortedUnionAlias","limitOffsetSQL","empty","offset","innerWhere","additionalWhere","useDrafts","versionsSuffix","currentIDColumn","joinQueryWhere","currentIDRaw","targetField","equals","latest","newAliasTable","subQueryWhere","aliasTable","selectLocale","collectionConfig","key","val","pop","order","$dynamic","condition","subQuery","countSubquery","result","args","shouldSelect","withSelect","rels","numbers","texts"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/find/traverseFields.ts"],"sourcesContent":["import type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { SQLiteSelect } from 'drizzle-orm/sqlite-core'\nimport type {\n FlattenedField,\n JoinQuery,\n PayloadRequest,\n SelectMode,\n SelectType,\n Where,\n} from 'payload'\n\nimport { and, count, sql } from 'drizzle-orm'\nimport {\n appendVersionToQueryKey,\n buildVersionCollectionFields,\n combineQueries,\n getBranchPredicateSync,\n getQueryDraftsSort,\n resolveBranchReadState,\n resolveBranchVersionQuerySync,\n rewriteBranchVersionParents,\n} from 'payload'\nimport { fieldIsVirtual, fieldShouldBeLocalized, hasDraftsEnabled } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, DrizzleAdapter, GenericColumn } from '../types.js'\nimport type { Result } from './buildFindManyArgs.js'\n\nimport { buildBranchVisibility } from '../queries/buildBranchVisibility.js'\nimport { buildQuery } from '../queries/buildQuery.js'\nimport { getTableAlias } from '../queries/getTableAlias.js'\nimport { getArrayRelationName } from '../utilities/getArrayRelationName.js'\nimport { getNameFromDrizzleTable } from '../utilities/getNameFromDrizzleTable.js'\nimport { jsonAggBuildObject } from '../utilities/json.js'\nimport { rawConstraint } from '../utilities/rawConstraint.js'\nimport {\n InternalBlockTableNameIndex,\n resolveBlockTableName,\n} from '../utilities/validateExistingBlockIsIdentical.js'\nimport { buildPolymorphicJoinQuery } from './buildPolymorphicJoinQuery.js'\n\ntype TraverseFieldArgs = {\n _locales: Result\n adapter: DrizzleAdapter\n collectionSlug?: string\n currentArgs: Result\n currentTableName: string\n depth?: number\n draftsEnabled?: boolean\n fields: FlattenedField[]\n forceWithFields?: boolean\n joinQuery: JoinQuery\n joins?: BuildQueryJoinAliases\n locale?: string\n parentIsLocalized?: boolean\n path: string\n req?: Partial<PayloadRequest>\n select?: SelectType\n selectAllOnCurrentLevel?: boolean\n selectMode?: SelectMode\n tablePath: string\n topLevelArgs: Record<string, unknown>\n topLevelTableName: string\n versions?: boolean\n withTabledFields: {\n numbers?: boolean\n rels?: boolean\n texts?: boolean\n }\n}\n\nexport const traverseFields = ({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n draftsEnabled,\n fields,\n forceWithFields,\n joinQuery = {},\n joins,\n locale,\n parentIsLocalized = false,\n path,\n req,\n select,\n selectAllOnCurrentLevel = false,\n selectMode,\n tablePath,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n}: TraverseFieldArgs) => {\n fields.forEach((field) => {\n if (fieldIsVirtual(field)) {\n return\n }\n\n const isFieldLocalized = fieldShouldBeLocalized({\n field,\n parentIsLocalized,\n })\n\n // handle simple relationship\n if (\n depth > 0 &&\n (field.type === 'upload' || field.type === 'relationship') &&\n !field.hasMany &&\n typeof field.relationTo === 'string'\n ) {\n if (isFieldLocalized) {\n _locales.with[`${path}${field.name}`] = true\n } else {\n currentArgs.with[`${path}${field.name}`] = true\n }\n }\n\n switch (field.type) {\n case 'array': {\n const arraySelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && typeof arraySelect === 'undefined') ||\n (selectMode === 'exclude' && arraySelect === false)\n ) {\n break\n }\n }\n\n const withArray: Result = {\n columns:\n typeof arraySelect === 'object'\n ? {\n id: true,\n _order: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const arrayTableName = adapter.tableNameMap.get(\n `${currentTableName}_${tablePath}${toSnakeCase(field.name)}`,\n )\n\n if (typeof arraySelect === 'object') {\n if (adapter.tables[arrayTableName]._locale) {\n withArray.columns._locale = true\n }\n\n if (adapter.tables[arrayTableName]._uuid) {\n withArray.columns._uuid = true\n }\n }\n\n const arrayTableNameWithLocales = `${arrayTableName}${adapter.localesSuffix}`\n\n if (adapter.tables[arrayTableNameWithLocales]) {\n withArray.with._locales = {\n columns:\n typeof arraySelect === 'object'\n ? {\n _locale: true,\n }\n : {\n id: false,\n _parentID: false,\n },\n with: {},\n }\n }\n\n const relationName = getArrayRelationName({\n field,\n path: `${path}${field.name}`,\n tableName: arrayTableName,\n })\n\n currentArgs.with[relationName] = withArray\n\n traverseFields({\n _locales: withArray.with._locales,\n adapter,\n currentArgs: withArray,\n currentTableName: arrayTableName,\n depth,\n draftsEnabled,\n fields: field.flattenedFields,\n forceWithFields,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n req,\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof arraySelect === 'object' &&\n withArray.with._locales &&\n Object.keys(withArray.with._locales).length === 1\n ) {\n delete withArray.with._locales\n }\n\n break\n }\n\n case 'blocks': {\n const blocksSelect = selectAllOnCurrentLevel ? true : select?.[field.name]\n\n if (select) {\n if (\n (selectMode === 'include' && !blocksSelect) ||\n (selectMode === 'exclude' && blocksSelect === false)\n ) {\n break\n }\n }\n\n if (adapter.blocksAsJSON) {\n if (select || selectAllOnCurrentLevel) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n }\n\n break\n }\n\n field.blocks.forEach((_block) => {\n const block = typeof _block === 'string' ? adapter.payload.blocks[_block] : _block\n const blockKey = `_blocks_${block.slug}${!block[InternalBlockTableNameIndex] ? '' : `_${block[InternalBlockTableNameIndex]}`}`\n\n let blockSelect: boolean | SelectType | undefined\n\n let blockSelectMode = selectMode\n\n if (selectMode === 'include' && blocksSelect === true) {\n blockSelect = true\n }\n\n if (typeof blocksSelect === 'object') {\n if (typeof blocksSelect[block.slug] === 'object') {\n blockSelect = blocksSelect[block.slug]\n } else if (\n (selectMode === 'include' && typeof blocksSelect[block.slug] === 'undefined') ||\n (selectMode === 'exclude' && blocksSelect[block.slug] === false)\n ) {\n blockSelect = {}\n blockSelectMode = 'include'\n } else if (selectMode === 'include' && Boolean(blocksSelect[block.slug])) {\n blockSelect = true\n }\n }\n\n if (!topLevelArgs[blockKey]) {\n const withBlock: Result = {\n columns:\n typeof blockSelect === 'object'\n ? {\n id: true,\n _order: true,\n _path: true,\n }\n : {\n _parentID: false,\n },\n orderBy: ({ _order }, { asc }) => [asc(_order)],\n with: {},\n }\n\n const tableName = resolveBlockTableName(\n block,\n adapter.tableNameMap.get(`${topLevelTableName}_blocks_${toSnakeCase(block.slug)}`),\n )\n\n if (typeof blockSelect === 'object') {\n if (adapter.tables[tableName]._locale) {\n withBlock.columns._locale = true\n }\n\n if (adapter.tables[tableName]._uuid) {\n withBlock.columns._uuid = true\n }\n }\n\n if (adapter.tables[`${tableName}${adapter.localesSuffix}`]) {\n withBlock.with._locales = {\n with: {},\n }\n\n if (typeof blockSelect === 'object') {\n withBlock.with._locales.columns = {\n _locale: true,\n }\n }\n }\n topLevelArgs.with[blockKey] = withBlock\n\n traverseFields({\n _locales: withBlock.with._locales,\n adapter,\n currentArgs: withBlock,\n currentTableName: tableName,\n depth,\n draftsEnabled,\n fields: block.flattenedFields,\n forceWithFields: blockSelect === true,\n joinQuery,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: '',\n req,\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n tablePath: '',\n topLevelArgs,\n topLevelTableName,\n withTabledFields,\n })\n\n if (\n typeof blockSelect === 'object' &&\n withBlock.with._locales &&\n Object.keys(withBlock.with._locales.columns).length === 1\n ) {\n delete withBlock.with._locales\n }\n }\n })\n\n break\n }\n\n case 'group':\n case 'tab': {\n const fieldSelect = select?.[field.name]\n\n if (fieldSelect === false) {\n break\n }\n\n traverseFields({\n _locales,\n adapter,\n collectionSlug,\n currentArgs,\n currentTableName,\n depth,\n draftsEnabled,\n fields: field.flattenedFields,\n forceWithFields,\n joinQuery,\n joins,\n locale,\n parentIsLocalized: parentIsLocalized || field.localized,\n path: `${path}${field.name}_`,\n req,\n select: typeof fieldSelect === 'object' ? fieldSelect : undefined,\n selectAllOnCurrentLevel:\n selectAllOnCurrentLevel ||\n fieldSelect === true ||\n (selectMode === 'exclude' && typeof fieldSelect === 'undefined'),\n selectMode,\n tablePath: `${tablePath}${toSnakeCase(field.name)}_`,\n topLevelArgs,\n topLevelTableName,\n versions,\n withTabledFields,\n })\n\n break\n }\n case 'join': {\n // when `joinsQuery` is false, do not join\n if (joinQuery === false) {\n break\n }\n\n if (\n (select && selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n\n const joinSchemaPath = `${path.replaceAll('_', '.')}${field.name}`\n\n if (joinQuery[joinSchemaPath] === false) {\n break\n }\n\n const {\n count: shouldCount = false,\n limit: limitArg = field.defaultLimit ?? 10,\n page,\n sort = field.defaultSort,\n where,\n } = joinQuery[joinSchemaPath] || {}\n let limit = limitArg\n\n if (limit !== 0) {\n // get an additional document and slice it later to determine if there is a next page\n limit += 1\n }\n\n if (Array.isArray(field.collection)) {\n const polymorphicJoinQuery = buildPolymorphicJoinQuery({\n adapter,\n currentTableName,\n field,\n limit,\n locale,\n page,\n pageSize: limitArg,\n path,\n req,\n shouldCount,\n sort,\n where,\n })\n\n currentArgs.extras[polymorphicJoinQuery.columnName] = polymorphicJoinQuery.documents\n\n if (polymorphicJoinQuery.count) {\n currentArgs.extras[`${polymorphicJoinQuery.columnName}_count`] =\n polymorphicJoinQuery.count\n }\n } else {\n const db = adapter.drizzle as LibSQLDatabase\n const useDrafts =\n (versions || draftsEnabled) &&\n hasDraftsEnabled(adapter.payload.collections[field.collection].config)\n\n const fields = useDrafts\n ? buildVersionCollectionFields(\n adapter.payload.config,\n adapter.payload.collections[field.collection].config,\n true,\n )\n : adapter.payload.collections[field.collection].config.flattenedFields\n\n const joinCollectionTableName = adapter.tableNameMap.get(\n useDrafts\n ? `_${toSnakeCase(field.collection)}${adapter.versionsSuffix}`\n : toSnakeCase(field.collection),\n )\n\n const joins: BuildQueryJoinAliases = []\n\n const currentIDColumn = versions\n ? adapter.tables[currentTableName].parent\n : adapter.tables[currentTableName].id\n\n let joinQueryWhere: Where\n\n const parentUsesBranching = collectionSlug\n ? resolveBranchReadState({ collectionSlug, req }).useBranching\n : false\n const canonicalIDColumn = parentUsesBranching\n ? adapter.tables[currentTableName][versions ? '_branchParent' : '_branchDocID']\n : undefined\n // Correlated constraints must reference the outer query's alias, without its schema.\n const currentTableIdentifier = sql.identifier(\n getNameFromDrizzleTable(currentIDColumn.table),\n )\n const currentIDExpression = sql`${currentTableIdentifier}.${sql.identifier(currentIDColumn.name)}`\n const currentIDRaw = canonicalIDColumn\n ? sql`COALESCE(${currentTableIdentifier}.${sql.identifier(canonicalIDColumn.name)}, ${currentIDExpression})`\n : currentIDExpression\n\n if (Array.isArray(field.targetField.relationTo)) {\n joinQueryWhere = {\n [field.on]: {\n equals: {\n relationTo: collectionSlug,\n value: rawConstraint(currentIDRaw),\n },\n },\n }\n } else {\n joinQueryWhere = {\n [field.on]: {\n equals: rawConstraint(currentIDRaw),\n },\n }\n }\n\n if (where && Object.keys(where).length) {\n joinQueryWhere = {\n and: [joinQueryWhere, where],\n }\n }\n\n // A join subquery must carry the same branch predicate as the\n // top-level read, or a branch would see main's related documents.\n const branchReadState = resolveBranchReadState({\n collectionSlug: field.collection,\n req,\n })\n const joinBranchPredicate = branchReadState.useBranching\n ? null\n : getBranchPredicateSync({\n collectionSlug: field.collection,\n req,\n })\n\n if (useDrafts) {\n const versionWhere = appendVersionToQueryKey(joinQueryWhere)\n const branchVersionWhere = branchReadState.useBranching\n ? rewriteBranchVersionParents(versionWhere)\n : resolveBranchVersionQuerySync({\n collectionSlug: field.collection,\n req,\n where: versionWhere,\n })\n\n joinQueryWhere = combineQueries(branchVersionWhere ?? {}, { latest: { equals: true } })\n } else if (!branchReadState.useBranching && joinBranchPredicate) {\n joinQueryWhere = { and: [joinQueryWhere, joinBranchPredicate] }\n }\n\n const columnName = `${path.replaceAll('.', '_')}${field.name}`\n\n const subQueryAlias = `${columnName}_alias`\n\n const { newAliasTable } = getTableAlias({\n adapter,\n tableName: joinCollectionTableName,\n })\n\n const {\n orderBy,\n selectFields,\n where: subQueryWhere,\n } = buildQuery({\n adapter,\n aliasTable: newAliasTable,\n fields,\n joins,\n locale,\n parentIsLocalized,\n req,\n selectLocale: true,\n sort: useDrafts\n ? getQueryDraftsSort({\n collectionConfig: adapter.payload.collections[field.collection].config,\n sort,\n })\n : sort,\n tableName: joinCollectionTableName,\n where: joinQueryWhere,\n })\n const nativeBranchVisibility = branchReadState.useBranching\n ? buildBranchVisibility({\n adapter,\n branch: branchReadState.branch,\n canonicalIDExpression: useDrafts\n ? sql`COALESCE(${newAliasTable._branchParent}, ${newAliasTable.parent})`\n : undefined,\n collectionSlug: field.collection,\n table: newAliasTable,\n })\n : undefined\n const visibleSubQueryWhere = nativeBranchVisibility\n ? and(subQueryWhere, nativeBranchVisibility)\n : subQueryWhere\n\n for (let key in selectFields) {\n const val = selectFields[key]\n\n if (val.table && getNameFromDrizzleTable(val.table) === joinCollectionTableName) {\n delete selectFields[key]\n key = key.split('.').pop()\n selectFields[key] = newAliasTable[key]\n }\n }\n\n if (useDrafts) {\n delete selectFields[`${joinCollectionTableName}.parent`]\n\n selectFields.parent = newAliasTable._branchParent\n ? (sql`COALESCE(${newAliasTable._branchParent}, ${newAliasTable.parent})`.as(\n newAliasTable.parent.name,\n ) as unknown as GenericColumn)\n : newAliasTable.parent\n }\n\n // Surface the canonical document ID rather than the shadow row's own\n // primary key, so join results address documents the same way every\n // other read does.\n if ((branchReadState.useBranching || joinBranchPredicate) && newAliasTable._branchDocID) {\n // `selectFields` is typed as a column map, but Drizzle accepts an\n // aliased expression in the same position — as the sibling\n // `sql\\`...\\`.as()` assignments above already rely on.\n selectFields.id = sql`COALESCE(${newAliasTable._branchDocID}, ${newAliasTable.id})`.as(\n 'id',\n ) as unknown as GenericColumn\n }\n\n let query: SQLiteSelect = db\n .select(selectFields as any)\n .from(newAliasTable)\n .where(visibleSubQueryWhere)\n .orderBy(() => orderBy.map(({ column, order }) => order(column)))\n .$dynamic()\n\n joins.forEach(({ type, condition, table }) => {\n query = query[type ?? 'leftJoin'](table, condition)\n })\n\n if (page && limit !== 0) {\n const offset = (page - 1) * limit - 1\n if (offset > 0) {\n query = query.offset(offset)\n }\n }\n\n if (limit !== 0) {\n query = query.limit(limit)\n }\n\n const subQuery = query.as(subQueryAlias)\n\n if (shouldCount) {\n let countSubquery: SQLiteSelect = db\n .select(selectFields as any)\n\n .from(newAliasTable)\n .where(visibleSubQueryWhere)\n .$dynamic()\n\n joins.forEach(({ type, condition, table }) => {\n countSubquery = countSubquery[type ?? 'leftJoin'](table, condition)\n })\n\n currentArgs.extras[`${columnName}_count`] = sql`${db\n .select({\n count: count(),\n })\n .from(sql`${countSubquery.as(`${subQueryAlias}_count_subquery`)}`)}`.as(\n `${subQueryAlias}_count`,\n )\n }\n\n currentArgs.extras[columnName] = sql`${db\n .select({\n result: jsonAggBuildObject(adapter, {\n id: sql.raw(`\"${subQueryAlias}\".${useDrafts ? 'parent_id' : 'id'}`),\n ...(selectFields._locale && {\n locale: sql.raw(`\"${subQueryAlias}\".${selectFields._locale.name}`),\n }),\n }),\n })\n .from(sql`${subQuery}`)}`.as(subQueryAlias)\n }\n\n break\n }\n\n case 'point': {\n if (adapter.name === 'sqlite') {\n break\n }\n\n const args = isFieldLocalized ? _locales : currentArgs\n if (!args.columns) {\n args.columns = {}\n }\n\n if (!args.extras) {\n args.extras = {}\n }\n\n const name = `${path}${field.name}`\n\n // Drizzle handles that poorly. See https://github.com/drizzle-team/drizzle-orm/issues/2526\n // Additionally, this way we format the column value straight in the database using ST_AsGeoJSON\n args.columns[name] = false\n\n let shouldSelect = false\n\n if (select || selectAllOnCurrentLevel) {\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && Boolean(select[field.name])) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n shouldSelect = true\n }\n } else {\n shouldSelect = true\n }\n const tableName = fieldShouldBeLocalized({ field, parentIsLocalized })\n ? `${currentTableName}${adapter.localesSuffix}`\n : currentTableName\n\n if (shouldSelect) {\n args.extras[name] = sql\n .raw(`ST_AsGeoJSON(\"${adapter.tables[tableName][name].name}\")::jsonb`)\n .as(name)\n }\n break\n }\n\n case 'select': {\n if (select && !selectAllOnCurrentLevel) {\n if (\n (selectMode === 'include' && !select[field.name]) ||\n (selectMode === 'exclude' && select[field.name] === false)\n ) {\n break\n }\n }\n\n if (field.hasMany) {\n const withSelect: Result = {\n columns: {\n id: false,\n order: false,\n parent: false,\n },\n orderBy: ({ order }, { asc }) => [asc(order)],\n }\n\n currentArgs.with[`${path}${field.name}`] = withSelect\n break\n }\n\n if (select || selectAllOnCurrentLevel) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n }\n\n break\n }\n\n default: {\n if (forceWithFields) {\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n (field.hasMany || Array.isArray(field.relationTo))\n ) {\n withTabledFields.rels = true\n }\n\n if (field.type === 'number' && field.hasMany) {\n withTabledFields.numbers = true\n }\n\n if (field.type === 'text' && field.hasMany) {\n withTabledFields.texts = true\n }\n }\n\n if (!select && !selectAllOnCurrentLevel) {\n break\n }\n\n if (\n selectAllOnCurrentLevel ||\n (selectMode === 'include' && Boolean(select[field.name])) ||\n (selectMode === 'exclude' && typeof select[field.name] === 'undefined')\n ) {\n const fieldPath = `${path}${field.name}`\n\n if ((isFieldLocalized || parentIsLocalized) && _locales) {\n _locales.columns[fieldPath] = true\n } else if (adapter.tables[currentTableName]?.[fieldPath]) {\n currentArgs.columns[fieldPath] = true\n }\n\n if (\n !withTabledFields.rels &&\n (field.type === 'relationship' || field.type === 'upload') &&\n (field.hasMany || Array.isArray(field.relationTo))\n ) {\n withTabledFields.rels = true\n }\n\n if (!withTabledFields.numbers && field.type === 'number' && field.hasMany) {\n withTabledFields.numbers = true\n }\n\n if (!withTabledFields.texts && field.type === 'text' && field.hasMany) {\n withTabledFields.texts = true\n }\n }\n\n break\n }\n }\n })\n\n return topLevelArgs\n}\n"],"names":["and","count","sql","appendVersionToQueryKey","buildVersionCollectionFields","combineQueries","getBranchPredicateSync","getQueryDraftsSort","resolveBranchReadState","resolveBranchVersionQuerySync","rewriteBranchVersionParents","fieldIsVirtual","fieldShouldBeLocalized","hasDraftsEnabled","toSnakeCase","buildBranchVisibility","buildQuery","getTableAlias","getArrayRelationName","getNameFromDrizzleTable","jsonAggBuildObject","rawConstraint","InternalBlockTableNameIndex","resolveBlockTableName","buildPolymorphicJoinQuery","traverseFields","_locales","adapter","collectionSlug","currentArgs","currentTableName","depth","draftsEnabled","fields","forceWithFields","joinQuery","joins","locale","parentIsLocalized","path","req","select","selectAllOnCurrentLevel","selectMode","tablePath","topLevelArgs","topLevelTableName","versions","withTabledFields","forEach","field","isFieldLocalized","type","hasMany","relationTo","with","name","arraySelect","withArray","columns","id","_order","_parentID","orderBy","asc","arrayTableName","tableNameMap","get","tables","_locale","_uuid","arrayTableNameWithLocales","localesSuffix","relationName","tableName","flattenedFields","localized","undefined","Object","keys","length","blocksSelect","blocksAsJSON","fieldPath","blocks","_block","block","payload","blockKey","slug","blockSelect","blockSelectMode","Boolean","withBlock","_path","fieldSelect","joinSchemaPath","replaceAll","shouldCount","limit","limitArg","defaultLimit","page","sort","defaultSort","where","Array","isArray","collection","polymorphicJoinQuery","pageSize","extras","columnName","documents","db","drizzle","useDrafts","collections","config","joinCollectionTableName","versionsSuffix","currentIDColumn","parent","joinQueryWhere","parentUsesBranching","useBranching","canonicalIDColumn","currentTableIdentifier","identifier","table","currentIDExpression","currentIDRaw","targetField","on","equals","value","branchReadState","joinBranchPredicate","versionWhere","branchVersionWhere","latest","subQueryAlias","newAliasTable","selectFields","subQueryWhere","aliasTable","selectLocale","collectionConfig","nativeBranchVisibility","branch","canonicalIDExpression","_branchParent","visibleSubQueryWhere","key","val","split","pop","as","_branchDocID","query","from","map","column","order","$dynamic","condition","offset","subQuery","countSubquery","result","raw","args","shouldSelect","withSelect","rels","numbers","texts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../src/find.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAA6B,MAAM,SAAS,CAAA;AAQ9D,eAAO,MAAM,IAAI,EAAE,IAqClB,CAAA"}
1
+ {"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../src/find.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAA6B,MAAM,SAAS,CAAA;AAe9D,eAAO,MAAM,IAAI,EAAE,IAgElB,CAAA"}
package/dist/find.js CHANGED
@@ -1,11 +1,27 @@
1
+ import { applyBranchIDProjection, resolveBranchQuery, resolveBranchReadState, rewriteBranchIDs, withBranchIDSelect } from 'payload';
1
2
  import toSnakeCase from 'to-snake-case';
2
3
  import { findMany } from './find/findMany.js';
3
- export const find = async function find({ collection, draftsEnabled, joins, limit, locale, page = 1, pagination, req, select, sort: sortArg, where }) {
4
+ export const find = async function find({ branch, collection, draftsEnabled, joins, limit, locale, page = 1, pagination, req, select, sort: sortArg, where }) {
4
5
  const collectionConfig = this.payload.collections[collection].config;
5
6
  const sort = sortArg !== undefined && sortArg !== null ? sortArg : collectionConfig.defaultSort;
6
7
  const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug));
7
- return findMany({
8
+ const branchReadState = resolveBranchReadState({
9
+ branch,
10
+ collectionSlug: collectionConfig.slug,
11
+ req
12
+ });
13
+ const branchedWhere = branchReadState.useBranching ? rewriteBranchIDs(where) : await resolveBranchQuery({
14
+ branch,
15
+ collectionSlug: collectionConfig.slug,
16
+ req,
17
+ where
18
+ });
19
+ const result = await findMany({
8
20
  adapter: this,
21
+ branchVisibility: branchReadState.useBranching ? {
22
+ branch: branchReadState.branch,
23
+ collectionSlug: collectionConfig.slug
24
+ } : undefined,
9
25
  collectionSlug: collectionConfig.slug,
10
26
  draftsEnabled,
11
27
  fields: collectionConfig.flattenedFields,
@@ -15,11 +31,23 @@ export const find = async function find({ collection, draftsEnabled, joins, limi
15
31
  page,
16
32
  pagination,
17
33
  req,
18
- select,
34
+ select: withBranchIDSelect({
35
+ branch,
36
+ collectionSlug: collectionConfig.slug,
37
+ req,
38
+ select
39
+ }),
19
40
  sort,
20
41
  tableName,
21
- where
42
+ where: branchedWhere
43
+ });
44
+ applyBranchIDProjection({
45
+ branch,
46
+ collectionSlug: collectionConfig.slug,
47
+ docs: result.docs,
48
+ req
22
49
  });
50
+ return result;
23
51
  };
24
52
 
25
53
  //# sourceMappingURL=find.js.map
package/dist/find.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/find.ts"],"sourcesContent":["import type { Find, SanitizedCollectionConfig } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const find: Find = async function find(\n this: DrizzleAdapter,\n {\n collection,\n draftsEnabled,\n joins,\n limit,\n locale,\n page = 1,\n pagination,\n req,\n select,\n sort: sortArg,\n where,\n },\n) {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n const sort = sortArg !== undefined && sortArg !== null ? sortArg : collectionConfig.defaultSort\n\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n return findMany({\n adapter: this,\n collectionSlug: collectionConfig.slug,\n draftsEnabled,\n fields: collectionConfig.flattenedFields,\n joins,\n limit,\n locale,\n page,\n pagination,\n req,\n select,\n sort,\n tableName,\n where,\n })\n}\n"],"names":["toSnakeCase","findMany","find","collection","draftsEnabled","joins","limit","locale","page","pagination","req","select","sort","sortArg","where","collectionConfig","payload","collections","config","undefined","defaultSort","tableName","tableNameMap","get","slug","adapter","collectionSlug","fields","flattenedFields"],"mappings":"AAEA,OAAOA,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,OAAa,eAAeA,KAEvC,EACEC,UAAU,EACVC,aAAa,EACbC,KAAK,EACLC,KAAK,EACLC,MAAM,EACNC,OAAO,CAAC,EACRC,UAAU,EACVC,GAAG,EACHC,MAAM,EACNC,MAAMC,OAAO,EACbC,KAAK,EACN;IAED,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACd,WAAW,CAACe,MAAM;IAC/F,MAAMN,OAAOC,YAAYM,aAAaN,YAAY,OAAOA,UAAUE,iBAAiBK,WAAW;IAE/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACvB,YAAYe,iBAAiBS,IAAI;IAEzE,OAAOvB,SAAS;QACdwB,SAAS,IAAI;QACbC,gBAAgBX,iBAAiBS,IAAI;QACrCpB;QACAuB,QAAQZ,iBAAiBa,eAAe;QACxCvB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAS;QACAP;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../src/find.ts"],"sourcesContent":["import type { Find, SanitizedCollectionConfig } from 'payload'\n\nimport {\n applyBranchIDProjection,\n resolveBranchQuery,\n resolveBranchReadState,\n rewriteBranchIDs,\n withBranchIDSelect,\n} from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const find: Find = async function find(\n this: DrizzleAdapter,\n {\n branch,\n collection,\n draftsEnabled,\n joins,\n limit,\n locale,\n page = 1,\n pagination,\n req,\n select,\n sort: sortArg,\n where,\n },\n) {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n const sort = sortArg !== undefined && sortArg !== null ? sortArg : collectionConfig.defaultSort\n\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n const branchReadState = resolveBranchReadState({\n branch,\n collectionSlug: collectionConfig.slug,\n req,\n })\n const branchedWhere = branchReadState.useBranching\n ? rewriteBranchIDs(where)\n : await resolveBranchQuery({\n branch,\n collectionSlug: collectionConfig.slug,\n req,\n where,\n })\n\n const result = await findMany({\n adapter: this,\n branchVisibility: branchReadState.useBranching\n ? { branch: branchReadState.branch, collectionSlug: collectionConfig.slug }\n : undefined,\n collectionSlug: collectionConfig.slug,\n draftsEnabled,\n fields: collectionConfig.flattenedFields,\n joins,\n limit,\n locale,\n page,\n pagination,\n req,\n select: withBranchIDSelect({ branch, collectionSlug: collectionConfig.slug, req, select }),\n sort,\n tableName,\n where: branchedWhere,\n })\n\n applyBranchIDProjection({\n branch,\n collectionSlug: collectionConfig.slug,\n docs: result.docs as Record<string, unknown>[],\n req,\n })\n\n return result\n}\n"],"names":["applyBranchIDProjection","resolveBranchQuery","resolveBranchReadState","rewriteBranchIDs","withBranchIDSelect","toSnakeCase","findMany","find","branch","collection","draftsEnabled","joins","limit","locale","page","pagination","req","select","sort","sortArg","where","collectionConfig","payload","collections","config","undefined","defaultSort","tableName","tableNameMap","get","slug","branchReadState","collectionSlug","branchedWhere","useBranching","result","adapter","branchVisibility","fields","flattenedFields","docs"],"mappings":"AAEA,SACEA,uBAAuB,EACvBC,kBAAkB,EAClBC,sBAAsB,EACtBC,gBAAgB,EAChBC,kBAAkB,QACb,UAAS;AAChB,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,OAAa,eAAeA,KAEvC,EACEC,MAAM,EACNC,UAAU,EACVC,aAAa,EACbC,KAAK,EACLC,KAAK,EACLC,MAAM,EACNC,OAAO,CAAC,EACRC,UAAU,EACVC,GAAG,EACHC,MAAM,EACNC,MAAMC,OAAO,EACbC,KAAK,EACN;IAED,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACd,WAAW,CAACe,MAAM;IAC/F,MAAMN,OAAOC,YAAYM,aAAaN,YAAY,OAAOA,UAAUE,iBAAiBK,WAAW;IAE/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACxB,YAAYgB,iBAAiBS,IAAI;IAEzE,MAAMC,kBAAkB7B,uBAAuB;QAC7CM;QACAwB,gBAAgBX,iBAAiBS,IAAI;QACrCd;IACF;IACA,MAAMiB,gBAAgBF,gBAAgBG,YAAY,GAC9C/B,iBAAiBiB,SACjB,MAAMnB,mBAAmB;QACvBO;QACAwB,gBAAgBX,iBAAiBS,IAAI;QACrCd;QACAI;IACF;IAEJ,MAAMe,SAAS,MAAM7B,SAAS;QAC5B8B,SAAS,IAAI;QACbC,kBAAkBN,gBAAgBG,YAAY,GAC1C;YAAE1B,QAAQuB,gBAAgBvB,MAAM;YAAEwB,gBAAgBX,iBAAiBS,IAAI;QAAC,IACxEL;QACJO,gBAAgBX,iBAAiBS,IAAI;QACrCpB;QACA4B,QAAQjB,iBAAiBkB,eAAe;QACxC5B;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC,QAAQb,mBAAmB;YAAEI;YAAQwB,gBAAgBX,iBAAiBS,IAAI;YAAEd;YAAKC;QAAO;QACxFC;QACAS;QACAP,OAAOa;IACT;IAEAjC,wBAAwB;QACtBQ;QACAwB,gBAAgBX,iBAAiBS,IAAI;QACrCU,MAAML,OAAOK,IAAI;QACjBxB;IACF;IAEA,OAAOmB;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"findDistinct.d.ts","sourceRoot":"","sources":["../src/findDistinct.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAkD,MAAM,SAAS,CAAA;AA8B3F,eAAO,MAAM,YAAY,EAAE,YA6H1B,CAAA"}
1
+ {"version":3,"file":"findDistinct.d.ts","sourceRoot":"","sources":["../src/findDistinct.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,YAAY,EASlB,MAAM,SAAS,CAAA;AA+ChB,eAAO,MAAM,YAAY,EAAE,YAoO1B,CAAA"}
@@ -1,10 +1,28 @@
1
- import { max, sql } from 'drizzle-orm';
2
- import { getFieldByPath } from 'payload';
1
+ import { and, asc, desc, max, sql } from 'drizzle-orm';
2
+ import { getFieldByPath, getLocalizedPaths, resetBranchState, resolveBranchQuery, resolveBranchReadState, rewriteBranchIDs } from 'payload';
3
3
  import toSnakeCase from 'to-snake-case';
4
+ import { buildBranchVisibility } from './queries/buildBranchVisibility.js';
4
5
  import { buildQuery } from './queries/buildQuery.js';
5
6
  import { selectDistinct } from './queries/selectDistinct.js';
6
7
  import { getTransaction } from './utilities/getTransaction.js';
7
8
  import { DistinctSymbol } from './utilities/rawConstraint.js';
9
+ const prefixWherePaths = ({ prefix, where })=>{
10
+ const prefixedWhere = {};
11
+ for (const [key, value] of Object.entries(where)){
12
+ if ([
13
+ 'and',
14
+ 'or'
15
+ ].includes(key.toLowerCase()) && Array.isArray(value)) {
16
+ prefixedWhere[key] = value.map((nestedWhere)=>prefixWherePaths({
17
+ prefix,
18
+ where: nestedWhere
19
+ }));
20
+ } else {
21
+ prefixedWhere[`${prefix}.${key}`] = value;
22
+ }
23
+ }
24
+ return prefixedWhere;
25
+ };
8
26
  const getOrderColumn = (orderBy, selectFields, joins)=>{
9
27
  if (orderBy.length === 0) {
10
28
  return null;
@@ -22,26 +40,102 @@ export const findDistinct = async function(args) {
22
40
  const page = args.page || 1;
23
41
  const offset = args.limit ? (page - 1) * args.limit : undefined;
24
42
  const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug));
25
- const { joins, orderBy, selectFields, where } = buildQuery({
43
+ // Same predicate a list read gets: distinct values describe the visible documents.
44
+ const branchReadState = resolveBranchReadState({
45
+ branch: args.branch,
46
+ collectionSlug: args.collection,
47
+ req: args.req
48
+ });
49
+ const branchScopedWhere = branchReadState.useBranching ? rewriteBranchIDs(args.where) : await resolveBranchQuery({
50
+ branch: args.branch,
51
+ collectionSlug: args.collection,
52
+ req: args.req,
53
+ where: args.where
54
+ });
55
+ const relatedBranchConstraints = [];
56
+ const fieldPaths = getLocalizedPaths({
57
+ collectionSlug: args.collection,
58
+ fields: collectionConfig.flattenedFields,
59
+ incomingPath: args.field,
60
+ locale: args.locale,
61
+ overrideAccess: true,
62
+ payload: this.payload
63
+ });
64
+ for(let pathIndex = 1; pathIndex < fieldPaths.length; pathIndex++){
65
+ const relatedCollectionSlug = fieldPaths[pathIndex]?.collectionSlug;
66
+ if (!relatedCollectionSlug) {
67
+ continue;
68
+ }
69
+ const relationshipPath = fieldPaths.slice(0, pathIndex).map(({ path })=>path).join('.');
70
+ const relatedBranchReadState = resolveBranchReadState({
71
+ branch: args.branch,
72
+ collectionSlug: relatedCollectionSlug,
73
+ req: args.req
74
+ });
75
+ const relatedWhere = relatedBranchReadState.useBranching ? rewriteBranchIDs(args.relatedAccess?.[relationshipPath]) : await resolveBranchQuery({
76
+ branch: args.branch,
77
+ collectionSlug: relatedCollectionSlug,
78
+ req: args.req,
79
+ where: args.relatedAccess?.[relationshipPath]
80
+ });
81
+ if (relatedWhere && Object.keys(relatedWhere).length) {
82
+ relatedBranchConstraints.push(prefixWherePaths({
83
+ prefix: relationshipPath,
84
+ where: relatedWhere
85
+ }));
86
+ }
87
+ }
88
+ const queryReq = args.req && args.branch !== undefined ? {
89
+ ...args.req,
90
+ branch: args.branch === false ? args.req.branch : args.branch,
91
+ context: {
92
+ ...args.req.context,
93
+ ...args.branch === false ? {
94
+ _branchBypass: true
95
+ } : {}
96
+ }
97
+ } : args.req;
98
+ if (queryReq && queryReq !== args.req) {
99
+ resetBranchState({
100
+ req: queryReq
101
+ });
102
+ }
103
+ const { joins, orderBy, selectFields, where: queryWhere } = buildQuery({
26
104
  adapter: this,
27
105
  fields: collectionConfig.flattenedFields,
28
106
  locale: args.locale,
107
+ req: queryReq,
29
108
  sort: args.sort ?? args.field,
30
109
  tableName,
31
110
  where: {
32
111
  and: [
33
- args.where ?? {},
34
112
  {
35
113
  [args.field]: {
36
114
  equals: DistinctSymbol
37
115
  }
38
- }
116
+ },
117
+ branchScopedWhere ?? {},
118
+ ...relatedBranchConstraints
39
119
  ]
40
120
  }
41
121
  });
42
122
  orderBy.pop();
123
+ const table = this.tables[tableName];
124
+ const canonicalIDExpression = branchReadState.useBranching && args.field === 'id' ? sql`COALESCE(${table._branchDocID}, ${table.id})` : undefined;
125
+ if (canonicalIDExpression) {
126
+ selectFields['_selected'] = canonicalIDExpression.as('_selected');
127
+ }
128
+ const branchVisibilityWhere = branchReadState.useBranching ? buildBranchVisibility({
129
+ adapter: this,
130
+ branch: branchReadState.branch,
131
+ collectionSlug: args.collection,
132
+ table
133
+ }) : undefined;
134
+ const where = and(queryWhere, branchVisibilityWhere);
43
135
  const db = await getTransaction(this, args.req);
44
- const _order = getOrderColumn(orderBy, selectFields, joins);
136
+ const _order = canonicalIDExpression ? null : getOrderColumn(orderBy, selectFields, joins);
137
+ const firstSort = Array.isArray(args.sort) ? args.sort[0] : args.sort;
138
+ const canonicalIDOrder = firstSort?.startsWith('-') ? desc : asc;
45
139
  const selectDistinctResult = await selectDistinct({
46
140
  adapter: this,
47
141
  db,
@@ -49,7 +143,9 @@ export const findDistinct = async function(args) {
49
143
  hasAggregates: Boolean(_order) && !joins.length,
50
144
  joins,
51
145
  query: ({ query })=>{
52
- if (_order && orderBy.length > 0 && !joins.length) {
146
+ if (canonicalIDExpression) {
147
+ query = query.orderBy(canonicalIDOrder(sql`_selected`));
148
+ } else if (_order && orderBy.length > 0 && !joins.length) {
53
149
  query = query.orderBy(orderBy[0].order(sql`_order`));
54
150
  } else {
55
151
  query = query.orderBy(()=>orderBy.map(({ column, order })=>order(column)));
@@ -97,7 +193,7 @@ export const findDistinct = async function(args) {
97
193
  }));
98
194
  if (args.limit) {
99
195
  const totalDocs = await this.countDistinct({
100
- column: selectFields['_selected'],
196
+ column: canonicalIDExpression ?? selectFields['_selected'],
101
197
  db,
102
198
  joins,
103
199
  tableName,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/findDistinct.ts"],"sourcesContent":["import type { asc, desc, SQL } from 'drizzle-orm'\n\nimport { max, sql } from 'drizzle-orm'\nimport { type FindDistinct, getFieldByPath, type SanitizedCollectionConfig } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, DrizzleAdapter, GenericColumn } from './types.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { selectDistinct } from './queries/selectDistinct.js'\nimport { getTransaction } from './utilities/getTransaction.js'\nimport { DistinctSymbol } from './utilities/rawConstraint.js'\n\nconst getOrderColumn = (\n orderBy: { column: GenericColumn; order: typeof asc | typeof desc }[],\n selectFields: Record<string, GenericColumn>,\n joins: BuildQueryJoinAliases,\n): GenericColumn | null | SQL.Aliased => {\n if (orderBy.length === 0) {\n return null\n }\n\n if (orderBy[0].column === selectFields['_selected']) {\n return null\n }\n\n if (joins.length > 0) {\n return orderBy[0].column\n }\n\n return max(orderBy[0]?.column).as('_order')\n}\n\nexport const findDistinct: FindDistinct = async function (this: DrizzleAdapter, args) {\n const collectionConfig: SanitizedCollectionConfig =\n this.payload.collections[args.collection].config\n const page = args.page || 1\n const offset = args.limit ? (page - 1) * args.limit : undefined\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n const { joins, orderBy, selectFields, where } = buildQuery({\n adapter: this,\n fields: collectionConfig.flattenedFields,\n locale: args.locale,\n sort: args.sort ?? args.field,\n tableName,\n where: {\n and: [\n args.where ?? {},\n {\n [args.field]: {\n equals: DistinctSymbol,\n },\n },\n ],\n },\n })\n\n orderBy.pop()\n\n const db = await getTransaction(this, args.req)\n\n const _order = getOrderColumn(orderBy, selectFields, joins)\n\n const selectDistinctResult = await selectDistinct({\n adapter: this,\n db,\n forceRun: true,\n hasAggregates: Boolean(_order) && !joins.length,\n joins,\n query: ({ query }) => {\n if (_order && orderBy.length > 0 && !joins.length) {\n query = query.orderBy(orderBy[0].order(sql`_order`))\n } else {\n query = query.orderBy(() => orderBy.map(({ column, order }) => order(column)))\n }\n\n if (args.limit) {\n if (offset) {\n query = query.offset(offset)\n }\n\n query = query.limit(args.limit)\n }\n\n return query\n },\n selectFields: {\n _selected: selectFields['_selected'],\n ...(_order ? { _order } : {}),\n } as Record<string, any>,\n tableName,\n where,\n })\n\n const field = getFieldByPath({\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n includeRelationships: true,\n path: args.field,\n })?.field\n\n if (field && 'relationTo' in field && Array.isArray(field.relationTo)) {\n for (const row of selectDistinctResult as any) {\n const json = JSON.parse(row._selected)\n const relationTo = Object.keys(json).find((each) => Boolean(json[each]))\n const value = json[relationTo]\n\n if (!value) {\n row._selected = null\n } else {\n row._selected = { relationTo, value }\n }\n }\n }\n\n const values = selectDistinctResult.map((each) => ({\n [args.field]: (each as Record<string, any>)._selected,\n }))\n\n if (args.limit) {\n const totalDocs = await this.countDistinct({\n column: selectFields['_selected'],\n db,\n joins,\n tableName,\n where,\n })\n\n const totalPages = Math.ceil(totalDocs / args.limit)\n const hasPrevPage = page > 1\n const hasNextPage = totalPages > page\n const pagingCounter = (page - 1) * args.limit + 1\n\n return {\n hasNextPage,\n hasPrevPage,\n limit: args.limit,\n nextPage: hasNextPage ? page + 1 : null,\n page,\n pagingCounter,\n prevPage: hasPrevPage ? page - 1 : null,\n totalDocs,\n totalPages,\n values,\n }\n }\n\n return {\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n page: 1,\n pagingCounter: 1,\n totalDocs: values.length,\n totalPages: 1,\n values,\n }\n}\n"],"names":["max","sql","getFieldByPath","toSnakeCase","buildQuery","selectDistinct","getTransaction","DistinctSymbol","getOrderColumn","orderBy","selectFields","joins","length","column","as","findDistinct","args","collectionConfig","payload","collections","collection","config","page","offset","limit","undefined","tableName","tableNameMap","get","slug","where","adapter","fields","flattenedFields","locale","sort","field","and","equals","pop","db","req","_order","selectDistinctResult","forceRun","hasAggregates","Boolean","query","order","map","_selected","includeRelationships","path","Array","isArray","relationTo","row","json","JSON","parse","Object","keys","find","each","value","values","totalDocs","countDistinct","totalPages","Math","ceil","hasPrevPage","hasNextPage","pagingCounter","nextPage","prevPage"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/findDistinct.ts"],"sourcesContent":["import type { SQL } from 'drizzle-orm'\nimport type { PayloadRequest } from 'payload'\n\nimport { and, asc, desc, max, sql } from 'drizzle-orm'\nimport {\n type FindDistinct,\n getFieldByPath,\n getLocalizedPaths,\n resetBranchState,\n resolveBranchQuery,\n resolveBranchReadState,\n rewriteBranchIDs,\n type SanitizedCollectionConfig,\n type Where,\n} from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BuildQueryJoinAliases, DrizzleAdapter, GenericColumn } from './types.js'\n\nimport { buildBranchVisibility } from './queries/buildBranchVisibility.js'\nimport { buildQuery } from './queries/buildQuery.js'\nimport { selectDistinct } from './queries/selectDistinct.js'\nimport { getTransaction } from './utilities/getTransaction.js'\nimport { DistinctSymbol } from './utilities/rawConstraint.js'\n\nconst prefixWherePaths = ({ prefix, where }: { prefix: string; where: Where }): Where => {\n const prefixedWhere: Where = {}\n\n for (const [key, value] of Object.entries(where)) {\n if (['and', 'or'].includes(key.toLowerCase()) && Array.isArray(value)) {\n prefixedWhere[key] = value.map((nestedWhere) =>\n prefixWherePaths({ prefix, where: nestedWhere }),\n )\n } else {\n prefixedWhere[`${prefix}.${key}`] = value\n }\n }\n\n return prefixedWhere\n}\n\nconst getOrderColumn = (\n orderBy: { column: GenericColumn; order: typeof asc | typeof desc }[],\n selectFields: Record<string, GenericColumn>,\n joins: BuildQueryJoinAliases,\n): GenericColumn | null | SQL.Aliased => {\n if (orderBy.length === 0) {\n return null\n }\n\n if (orderBy[0].column === selectFields['_selected']) {\n return null\n }\n\n if (joins.length > 0) {\n return orderBy[0].column\n }\n\n return max(orderBy[0]?.column).as('_order')\n}\n\nexport const findDistinct: FindDistinct = async function (this: DrizzleAdapter, args) {\n const collectionConfig: SanitizedCollectionConfig =\n this.payload.collections[args.collection].config\n const page = args.page || 1\n const offset = args.limit ? (page - 1) * args.limit : undefined\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n // Same predicate a list read gets: distinct values describe the visible documents.\n const branchReadState = resolveBranchReadState({\n branch: args.branch,\n collectionSlug: args.collection,\n req: args.req,\n })\n const branchScopedWhere = branchReadState.useBranching\n ? rewriteBranchIDs(args.where)\n : await resolveBranchQuery({\n branch: args.branch,\n collectionSlug: args.collection,\n req: args.req,\n where: args.where,\n })\n\n const relatedBranchConstraints: Where[] = []\n const fieldPaths = getLocalizedPaths({\n collectionSlug: args.collection,\n fields: collectionConfig.flattenedFields,\n incomingPath: args.field,\n locale: args.locale,\n overrideAccess: true,\n payload: this.payload,\n })\n\n for (let pathIndex = 1; pathIndex < fieldPaths.length; pathIndex++) {\n const relatedCollectionSlug = fieldPaths[pathIndex]?.collectionSlug\n\n if (!relatedCollectionSlug) {\n continue\n }\n\n const relationshipPath = fieldPaths\n .slice(0, pathIndex)\n .map(({ path }) => path)\n .join('.')\n const relatedBranchReadState = resolveBranchReadState({\n branch: args.branch,\n collectionSlug: relatedCollectionSlug,\n req: args.req,\n })\n const relatedWhere = relatedBranchReadState.useBranching\n ? rewriteBranchIDs(args.relatedAccess?.[relationshipPath])\n : await resolveBranchQuery({\n branch: args.branch,\n collectionSlug: relatedCollectionSlug,\n req: args.req,\n where: args.relatedAccess?.[relationshipPath],\n })\n\n if (relatedWhere && Object.keys(relatedWhere).length) {\n relatedBranchConstraints.push(\n prefixWherePaths({ prefix: relationshipPath, where: relatedWhere }),\n )\n }\n }\n\n const queryReq =\n args.req && args.branch !== undefined\n ? {\n ...args.req,\n branch: args.branch === false ? args.req.branch : args.branch,\n context: {\n ...args.req.context,\n ...(args.branch === false ? { _branchBypass: true } : {}),\n },\n }\n : args.req\n\n if (queryReq && queryReq !== args.req) {\n resetBranchState({ req: queryReq as PayloadRequest })\n }\n\n const {\n joins,\n orderBy,\n selectFields,\n where: queryWhere,\n } = buildQuery({\n adapter: this,\n fields: collectionConfig.flattenedFields,\n locale: args.locale,\n req: queryReq,\n sort: args.sort ?? args.field,\n tableName,\n where: {\n and: [\n {\n [args.field]: {\n equals: DistinctSymbol,\n },\n },\n branchScopedWhere ?? {},\n ...relatedBranchConstraints,\n ],\n },\n })\n\n orderBy.pop()\n const table = this.tables[tableName]\n const canonicalIDExpression =\n branchReadState.useBranching && args.field === 'id'\n ? sql`COALESCE(${table._branchDocID}, ${table.id})`\n : undefined\n\n if (canonicalIDExpression) {\n selectFields['_selected'] = canonicalIDExpression.as('_selected') as unknown as GenericColumn\n }\n\n const branchVisibilityWhere = branchReadState.useBranching\n ? buildBranchVisibility({\n adapter: this,\n branch: branchReadState.branch,\n collectionSlug: args.collection,\n table,\n })\n : undefined\n const where = and(queryWhere, branchVisibilityWhere)\n\n const db = await getTransaction(this, args.req)\n\n const _order = canonicalIDExpression ? null : getOrderColumn(orderBy, selectFields, joins)\n const firstSort = Array.isArray(args.sort) ? args.sort[0] : args.sort\n const canonicalIDOrder = firstSort?.startsWith('-') ? desc : asc\n\n const selectDistinctResult = await selectDistinct({\n adapter: this,\n db,\n forceRun: true,\n hasAggregates: Boolean(_order) && !joins.length,\n joins,\n query: ({ query }) => {\n if (canonicalIDExpression) {\n query = query.orderBy(canonicalIDOrder(sql`_selected`))\n } else if (_order && orderBy.length > 0 && !joins.length) {\n query = query.orderBy(orderBy[0].order(sql`_order`))\n } else {\n query = query.orderBy(() => orderBy.map(({ column, order }) => order(column)))\n }\n\n if (args.limit) {\n if (offset) {\n query = query.offset(offset)\n }\n\n query = query.limit(args.limit)\n }\n\n return query\n },\n selectFields: {\n _selected: selectFields['_selected'],\n ...(_order ? { _order } : {}),\n } as Record<string, any>,\n tableName,\n where,\n })\n\n const field = getFieldByPath({\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n includeRelationships: true,\n path: args.field,\n })?.field\n\n if (field && 'relationTo' in field && Array.isArray(field.relationTo)) {\n for (const row of selectDistinctResult as any) {\n const json = JSON.parse(row._selected)\n const relationTo = Object.keys(json).find((each) => Boolean(json[each]))\n const value = json[relationTo]\n\n if (!value) {\n row._selected = null\n } else {\n row._selected = { relationTo, value }\n }\n }\n }\n\n const values = selectDistinctResult.map((each) => ({\n [args.field]: (each as Record<string, any>)._selected,\n }))\n\n if (args.limit) {\n const totalDocs = await this.countDistinct({\n column: (canonicalIDExpression ?? selectFields['_selected']) as GenericColumn,\n db,\n joins,\n tableName,\n where,\n })\n\n const totalPages = Math.ceil(totalDocs / args.limit)\n const hasPrevPage = page > 1\n const hasNextPage = totalPages > page\n const pagingCounter = (page - 1) * args.limit + 1\n\n return {\n hasNextPage,\n hasPrevPage,\n limit: args.limit,\n nextPage: hasNextPage ? page + 1 : null,\n page,\n pagingCounter,\n prevPage: hasPrevPage ? page - 1 : null,\n totalDocs,\n totalPages,\n values,\n }\n }\n\n return {\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n page: 1,\n pagingCounter: 1,\n totalDocs: values.length,\n totalPages: 1,\n values,\n }\n}\n"],"names":["and","asc","desc","max","sql","getFieldByPath","getLocalizedPaths","resetBranchState","resolveBranchQuery","resolveBranchReadState","rewriteBranchIDs","toSnakeCase","buildBranchVisibility","buildQuery","selectDistinct","getTransaction","DistinctSymbol","prefixWherePaths","prefix","where","prefixedWhere","key","value","Object","entries","includes","toLowerCase","Array","isArray","map","nestedWhere","getOrderColumn","orderBy","selectFields","joins","length","column","as","findDistinct","args","collectionConfig","payload","collections","collection","config","page","offset","limit","undefined","tableName","tableNameMap","get","slug","branchReadState","branch","collectionSlug","req","branchScopedWhere","useBranching","relatedBranchConstraints","fieldPaths","fields","flattenedFields","incomingPath","field","locale","overrideAccess","pathIndex","relatedCollectionSlug","relationshipPath","slice","path","join","relatedBranchReadState","relatedWhere","relatedAccess","keys","push","queryReq","context","_branchBypass","queryWhere","adapter","sort","equals","pop","table","tables","canonicalIDExpression","_branchDocID","id","branchVisibilityWhere","db","_order","firstSort","canonicalIDOrder","startsWith","selectDistinctResult","forceRun","hasAggregates","Boolean","query","order","_selected","includeRelationships","relationTo","row","json","JSON","parse","find","each","values","totalDocs","countDistinct","totalPages","Math","ceil","hasPrevPage","hasNextPage","pagingCounter","nextPage","prevPage"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"findGlobal.d.ts","sourceRoot":"","sources":["../src/findGlobal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAQzC,eAAO,MAAM,UAAU,EAAE,UA4BxB,CAAA"}
1
+ {"version":3,"file":"findGlobal.d.ts","sourceRoot":"","sources":["../src/findGlobal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAezC,eAAO,MAAM,UAAU,EAAE,UAgCxB,CAAA"}
@@ -1,19 +1,38 @@
1
+ import { branchGlobalNeedsBothRows, pickBranchGlobal, resolveBranch, resolveBranchGlobalQuery, withBranchGlobalSelect } from 'payload';
1
2
  import toSnakeCase from 'to-snake-case';
2
3
  import { findMany } from './find/findMany.js';
3
- export const findGlobal = async function findGlobal({ slug, locale, req, select, where }) {
4
+ export const findGlobal = async function findGlobal({ slug, branch, locale, req, select, where }) {
4
5
  const globalConfig = this.payload.globals.config.find((config)=>config.slug === slug);
5
6
  const tableName = this.tableNameMap.get(toSnakeCase(globalConfig.slug));
6
- const { docs: [doc] } = await findMany({
7
+ const needsBoth = branchGlobalNeedsBothRows({
8
+ branch,
9
+ globalSlug: slug,
10
+ req
11
+ });
12
+ const { docs } = await findMany({
7
13
  adapter: this,
8
14
  fields: globalConfig.flattenedFields,
9
- limit: 1,
15
+ limit: needsBoth ? 2 : 1,
10
16
  locale,
11
17
  pagination: false,
12
18
  req,
13
- select,
19
+ select: withBranchGlobalSelect({
20
+ branch,
21
+ globalSlug: slug,
22
+ req,
23
+ select
24
+ }),
14
25
  tableName,
15
- where
26
+ where: resolveBranchGlobalQuery({
27
+ branch,
28
+ globalSlug: slug,
29
+ req,
30
+ where
31
+ })
16
32
  });
33
+ const doc = needsBoth ? pickBranchGlobal(docs, branch || resolveBranch({
34
+ req: req
35
+ })) : docs[0];
17
36
  if (doc) {
18
37
  doc.globalType = slug;
19
38
  return doc;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/findGlobal.ts"],"sourcesContent":["import type { FindGlobal } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const findGlobal: FindGlobal = async function findGlobal(\n this: DrizzleAdapter,\n { slug, locale, req, select, where },\n) {\n const globalConfig = this.payload.globals.config.find((config) => config.slug === slug)\n\n const tableName = this.tableNameMap.get(toSnakeCase(globalConfig.slug))\n\n const {\n docs: [doc],\n } = await findMany({\n adapter: this,\n fields: globalConfig.flattenedFields,\n limit: 1,\n locale,\n pagination: false,\n req,\n select,\n tableName,\n where,\n })\n\n if (doc) {\n doc.globalType = slug\n return doc\n }\n\n return {}\n}\n"],"names":["toSnakeCase","findMany","findGlobal","slug","locale","req","select","where","globalConfig","payload","globals","config","find","tableName","tableNameMap","get","docs","doc","adapter","fields","flattenedFields","limit","pagination","globalType"],"mappings":"AAEA,OAAOA,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,aAAyB,eAAeA,WAEnD,EAAEC,IAAI,EAAEC,MAAM,EAAEC,GAAG,EAAEC,MAAM,EAAEC,KAAK,EAAE;IAEpC,MAAMC,eAAe,IAAI,CAACC,OAAO,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAACD,SAAWA,OAAOR,IAAI,KAAKA;IAElF,MAAMU,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACf,YAAYQ,aAAaL,IAAI;IAErE,MAAM,EACJa,MAAM,CAACC,IAAI,EACZ,GAAG,MAAMhB,SAAS;QACjBiB,SAAS,IAAI;QACbC,QAAQX,aAAaY,eAAe;QACpCC,OAAO;QACPjB;QACAkB,YAAY;QACZjB;QACAC;QACAO;QACAN;IACF;IAEA,IAAIU,KAAK;QACPA,IAAIM,UAAU,GAAGpB;QACjB,OAAOc;IACT;IAEA,OAAO,CAAC;AACV,EAAC"}
1
+ {"version":3,"sources":["../src/findGlobal.ts"],"sourcesContent":["import type { FindGlobal } from 'payload'\n\nimport {\n branchGlobalNeedsBothRows,\n pickBranchGlobal,\n resolveBranch,\n resolveBranchGlobalQuery,\n withBranchGlobalSelect,\n} from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const findGlobal: FindGlobal = async function findGlobal(\n this: DrizzleAdapter,\n { slug, branch, locale, req, select, where },\n) {\n const globalConfig = this.payload.globals.config.find((config) => config.slug === slug)\n\n const tableName = this.tableNameMap.get(toSnakeCase(globalConfig.slug))\n\n const needsBoth = branchGlobalNeedsBothRows({ branch, globalSlug: slug, req })\n\n const { docs } = await findMany({\n adapter: this,\n fields: globalConfig.flattenedFields,\n limit: needsBoth ? 2 : 1,\n locale,\n pagination: false,\n req,\n select: withBranchGlobalSelect({ branch, globalSlug: slug, req, select }),\n tableName,\n where: resolveBranchGlobalQuery({ branch, globalSlug: slug, req, where }),\n })\n\n const doc = needsBoth\n ? pickBranchGlobal(docs, (branch as string) || resolveBranch({ req: req as never }))\n : docs[0]\n\n if (doc) {\n doc.globalType = slug\n return doc\n }\n\n return {}\n}\n"],"names":["branchGlobalNeedsBothRows","pickBranchGlobal","resolveBranch","resolveBranchGlobalQuery","withBranchGlobalSelect","toSnakeCase","findMany","findGlobal","slug","branch","locale","req","select","where","globalConfig","payload","globals","config","find","tableName","tableNameMap","get","needsBoth","globalSlug","docs","adapter","fields","flattenedFields","limit","pagination","doc","globalType"],"mappings":"AAEA,SACEA,yBAAyB,EACzBC,gBAAgB,EAChBC,aAAa,EACbC,wBAAwB,EACxBC,sBAAsB,QACjB,UAAS;AAChB,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,aAAyB,eAAeA,WAEnD,EAAEC,IAAI,EAAEC,MAAM,EAAEC,MAAM,EAAEC,GAAG,EAAEC,MAAM,EAAEC,KAAK,EAAE;IAE5C,MAAMC,eAAe,IAAI,CAACC,OAAO,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAACD,SAAWA,OAAOT,IAAI,KAAKA;IAElF,MAAMW,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAAChB,YAAYS,aAAaN,IAAI;IAErE,MAAMc,YAAYtB,0BAA0B;QAAES;QAAQc,YAAYf;QAAMG;IAAI;IAE5E,MAAM,EAAEa,IAAI,EAAE,GAAG,MAAMlB,SAAS;QAC9BmB,SAAS,IAAI;QACbC,QAAQZ,aAAaa,eAAe;QACpCC,OAAON,YAAY,IAAI;QACvBZ;QACAmB,YAAY;QACZlB;QACAC,QAAQR,uBAAuB;YAAEK;YAAQc,YAAYf;YAAMG;YAAKC;QAAO;QACvEO;QACAN,OAAOV,yBAAyB;YAAEM;YAAQc,YAAYf;YAAMG;YAAKE;QAAM;IACzE;IAEA,MAAMiB,MAAMR,YACRrB,iBAAiBuB,MAAM,AAACf,UAAqBP,cAAc;QAAES,KAAKA;IAAa,MAC/Ea,IAAI,CAAC,EAAE;IAEX,IAAIM,KAAK;QACPA,IAAIC,UAAU,GAAGvB;QACjB,OAAOsB;IACT;IAEA,OAAO,CAAC;AACV,EAAC"}