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

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 (280) hide show
  1. package/dist/count.d.ts.map +1 -1
  2. package/dist/count.js +25 -3
  3. package/dist/count.js.map +1 -1
  4. package/dist/countVersions.d.ts.map +1 -1
  5. package/dist/countVersions.js +28 -4
  6. package/dist/countVersions.js.map +1 -1
  7. package/dist/createGlobalVersion.d.ts.map +1 -1
  8. package/dist/createGlobalVersion.js +15 -2
  9. package/dist/createGlobalVersion.js.map +1 -1
  10. package/dist/createTableName.d.ts.map +1 -1
  11. package/dist/createTableName.js +2 -7
  12. package/dist/createTableName.js.map +1 -1
  13. package/dist/createVersion.d.ts.map +1 -1
  14. package/dist/createVersion.js +12 -1
  15. package/dist/createVersion.js.map +1 -1
  16. package/dist/deleteBranchGlobal.d.ts +10 -0
  17. package/dist/deleteBranchGlobal.d.ts.map +1 -0
  18. package/dist/deleteBranchGlobal.js +27 -0
  19. package/dist/deleteBranchGlobal.js.map +1 -0
  20. package/dist/deleteOne.d.ts.map +1 -1
  21. package/dist/deleteOne.js +18 -1
  22. package/dist/deleteOne.js.map +1 -1
  23. package/dist/exports/postgres.d.ts +3 -0
  24. package/dist/exports/postgres.d.ts.map +1 -1
  25. package/dist/exports/postgres.js +3 -0
  26. package/dist/exports/postgres.js.map +1 -1
  27. package/dist/exports/sqlite.d.ts +1 -0
  28. package/dist/exports/sqlite.d.ts.map +1 -1
  29. package/dist/exports/sqlite.js +1 -0
  30. package/dist/exports/sqlite.js.map +1 -1
  31. package/dist/find/buildFindManyArgs.d.ts +3 -2
  32. package/dist/find/buildFindManyArgs.d.ts.map +1 -1
  33. package/dist/find/buildFindManyArgs.js +2 -1
  34. package/dist/find/buildFindManyArgs.js.map +1 -1
  35. package/dist/find/buildPolymorphicJoinQuery.d.ts +39 -0
  36. package/dist/find/buildPolymorphicJoinQuery.d.ts.map +1 -0
  37. package/dist/find/buildPolymorphicJoinQuery.js +152 -0
  38. package/dist/find/buildPolymorphicJoinQuery.js.map +1 -0
  39. package/dist/find/buildPolymorphicJoinWhere.d.ts +20 -0
  40. package/dist/find/buildPolymorphicJoinWhere.d.ts.map +1 -0
  41. package/dist/find/buildPolymorphicJoinWhere.js +301 -0
  42. package/dist/find/buildPolymorphicJoinWhere.js.map +1 -0
  43. package/dist/find/createPolymorphicJoinWherePlan.d.ts +37 -0
  44. package/dist/find/createPolymorphicJoinWherePlan.d.ts.map +1 -0
  45. package/dist/find/createPolymorphicJoinWherePlan.js +191 -0
  46. package/dist/find/createPolymorphicJoinWherePlan.js.map +1 -0
  47. package/dist/find/findMany.d.ts +6 -1
  48. package/dist/find/findMany.d.ts.map +1 -1
  49. package/dist/find/findMany.js +16 -3
  50. package/dist/find/findMany.js.map +1 -1
  51. package/dist/find/traverseFields.d.ts +3 -2
  52. package/dist/find/traverseFields.d.ts.map +1 -1
  53. package/dist/find/traverseFields.js +72 -197
  54. package/dist/find/traverseFields.js.map +1 -1
  55. package/dist/find.d.ts.map +1 -1
  56. package/dist/find.js +32 -4
  57. package/dist/find.js.map +1 -1
  58. package/dist/findDistinct.d.ts.map +1 -1
  59. package/dist/findDistinct.js +107 -8
  60. package/dist/findDistinct.js.map +1 -1
  61. package/dist/findGlobal.d.ts.map +1 -1
  62. package/dist/findGlobal.js +22 -5
  63. package/dist/findGlobal.js.map +1 -1
  64. package/dist/findGlobalVersions.js +8 -3
  65. package/dist/findGlobalVersions.js.map +1 -1
  66. package/dist/findOne.d.ts +1 -1
  67. package/dist/findOne.d.ts.map +1 -1
  68. package/dist/findOne.js +30 -3
  69. package/dist/findOne.js.map +1 -1
  70. package/dist/findVersions.d.ts.map +1 -1
  71. package/dist/findVersions.js +32 -5
  72. package/dist/findVersions.js.map +1 -1
  73. package/dist/index.d.ts +6 -2
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +4 -0
  76. package/dist/index.js.map +1 -1
  77. package/dist/migrate.d.ts.map +1 -1
  78. package/dist/migrate.js +41 -15
  79. package/dist/migrate.js.map +1 -1
  80. package/dist/migrateDown.d.ts +2 -1
  81. package/dist/migrateDown.d.ts.map +1 -1
  82. package/dist/migrateDown.js +17 -4
  83. package/dist/migrateDown.js.map +1 -1
  84. package/dist/migrateFresh.d.ts +4 -2
  85. package/dist/migrateFresh.d.ts.map +1 -1
  86. package/dist/migrateFresh.js +26 -9
  87. package/dist/migrateFresh.js.map +1 -1
  88. package/dist/migrateRefresh.d.ts +2 -1
  89. package/dist/migrateRefresh.d.ts.map +1 -1
  90. package/dist/migrateRefresh.js +20 -5
  91. package/dist/migrateRefresh.js.map +1 -1
  92. package/dist/migrateReset.d.ts +2 -1
  93. package/dist/migrateReset.d.ts.map +1 -1
  94. package/dist/migrateReset.js +18 -4
  95. package/dist/migrateReset.js.map +1 -1
  96. package/dist/migrateStatus.d.ts +2 -1
  97. package/dist/migrateStatus.d.ts.map +1 -1
  98. package/dist/migrateStatus.js +11 -6
  99. package/dist/migrateStatus.js.map +1 -1
  100. package/dist/postgres/createJSONQuery/index.js +3 -3
  101. package/dist/postgres/createJSONQuery/index.js.map +1 -1
  102. package/dist/postgres/init.d.ts.map +1 -1
  103. package/dist/postgres/init.js +6 -0
  104. package/dist/postgres/init.js.map +1 -1
  105. package/dist/postgres/insert.d.ts.map +1 -1
  106. package/dist/postgres/insert.js +4 -2
  107. package/dist/postgres/insert.js.map +1 -1
  108. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.d.ts +35 -0
  109. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.d.ts.map +1 -0
  110. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.js +185 -0
  111. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.js.map +1 -0
  112. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts.map +1 -1
  113. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js +8 -4
  114. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js.map +1 -1
  115. package/dist/postgres/predefinedMigrations/v2-v3/index.js +1 -1
  116. package/dist/postgres/predefinedMigrations/v2-v3/index.js.map +1 -1
  117. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts +15 -0
  118. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts.map +1 -0
  119. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js +25 -0
  120. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js.map +1 -0
  121. package/dist/postgres/query/postgresUnaccent.d.ts +13 -0
  122. package/dist/postgres/query/postgresUnaccent.d.ts.map +1 -0
  123. package/dist/postgres/query/postgresUnaccent.js +40 -0
  124. package/dist/postgres/query/postgresUnaccent.js.map +1 -0
  125. package/dist/postgres/types.d.ts +17 -2
  126. package/dist/postgres/types.d.ts.map +1 -1
  127. package/dist/postgres/types.js.map +1 -1
  128. package/dist/queries/buildAndOrConditions.d.ts +3 -2
  129. package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
  130. package/dist/queries/buildAndOrConditions.js +2 -1
  131. package/dist/queries/buildAndOrConditions.js.map +1 -1
  132. package/dist/queries/buildBranchVisibility.d.ts +11 -0
  133. package/dist/queries/buildBranchVisibility.d.ts.map +1 -0
  134. package/dist/queries/buildBranchVisibility.js +48 -0
  135. package/dist/queries/buildBranchVisibility.js.map +1 -0
  136. package/dist/queries/buildOperatorConstraint.d.ts +22 -0
  137. package/dist/queries/buildOperatorConstraint.d.ts.map +1 -0
  138. package/dist/queries/buildOperatorConstraint.js +63 -0
  139. package/dist/queries/buildOperatorConstraint.js.map +1 -0
  140. package/dist/queries/buildOrderBy.d.ts +3 -2
  141. package/dist/queries/buildOrderBy.d.ts.map +1 -1
  142. package/dist/queries/buildOrderBy.js +2 -1
  143. package/dist/queries/buildOrderBy.js.map +1 -1
  144. package/dist/queries/buildQuery.d.ts +3 -2
  145. package/dist/queries/buildQuery.d.ts.map +1 -1
  146. package/dist/queries/buildQuery.js +4 -2
  147. package/dist/queries/buildQuery.js.map +1 -1
  148. package/dist/queries/getTableColumnFromPath.d.ts +15 -5
  149. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  150. package/dist/queries/getTableColumnFromPath.js +225 -54
  151. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  152. package/dist/queries/operatorMap.d.ts +7 -3
  153. package/dist/queries/operatorMap.d.ts.map +1 -1
  154. package/dist/queries/operatorMap.js.map +1 -1
  155. package/dist/queries/parseParams.d.ts +3 -2
  156. package/dist/queries/parseParams.d.ts.map +1 -1
  157. package/dist/queries/parseParams.js +266 -11
  158. package/dist/queries/parseParams.js.map +1 -1
  159. package/dist/queries/resolveRelationshipPath.d.ts +36 -0
  160. package/dist/queries/resolveRelationshipPath.d.ts.map +1 -0
  161. package/dist/queries/resolveRelationshipPath.js +66 -0
  162. package/dist/queries/resolveRelationshipPath.js.map +1 -0
  163. package/dist/queries/validateOperatorHandlers.d.ts +8 -0
  164. package/dist/queries/validateOperatorHandlers.d.ts.map +1 -0
  165. package/dist/queries/validateOperatorHandlers.js +30 -0
  166. package/dist/queries/validateOperatorHandlers.js.map +1 -0
  167. package/dist/queryDrafts.d.ts.map +1 -1
  168. package/dist/queryDrafts.js +23 -4
  169. package/dist/queryDrafts.js.map +1 -1
  170. package/dist/schema/build.d.ts.map +1 -1
  171. package/dist/schema/build.js +20 -17
  172. package/dist/schema/build.js.map +1 -1
  173. package/dist/schema/traverseFields.js +5 -5
  174. package/dist/schema/traverseFields.js.map +1 -1
  175. package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js +3 -2
  176. package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js.map +1 -1
  177. package/dist/sqlite/createJSONQuery/index.d.ts.map +1 -1
  178. package/dist/sqlite/createJSONQuery/index.js +6 -5
  179. package/dist/sqlite/createJSONQuery/index.js.map +1 -1
  180. package/dist/sqlite/insert.d.ts.map +1 -1
  181. package/dist/sqlite/insert.js +9 -4
  182. package/dist/sqlite/insert.js.map +1 -1
  183. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.d.ts +15 -0
  184. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.d.ts.map +1 -0
  185. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.js +114 -0
  186. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.js.map +1 -0
  187. package/dist/sqlite/types.d.ts +4 -0
  188. package/dist/sqlite/types.d.ts.map +1 -1
  189. package/dist/sqlite/types.js.map +1 -1
  190. package/dist/transactions/beginTransaction.d.ts.map +1 -1
  191. package/dist/transactions/beginTransaction.js +13 -5
  192. package/dist/transactions/beginTransaction.js.map +1 -1
  193. package/dist/transactions/commitTransaction.d.ts.map +1 -1
  194. package/dist/transactions/commitTransaction.js +1 -5
  195. package/dist/transactions/commitTransaction.js.map +1 -1
  196. package/dist/transform/write/array.d.ts +3 -2
  197. package/dist/transform/write/array.d.ts.map +1 -1
  198. package/dist/transform/write/array.js +2 -1
  199. package/dist/transform/write/array.js.map +1 -1
  200. package/dist/transform/write/blocks.d.ts +3 -2
  201. package/dist/transform/write/blocks.d.ts.map +1 -1
  202. package/dist/transform/write/blocks.js +2 -1
  203. package/dist/transform/write/blocks.js.map +1 -1
  204. package/dist/transform/write/index.d.ts.map +1 -1
  205. package/dist/transform/write/index.js +2 -0
  206. package/dist/transform/write/index.js.map +1 -1
  207. package/dist/transform/write/traverseFields.d.ts +2 -1
  208. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  209. package/dist/transform/write/traverseFields.js +40 -20
  210. package/dist/transform/write/traverseFields.js.map +1 -1
  211. package/dist/transform/write/types.d.ts +7 -0
  212. package/dist/transform/write/types.d.ts.map +1 -1
  213. package/dist/transform/write/types.js.map +1 -1
  214. package/dist/types.d.ts +51 -2
  215. package/dist/types.d.ts.map +1 -1
  216. package/dist/types.js.map +1 -1
  217. package/dist/updateGlobal.d.ts +5 -1
  218. package/dist/updateGlobal.d.ts.map +1 -1
  219. package/dist/updateGlobal.js +96 -4
  220. package/dist/updateGlobal.js.map +1 -1
  221. package/dist/updateJobs.d.ts.map +1 -1
  222. package/dist/updateJobs.js +37 -0
  223. package/dist/updateJobs.js.map +1 -1
  224. package/dist/updateOne.d.ts.map +1 -1
  225. package/dist/updateOne.js +86 -4
  226. package/dist/updateOne.js.map +1 -1
  227. package/dist/upsertBranchGlobalChange.d.ts +3 -0
  228. package/dist/upsertBranchGlobalChange.d.ts.map +1 -0
  229. package/dist/upsertBranchGlobalChange.js +35 -0
  230. package/dist/upsertBranchGlobalChange.js.map +1 -0
  231. package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -1
  232. package/dist/upsertRow/deleteExistingRowsByPath.js +17 -12
  233. package/dist/upsertRow/deleteExistingRowsByPath.js.map +1 -1
  234. package/dist/upsertRow/index.d.ts +1 -1
  235. package/dist/upsertRow/index.d.ts.map +1 -1
  236. package/dist/upsertRow/index.js +156 -46
  237. package/dist/upsertRow/index.js.map +1 -1
  238. package/dist/upsertRow/types.d.ts +3 -0
  239. package/dist/upsertRow/types.d.ts.map +1 -1
  240. package/dist/upsertRow/types.js.map +1 -1
  241. package/dist/utilities/buildCreateMigration.d.ts.map +1 -1
  242. package/dist/utilities/buildCreateMigration.js +12 -8
  243. package/dist/utilities/buildCreateMigration.js.map +1 -1
  244. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.d.ts +15 -0
  245. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.d.ts.map +1 -0
  246. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js +110 -0
  247. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js.map +1 -0
  248. package/dist/utilities/buildForeignKeyName.d.ts.map +1 -1
  249. package/dist/utilities/buildForeignKeyName.js +3 -2
  250. package/dist/utilities/buildForeignKeyName.js.map +1 -1
  251. package/dist/utilities/buildIndexName.d.ts.map +1 -1
  252. package/dist/utilities/buildIndexName.js +3 -2
  253. package/dist/utilities/buildIndexName.js.map +1 -1
  254. package/dist/utilities/checkTruncatedIdentifiers.d.ts +13 -0
  255. package/dist/utilities/checkTruncatedIdentifiers.d.ts.map +1 -0
  256. package/dist/utilities/checkTruncatedIdentifiers.js +56 -0
  257. package/dist/utilities/checkTruncatedIdentifiers.js.map +1 -0
  258. package/dist/utilities/createSchemaGenerator.d.ts.map +1 -1
  259. package/dist/utilities/createSchemaGenerator.js +3 -0
  260. package/dist/utilities/createSchemaGenerator.js.map +1 -1
  261. package/dist/utilities/getSizesToVariantsRenames.d.ts +54 -0
  262. package/dist/utilities/getSizesToVariantsRenames.d.ts.map +1 -0
  263. package/dist/utilities/getSizesToVariantsRenames.js +251 -0
  264. package/dist/utilities/getSizesToVariantsRenames.js.map +1 -0
  265. package/dist/utilities/parseJSONPathSegment.d.ts +9 -0
  266. package/dist/utilities/parseJSONPathSegment.d.ts.map +1 -0
  267. package/dist/utilities/parseJSONPathSegment.js +17 -0
  268. package/dist/utilities/parseJSONPathSegment.js.map +1 -0
  269. package/dist/utilities/validateExistingBlockIsIdentical.d.ts +1 -5
  270. package/dist/utilities/validateExistingBlockIsIdentical.d.ts.map +1 -1
  271. package/dist/utilities/validateExistingBlockIsIdentical.js.map +1 -1
  272. package/dist/utilities/validateIdentifierLength.d.ts +12 -0
  273. package/dist/utilities/validateIdentifierLength.d.ts.map +1 -0
  274. package/dist/utilities/validateIdentifierLength.js +18 -0
  275. package/dist/utilities/validateIdentifierLength.js.map +1 -0
  276. package/package.json +3 -3
  277. package/dist/upsertRow/handleUpsertError.spec.js +0 -42
  278. package/dist/upsertRow/handleUpsertError.spec.js.map +0 -1
  279. package/dist/utilities/isValidStringID.spec.js +0 -15
  280. package/dist/utilities/isValidStringID.spec.js.map +0 -1
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":"AAGA,OAAO,EACL,KAAK,YAAY,EAQlB,MAAM,SAAS,CAAA;AA+ChB,eAAO,MAAM,YAAY,EAAE,YAgP1B,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, 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,7 +40,60 @@ 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 nativeRelatedBranchReads = [];
57
+ const fieldPaths = getLocalizedPaths({
58
+ collectionSlug: args.collection,
59
+ fields: collectionConfig.flattenedFields,
60
+ incomingPath: args.field,
61
+ locale: args.locale,
62
+ overrideAccess: true,
63
+ payload: this.payload
64
+ });
65
+ for(let pathIndex = 1; pathIndex < fieldPaths.length; pathIndex++){
66
+ const relatedCollectionSlug = fieldPaths[pathIndex]?.collectionSlug;
67
+ if (!relatedCollectionSlug) {
68
+ continue;
69
+ }
70
+ const relationshipPath = fieldPaths.slice(0, pathIndex).map(({ path })=>path).join('.');
71
+ const relatedBranchReadState = resolveBranchReadState({
72
+ branch: args.branch,
73
+ collectionSlug: relatedCollectionSlug,
74
+ req: args.req
75
+ });
76
+ const relatedWhere = relatedBranchReadState.useBranching ? rewriteBranchIDs(args.relatedAccess?.[relationshipPath]) : await resolveBranchQuery({
77
+ branch: args.branch,
78
+ collectionSlug: relatedCollectionSlug,
79
+ req: args.req,
80
+ where: args.relatedAccess?.[relationshipPath]
81
+ });
82
+ if (relatedBranchReadState.useBranching) {
83
+ nativeRelatedBranchReads.push({
84
+ branch: relatedBranchReadState.branch,
85
+ collectionSlug: relatedCollectionSlug,
86
+ relationshipPath
87
+ });
88
+ }
89
+ if (relatedWhere && Object.keys(relatedWhere).length) {
90
+ relatedBranchConstraints.push(prefixWherePaths({
91
+ prefix: relationshipPath,
92
+ where: relatedWhere
93
+ }));
94
+ }
95
+ }
96
+ const { joins, orderBy, selectFields, where: queryWhere } = buildQuery({
26
97
  adapter: this,
27
98
  fields: collectionConfig.flattenedFields,
28
99
  locale: args.locale,
@@ -30,18 +101,44 @@ export const findDistinct = async function(args) {
30
101
  tableName,
31
102
  where: {
32
103
  and: [
33
- args.where ?? {},
34
104
  {
35
105
  [args.field]: {
36
106
  equals: DistinctSymbol
37
107
  }
38
- }
108
+ },
109
+ branchScopedWhere ?? {},
110
+ ...relatedBranchConstraints
39
111
  ]
40
112
  }
41
113
  });
42
114
  orderBy.pop();
115
+ const table = this.tables[tableName];
116
+ const canonicalIDExpression = branchReadState.useBranching && args.field === 'id' ? sql`COALESCE(${table._branchDocID}, ${table.id})` : undefined;
117
+ if (canonicalIDExpression) {
118
+ selectFields['_selected'] = canonicalIDExpression.as('_selected');
119
+ }
120
+ const branchVisibilityWhere = branchReadState.useBranching ? buildBranchVisibility({
121
+ adapter: this,
122
+ branch: branchReadState.branch,
123
+ collectionSlug: args.collection,
124
+ table
125
+ }) : undefined;
126
+ const relatedBranchVisibility = nativeRelatedBranchReads.flatMap((relatedBranchRead)=>{
127
+ const relatedTable = joins.find(({ queryPath })=>queryPath?.endsWith(`${relatedBranchRead.relationshipPath}._target`))?.table;
128
+ return relatedTable ? [
129
+ buildBranchVisibility({
130
+ adapter: this,
131
+ branch: relatedBranchRead.branch,
132
+ collectionSlug: relatedBranchRead.collectionSlug,
133
+ table: relatedTable
134
+ })
135
+ ] : [];
136
+ });
137
+ const where = and(queryWhere, branchVisibilityWhere, ...relatedBranchVisibility);
43
138
  const db = await getTransaction(this, args.req);
44
- const _order = getOrderColumn(orderBy, selectFields, joins);
139
+ const _order = canonicalIDExpression ? null : getOrderColumn(orderBy, selectFields, joins);
140
+ const firstSort = Array.isArray(args.sort) ? args.sort[0] : args.sort;
141
+ const canonicalIDOrder = firstSort?.startsWith('-') ? desc : asc;
45
142
  const selectDistinctResult = await selectDistinct({
46
143
  adapter: this,
47
144
  db,
@@ -49,7 +146,9 @@ export const findDistinct = async function(args) {
49
146
  hasAggregates: Boolean(_order) && !joins.length,
50
147
  joins,
51
148
  query: ({ query })=>{
52
- if (_order && orderBy.length > 0 && !joins.length) {
149
+ if (canonicalIDExpression) {
150
+ query = query.orderBy(canonicalIDOrder(sql`_selected`));
151
+ } else if (_order && orderBy.length > 0 && !joins.length) {
53
152
  query = query.orderBy(orderBy[0].order(sql`_order`));
54
153
  } else {
55
154
  query = query.orderBy(()=>orderBy.map(({ column, order })=>order(column)));
@@ -97,7 +196,7 @@ export const findDistinct = async function(args) {
97
196
  }));
98
197
  if (args.limit) {
99
198
  const totalDocs = await this.countDistinct({
100
- column: selectFields['_selected'],
199
+ column: canonicalIDExpression ?? selectFields['_selected'],
101
200
  db,
102
201
  joins,
103
202
  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'\n\nimport { and, asc, desc, max, sql } from 'drizzle-orm'\nimport {\n type FindDistinct,\n getFieldByPath,\n getLocalizedPaths,\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 nativeRelatedBranchReads: {\n branch: string\n collectionSlug: string\n relationshipPath: string\n }[] = []\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 (relatedBranchReadState.useBranching) {\n nativeRelatedBranchReads.push({\n branch: relatedBranchReadState.branch,\n collectionSlug: relatedCollectionSlug,\n relationshipPath,\n })\n }\n\n if (relatedWhere && Object.keys(relatedWhere).length) {\n relatedBranchConstraints.push(\n prefixWherePaths({ prefix: relationshipPath, where: relatedWhere }),\n )\n }\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 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 relatedBranchVisibility = nativeRelatedBranchReads.flatMap((relatedBranchRead) => {\n const relatedTable = joins.find(({ queryPath }) =>\n queryPath?.endsWith(`${relatedBranchRead.relationshipPath}._target`),\n )?.table\n\n return relatedTable\n ? [\n buildBranchVisibility({\n adapter: this,\n branch: relatedBranchRead.branch,\n collectionSlug: relatedBranchRead.collectionSlug,\n table: relatedTable,\n }),\n ]\n : []\n })\n const where = and(queryWhere, branchVisibilityWhere, ...relatedBranchVisibility)\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","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","nativeRelatedBranchReads","fieldPaths","fields","flattenedFields","incomingPath","field","locale","overrideAccess","pathIndex","relatedCollectionSlug","relationshipPath","slice","path","join","relatedBranchReadState","relatedWhere","relatedAccess","push","keys","queryWhere","adapter","sort","equals","pop","table","tables","canonicalIDExpression","_branchDocID","id","branchVisibilityWhere","relatedBranchVisibility","flatMap","relatedBranchRead","relatedTable","find","queryPath","endsWith","db","_order","firstSort","canonicalIDOrder","startsWith","selectDistinctResult","forceRun","hasAggregates","Boolean","query","order","_selected","includeRelationships","relationTo","row","json","JSON","parse","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,36 @@
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(req)) : docs[0];
17
34
  if (doc) {
18
35
  doc.globalType = slug;
19
36
  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 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,cAAcS,QAC3Da,IAAI,CAAC,EAAE;IAEX,IAAIM,KAAK;QACPA,IAAIC,UAAU,GAAGvB;QACjB,OAAOsB;IACT;IAEA,OAAO,CAAC;AACV,EAAC"}
@@ -1,7 +1,7 @@
1
- import { buildVersionGlobalFields } from 'payload';
1
+ import { buildVersionGlobalFields, resolveBranchGlobalVersionQuery } from 'payload';
2
2
  import toSnakeCase from 'to-snake-case';
3
3
  import { findMany } from './find/findMany.js';
4
- export const findGlobalVersions = async function findGlobalVersions({ global, limit, locale, page, pagination, req, select, sort: sortArg, where }) {
4
+ export const findGlobalVersions = async function findGlobalVersions({ branch, global, limit, locale, page, pagination, req, select, sort: sortArg, where }) {
5
5
  const globalConfig = this.payload.globals.config.find(({ slug })=>slug === global);
6
6
  const sort = sortArg !== undefined && sortArg !== null ? sortArg : '-createdAt';
7
7
  const tableName = this.tableNameMap.get(`_${toSnakeCase(globalConfig.slug)}${this.versionsSuffix}`);
@@ -17,7 +17,12 @@ export const findGlobalVersions = async function findGlobalVersions({ global, li
17
17
  select,
18
18
  sort,
19
19
  tableName,
20
- where
20
+ where: resolveBranchGlobalVersionQuery({
21
+ branch,
22
+ globalSlug: global,
23
+ req,
24
+ where
25
+ })
21
26
  });
22
27
  };
23
28
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/findGlobalVersions.ts"],"sourcesContent":["import type { FindGlobalVersions, SanitizedGlobalConfig } from 'payload'\n\nimport { buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const findGlobalVersions: FindGlobalVersions = async function findGlobalVersions(\n this: DrizzleAdapter,\n { global, limit, locale, page, pagination, req, select, sort: sortArg, where },\n) {\n const globalConfig: SanitizedGlobalConfig = this.payload.globals.config.find(\n ({ slug }) => slug === global,\n )\n const sort = sortArg !== undefined && sortArg !== null ? sortArg : '-createdAt'\n\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(globalConfig.slug)}${this.versionsSuffix}`,\n )\n\n const fields = buildVersionGlobalFields(this.payload.config, globalConfig, true)\n\n return findMany({\n adapter: this,\n fields,\n limit,\n locale,\n page,\n pagination,\n req,\n select,\n sort,\n tableName,\n where,\n })\n}\n"],"names":["buildVersionGlobalFields","toSnakeCase","findMany","findGlobalVersions","global","limit","locale","page","pagination","req","select","sort","sortArg","where","globalConfig","payload","globals","config","find","slug","undefined","tableName","tableNameMap","get","versionsSuffix","fields","adapter"],"mappings":"AAEA,SAASA,wBAAwB,QAAQ,UAAS;AAClD,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,qBAAyC,eAAeA,mBAEnE,EAAEC,MAAM,EAAEC,KAAK,EAAEC,MAAM,EAAEC,IAAI,EAAEC,UAAU,EAAEC,GAAG,EAAEC,MAAM,EAAEC,MAAMC,OAAO,EAAEC,KAAK,EAAE;IAE9E,MAAMC,eAAsC,IAAI,CAACC,OAAO,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAC1E,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASf;IAEzB,MAAMO,OAAOC,YAAYQ,aAAaR,YAAY,OAAOA,UAAU;IAEnE,MAAMS,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAEtB,YAAYa,aAAaK,IAAI,IAAI,IAAI,CAACK,cAAc,EAAE;IAG5D,MAAMC,SAASzB,yBAAyB,IAAI,CAACe,OAAO,CAACE,MAAM,EAAEH,cAAc;IAE3E,OAAOZ,SAAS;QACdwB,SAAS,IAAI;QACbD;QACApB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAU;QACAR;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../src/findGlobalVersions.ts"],"sourcesContent":["import type { FindGlobalVersions, SanitizedGlobalConfig } from 'payload'\n\nimport { buildVersionGlobalFields, resolveBranchGlobalVersionQuery } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport const findGlobalVersions: FindGlobalVersions = async function findGlobalVersions(\n this: DrizzleAdapter,\n { branch, global, limit, locale, page, pagination, req, select, sort: sortArg, where },\n) {\n const globalConfig: SanitizedGlobalConfig = this.payload.globals.config.find(\n ({ slug }) => slug === global,\n )\n const sort = sortArg !== undefined && sortArg !== null ? sortArg : '-createdAt'\n\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(globalConfig.slug)}${this.versionsSuffix}`,\n )\n\n const fields = buildVersionGlobalFields(this.payload.config, globalConfig, true)\n\n return findMany({\n adapter: this,\n fields,\n limit,\n locale,\n page,\n pagination,\n req,\n select,\n sort,\n tableName,\n where: resolveBranchGlobalVersionQuery({ branch, globalSlug: global, req, where }),\n })\n}\n"],"names":["buildVersionGlobalFields","resolveBranchGlobalVersionQuery","toSnakeCase","findMany","findGlobalVersions","branch","global","limit","locale","page","pagination","req","select","sort","sortArg","where","globalConfig","payload","globals","config","find","slug","undefined","tableName","tableNameMap","get","versionsSuffix","fields","adapter","globalSlug"],"mappings":"AAEA,SAASA,wBAAwB,EAAEC,+BAA+B,QAAQ,UAAS;AACnF,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,qBAAyC,eAAeA,mBAEnE,EAAEC,MAAM,EAAEC,MAAM,EAAEC,KAAK,EAAEC,MAAM,EAAEC,IAAI,EAAEC,UAAU,EAAEC,GAAG,EAAEC,MAAM,EAAEC,MAAMC,OAAO,EAAEC,KAAK,EAAE;IAEtF,MAAMC,eAAsC,IAAI,CAACC,OAAO,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAC1E,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASf;IAEzB,MAAMO,OAAOC,YAAYQ,aAAaR,YAAY,OAAOA,UAAU;IAEnE,MAAMS,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAEvB,YAAYc,aAAaK,IAAI,IAAI,IAAI,CAACK,cAAc,EAAE;IAG5D,MAAMC,SAAS3B,yBAAyB,IAAI,CAACiB,OAAO,CAACE,MAAM,EAAEH,cAAc;IAE3E,OAAOb,SAAS;QACdyB,SAAS,IAAI;QACbD;QACApB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAU;QACAR,OAAOd,gCAAgC;YAAEI;YAAQwB,YAAYvB;YAAQK;YAAKI;QAAM;IAClF;AACF,EAAC"}
package/dist/findOne.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  import type { FindOneArgs, TypeWithID } from 'payload';
2
2
  import type { DrizzleAdapter } from './types.js';
3
- export declare function findOne<T extends TypeWithID>(this: DrizzleAdapter, { collection, draftsEnabled, joins, locale, req, select, where }: FindOneArgs): Promise<null | T>;
3
+ export declare function findOne<T extends TypeWithID>(this: DrizzleAdapter, { branch, collection, draftsEnabled, joins, locale, req, select, where }: FindOneArgs): Promise<null | T>;
4
4
  //# sourceMappingURL=findOne.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"findOne.d.ts","sourceRoot":"","sources":["../src/findOne.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA6B,UAAU,EAAE,MAAM,SAAS,CAAA;AAIjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAIhD,wBAAsB,OAAO,CAAC,CAAC,SAAS,UAAU,EAChD,IAAI,EAAE,cAAc,EACpB,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,WAAW,GAC5E,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAuBnB"}
1
+ {"version":3,"file":"findOne.d.ts","sourceRoot":"","sources":["../src/findOne.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA6B,UAAU,EAAE,MAAM,SAAS,CAAA;AAWjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAIhD,wBAAsB,OAAO,CAAC,CAAC,SAAS,UAAU,EAChD,IAAI,EAAE,cAAc,EACpB,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,WAAW,GACpF,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAsCnB"}
package/dist/findOne.js CHANGED
@@ -1,10 +1,26 @@
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 async function findOne({ collection, draftsEnabled, joins, locale, req, select, where }) {
4
+ export async function findOne({ branch, collection, draftsEnabled, joins, locale, req, select, where }) {
4
5
  const collectionConfig = this.payload.collections[collection].config;
5
6
  const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug));
7
+ const branchReadState = resolveBranchReadState({
8
+ branch,
9
+ collectionSlug: collection,
10
+ req
11
+ });
12
+ const branchedWhere = branchReadState.useBranching ? rewriteBranchIDs(where) : await resolveBranchQuery({
13
+ branch,
14
+ collectionSlug: collection,
15
+ req,
16
+ where
17
+ });
6
18
  const { docs } = await findMany({
7
19
  adapter: this,
20
+ branchVisibility: branchReadState.useBranching ? {
21
+ branch: branchReadState.branch,
22
+ collectionSlug: collection
23
+ } : undefined,
8
24
  collectionSlug: collection,
9
25
  draftsEnabled,
10
26
  fields: collectionConfig.flattenedFields,
@@ -14,10 +30,21 @@ export async function findOne({ collection, draftsEnabled, joins, locale, req, s
14
30
  page: 1,
15
31
  pagination: false,
16
32
  req,
17
- select,
33
+ select: withBranchIDSelect({
34
+ branch,
35
+ collectionSlug: collection,
36
+ req,
37
+ select
38
+ }),
18
39
  sort: undefined,
19
40
  tableName,
20
- where
41
+ where: branchedWhere
42
+ });
43
+ applyBranchIDProjection({
44
+ branch,
45
+ collectionSlug: collection,
46
+ docs: docs,
47
+ req
21
48
  });
22
49
  return docs?.[0] || null;
23
50
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/findOne.ts"],"sourcesContent":["import type { FindOneArgs, SanitizedCollectionConfig, TypeWithID } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\n\nexport async function findOne<T extends TypeWithID>(\n this: DrizzleAdapter,\n { collection, draftsEnabled, joins, locale, req, select, where }: FindOneArgs,\n): Promise<null | T> {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n const { docs } = await findMany({\n adapter: this,\n collectionSlug: collection,\n draftsEnabled,\n fields: collectionConfig.flattenedFields,\n joins,\n limit: 1,\n locale,\n page: 1,\n pagination: false,\n req,\n select,\n sort: undefined,\n tableName,\n where,\n })\n\n return docs?.[0] || null\n}\n"],"names":["toSnakeCase","findMany","findOne","collection","draftsEnabled","joins","locale","req","select","where","collectionConfig","payload","collections","config","tableName","tableNameMap","get","slug","docs","adapter","collectionSlug","fields","flattenedFields","limit","page","pagination","sort","undefined"],"mappings":"AAEA,OAAOA,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,eAAeC,QAEpB,EAAEC,UAAU,EAAEC,aAAa,EAAEC,KAAK,EAAEC,MAAM,EAAEC,GAAG,EAAEC,MAAM,EAAEC,KAAK,EAAe;IAE7E,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACT,WAAW,CAACU,MAAM;IAE/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAAChB,YAAYU,iBAAiBO,IAAI;IAEzE,MAAM,EAAEC,IAAI,EAAE,GAAG,MAAMjB,SAAS;QAC9BkB,SAAS,IAAI;QACbC,gBAAgBjB;QAChBC;QACAiB,QAAQX,iBAAiBY,eAAe;QACxCjB;QACAkB,OAAO;QACPjB;QACAkB,MAAM;QACNC,YAAY;QACZlB;QACAC;QACAkB,MAAMC;QACNb;QACAL;IACF;IAEA,OAAOS,MAAM,CAAC,EAAE,IAAI;AACtB"}
1
+ {"version":3,"sources":["../src/findOne.ts"],"sourcesContent":["import type { FindOneArgs, SanitizedCollectionConfig, TypeWithID } from 'payload'\n\nimport {\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 async function findOne<T extends TypeWithID>(\n this: DrizzleAdapter,\n { branch, collection, draftsEnabled, joins, locale, req, select, where }: FindOneArgs,\n): Promise<null | T> {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n\n const tableName = this.tableNameMap.get(toSnakeCase(collectionConfig.slug))\n\n const branchReadState = resolveBranchReadState({ branch, collectionSlug: collection, req })\n const branchedWhere = branchReadState.useBranching\n ? rewriteBranchIDs(where)\n : await resolveBranchQuery({ branch, collectionSlug: collection, req, where })\n\n const { docs } = await findMany({\n adapter: this,\n branchVisibility: branchReadState.useBranching\n ? { branch: branchReadState.branch, collectionSlug: collection }\n : undefined,\n collectionSlug: collection,\n draftsEnabled,\n fields: collectionConfig.flattenedFields,\n joins,\n limit: 1,\n locale,\n page: 1,\n pagination: false,\n req,\n select: withBranchIDSelect({ branch, collectionSlug: collection, req, select }),\n sort: undefined,\n tableName,\n where: branchedWhere,\n })\n\n applyBranchIDProjection({\n branch,\n collectionSlug: collection,\n docs: docs as Record<string, unknown>[],\n req,\n })\n\n return docs?.[0] || null\n}\n"],"names":["applyBranchIDProjection","resolveBranchQuery","resolveBranchReadState","rewriteBranchIDs","withBranchIDSelect","toSnakeCase","findMany","findOne","branch","collection","draftsEnabled","joins","locale","req","select","where","collectionConfig","payload","collections","config","tableName","tableNameMap","get","slug","branchReadState","collectionSlug","branchedWhere","useBranching","docs","adapter","branchVisibility","undefined","fields","flattenedFields","limit","page","pagination","sort"],"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,eAAeC,QAEpB,EAAEC,MAAM,EAAEC,UAAU,EAAEC,aAAa,EAAEC,KAAK,EAAEC,MAAM,EAAEC,GAAG,EAAEC,MAAM,EAAEC,KAAK,EAAe;IAErF,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACT,WAAW,CAACU,MAAM;IAE/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACjB,YAAYW,iBAAiBO,IAAI;IAEzE,MAAMC,kBAAkBtB,uBAAuB;QAAEM;QAAQiB,gBAAgBhB;QAAYI;IAAI;IACzF,MAAMa,gBAAgBF,gBAAgBG,YAAY,GAC9CxB,iBAAiBY,SACjB,MAAMd,mBAAmB;QAAEO;QAAQiB,gBAAgBhB;QAAYI;QAAKE;IAAM;IAE9E,MAAM,EAAEa,IAAI,EAAE,GAAG,MAAMtB,SAAS;QAC9BuB,SAAS,IAAI;QACbC,kBAAkBN,gBAAgBG,YAAY,GAC1C;YAAEnB,QAAQgB,gBAAgBhB,MAAM;YAAEiB,gBAAgBhB;QAAW,IAC7DsB;QACJN,gBAAgBhB;QAChBC;QACAsB,QAAQhB,iBAAiBiB,eAAe;QACxCtB;QACAuB,OAAO;QACPtB;QACAuB,MAAM;QACNC,YAAY;QACZvB;QACAC,QAAQV,mBAAmB;YAAEI;YAAQiB,gBAAgBhB;YAAYI;YAAKC;QAAO;QAC7EuB,MAAMN;QACNX;QACAL,OAAOW;IACT;IAEA1B,wBAAwB;QACtBQ;QACAiB,gBAAgBhB;QAChBmB,MAAMA;QACNf;IACF;IAEA,OAAOe,MAAM,CAAC,EAAE,IAAI;AACtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"findVersions.d.ts","sourceRoot":"","sources":["../src/findVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAA6B,MAAM,SAAS,CAAA;AAStE,eAAO,MAAM,YAAY,EAAE,YA2B1B,CAAA"}
1
+ {"version":3,"file":"findVersions.d.ts","sourceRoot":"","sources":["../src/findVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAA6B,MAAM,SAAS,CAAA;AAgBtE,eAAO,MAAM,YAAY,EAAE,YAgD1B,CAAA"}
@@ -1,13 +1,29 @@
1
- import { buildVersionCollectionFields } from 'payload';
1
+ import { buildVersionCollectionFields, projectBranchVersionParents, resolveBranchReadState, resolveBranchVersionHistoryQuery, rewriteBranchVersionParents, withBranchVersionSelect } from 'payload';
2
2
  import toSnakeCase from 'to-snake-case';
3
3
  import { findMany } from './find/findMany.js';
4
- export const findVersions = async function findVersions({ collection, limit, locale, page, pagination, req, select, sort: sortArg, where }) {
4
+ export const findVersions = async function findVersions({ branch, collection, limit, locale, page, pagination, req, select, sort: sortArg, where }) {
5
5
  const collectionConfig = this.payload.collections[collection].config;
6
6
  const sort = sortArg !== undefined && sortArg !== null ? sortArg : collectionConfig.defaultSort;
7
7
  const tableName = this.tableNameMap.get(`_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`);
8
8
  const fields = buildVersionCollectionFields(this.payload.config, collectionConfig, true);
9
- return findMany({
9
+ const branchReadState = resolveBranchReadState({
10
+ branch,
11
+ collectionSlug: collection,
12
+ req
13
+ });
14
+ const branchedWhere = branchReadState.useBranching ? rewriteBranchVersionParents(where) : await resolveBranchVersionHistoryQuery({
15
+ branch,
16
+ collectionSlug: collection,
17
+ req,
18
+ where
19
+ });
20
+ const result = await findMany({
10
21
  adapter: this,
22
+ branchVisibility: branchReadState.useBranching ? {
23
+ branch: branchReadState.branch,
24
+ collectionSlug: collection,
25
+ mode: 'history'
26
+ } : undefined,
11
27
  fields,
12
28
  joins: false,
13
29
  limit,
@@ -15,11 +31,22 @@ export const findVersions = async function findVersions({ collection, limit, loc
15
31
  page,
16
32
  pagination,
17
33
  req,
18
- select,
34
+ select: withBranchVersionSelect({
35
+ branch,
36
+ collectionSlug: collection,
37
+ req,
38
+ select
39
+ }),
19
40
  sort,
20
41
  tableName,
21
- where
42
+ where: branchedWhere
22
43
  });
44
+ if (branchReadState.useBranching) {
45
+ // A branch version hangs off the shadow row, so its `parent` is that row rather
46
+ // than the document the history belongs to.
47
+ projectBranchVersionParents(result.docs);
48
+ }
49
+ return result;
23
50
  };
24
51
 
25
52
  //# sourceMappingURL=findVersions.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/findVersions.ts"],"sourcesContent":["import type { FindVersions, SanitizedCollectionConfig } from 'payload'\n\nimport { buildVersionCollectionFields } 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 findVersions: FindVersions = async function findVersions(\n this: DrizzleAdapter,\n { collection, limit, locale, page, pagination, req, select, sort: sortArg, where },\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(\n `_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`,\n )\n\n const fields = buildVersionCollectionFields(this.payload.config, collectionConfig, true)\n\n return findMany({\n adapter: this,\n fields,\n joins: false,\n limit,\n locale,\n page,\n pagination,\n req,\n select,\n sort,\n tableName,\n where,\n })\n}\n"],"names":["buildVersionCollectionFields","toSnakeCase","findMany","findVersions","collection","limit","locale","page","pagination","req","select","sort","sortArg","where","collectionConfig","payload","collections","config","undefined","defaultSort","tableName","tableNameMap","get","slug","versionsSuffix","fields","adapter","joins"],"mappings":"AAEA,SAASA,4BAA4B,QAAQ,UAAS;AACtD,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,eAA6B,eAAeA,aAEvD,EAAEC,UAAU,EAAEC,KAAK,EAAEC,MAAM,EAAEC,IAAI,EAAEC,UAAU,EAAEC,GAAG,EAAEC,MAAM,EAAEC,MAAMC,OAAO,EAAEC,KAAK,EAAE;IAElF,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACZ,WAAW,CAACa,MAAM;IAC/F,MAAMN,OAAOC,YAAYM,aAAaN,YAAY,OAAOA,UAAUE,iBAAiBK,WAAW;IAE/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAErB,YAAYa,iBAAiBS,IAAI,IAAI,IAAI,CAACC,cAAc,EAAE;IAGhE,MAAMC,SAASzB,6BAA6B,IAAI,CAACe,OAAO,CAACE,MAAM,EAAEH,kBAAkB;IAEnF,OAAOZ,SAAS;QACdwB,SAAS,IAAI;QACbD;QACAE,OAAO;QACPtB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAS;QACAP;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../src/findVersions.ts"],"sourcesContent":["import type { FindVersions, SanitizedCollectionConfig } from 'payload'\n\nimport {\n buildVersionCollectionFields,\n projectBranchVersionParents,\n resolveBranchReadState,\n resolveBranchVersionHistoryQuery,\n rewriteBranchVersionParents,\n withBranchVersionSelect,\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 findVersions: FindVersions = async function findVersions(\n this: DrizzleAdapter,\n { branch, collection, limit, locale, page, pagination, req, select, sort: sortArg, where },\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(\n `_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`,\n )\n\n const fields = buildVersionCollectionFields(this.payload.config, collectionConfig, true)\n\n const branchReadState = resolveBranchReadState({ branch, collectionSlug: collection, req })\n const branchedWhere = branchReadState.useBranching\n ? rewriteBranchVersionParents(where)\n : await resolveBranchVersionHistoryQuery({\n branch,\n collectionSlug: collection,\n req,\n where,\n })\n\n const result = await findMany({\n adapter: this,\n branchVisibility: branchReadState.useBranching\n ? { branch: branchReadState.branch, collectionSlug: collection, mode: 'history' }\n : undefined,\n fields,\n joins: false,\n limit,\n locale,\n page,\n pagination,\n req,\n select: withBranchVersionSelect({ branch, collectionSlug: collection, req, select }),\n sort,\n tableName,\n where: branchedWhere,\n })\n\n if (branchReadState.useBranching) {\n // A branch version hangs off the shadow row, so its `parent` is that row rather\n // than the document the history belongs to.\n projectBranchVersionParents(result.docs as Record<string, unknown>[])\n }\n\n return result\n}\n"],"names":["buildVersionCollectionFields","projectBranchVersionParents","resolveBranchReadState","resolveBranchVersionHistoryQuery","rewriteBranchVersionParents","withBranchVersionSelect","toSnakeCase","findMany","findVersions","branch","collection","limit","locale","page","pagination","req","select","sort","sortArg","where","collectionConfig","payload","collections","config","undefined","defaultSort","tableName","tableNameMap","get","slug","versionsSuffix","fields","branchReadState","collectionSlug","branchedWhere","useBranching","result","adapter","branchVisibility","mode","joins","docs"],"mappings":"AAEA,SACEA,4BAA4B,EAC5BC,2BAA2B,EAC3BC,sBAAsB,EACtBC,gCAAgC,EAChCC,2BAA2B,EAC3BC,uBAAuB,QAClB,UAAS;AAChB,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,eAA6B,eAAeA,aAEvD,EAAEC,MAAM,EAAEC,UAAU,EAAEC,KAAK,EAAEC,MAAM,EAAEC,IAAI,EAAEC,UAAU,EAAEC,GAAG,EAAEC,MAAM,EAAEC,MAAMC,OAAO,EAAEC,KAAK,EAAE;IAE1F,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACZ,WAAW,CAACa,MAAM;IAC/F,MAAMN,OAAOC,YAAYM,aAAaN,YAAY,OAAOA,UAAUE,iBAAiBK,WAAW;IAE/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAEtB,YAAYc,iBAAiBS,IAAI,IAAI,IAAI,CAACC,cAAc,EAAE;IAGhE,MAAMC,SAAS/B,6BAA6B,IAAI,CAACqB,OAAO,CAACE,MAAM,EAAEH,kBAAkB;IAEnF,MAAMY,kBAAkB9B,uBAAuB;QAAEO;QAAQwB,gBAAgBvB;QAAYK;IAAI;IACzF,MAAMmB,gBAAgBF,gBAAgBG,YAAY,GAC9C/B,4BAA4Be,SAC5B,MAAMhB,iCAAiC;QACrCM;QACAwB,gBAAgBvB;QAChBK;QACAI;IACF;IAEJ,MAAMiB,SAAS,MAAM7B,SAAS;QAC5B8B,SAAS,IAAI;QACbC,kBAAkBN,gBAAgBG,YAAY,GAC1C;YAAE1B,QAAQuB,gBAAgBvB,MAAM;YAAEwB,gBAAgBvB;YAAY6B,MAAM;QAAU,IAC9Ef;QACJO;QACAS,OAAO;QACP7B;QACAC;QACAC;QACAC;QACAC;QACAC,QAAQX,wBAAwB;YAAEI;YAAQwB,gBAAgBvB;YAAYK;YAAKC;QAAO;QAClFC;QACAS;QACAP,OAAOe;IACT;IAEA,IAAIF,gBAAgBG,YAAY,EAAE;QAChC,gFAAgF;QAChF,4CAA4C;QAC5ClC,4BAA4BmC,OAAOK,IAAI;IACzC;IAEA,OAAOL;AACT,EAAC"}
package/dist/index.d.ts CHANGED
@@ -6,6 +6,7 @@ export { createGlobal } from './createGlobal.js';
6
6
  export { createGlobalVersion } from './createGlobalVersion.js';
7
7
  export { createTableName } from './createTableName.js';
8
8
  export { createVersion } from './createVersion.js';
9
+ export { deleteBranchGlobal } from './deleteBranchGlobal.js';
9
10
  export { deleteMany } from './deleteMany.js';
10
11
  export { deleteOne } from './deleteOne.js';
11
12
  export { deleteVersions } from './deleteVersions.js';
@@ -24,15 +25,16 @@ export { migrateReset } from './migrateReset.js';
24
25
  export { migrateStatus } from './migrateStatus.js';
25
26
  export { buildQuery } from './queries/buildQuery.js';
26
27
  export { operatorMap } from './queries/operatorMap.js';
27
- export type { Operators } from './queries/operatorMap.js';
28
+ export type { DrizzleResolvedOperator, Operators } from './queries/operatorMap.js';
28
29
  export { parseParams } from './queries/parseParams.js';
30
+ export { validateOperatorHandlers } from './queries/validateOperatorHandlers.js';
29
31
  export { queryDrafts } from './queryDrafts.js';
30
32
  export { buildDrizzleRelations } from './schema/buildDrizzleRelations.js';
31
33
  export { buildRawSchema } from './schema/buildRawSchema.js';
32
34
  export { beginTransaction } from './transactions/beginTransaction.js';
33
35
  export { commitTransaction } from './transactions/commitTransaction.js';
34
36
  export { rollbackTransaction } from './transactions/rollbackTransaction.js';
35
- export type { BaseRawColumn, BlocksToJsonMigrator, BuildDrizzleTable, BuildQueryJoinAliases, ColumnToCodeConverter, CountDistinct, CreateJSONQueryArgs, DeleteWhere, DrizzleAdapter, DrizzleTransaction, DropDatabase, EnumRawColumn, Execute, GenericColumn, GenericColumns, GenericPgColumn, GenericRelation, GenericTable, IDType, Insert, IntegerRawColumn, Migration, PostgresDB, RawColumn, RawForeignKey, RawIndex, RawRelation, RawTable, RelationMap, RequireDrizzleKit, SetColumnID, SQLiteDB, TimestampRawColumn, TransactionPg, TransactionSQLite, UUIDRawColumn, VectorRawColumn, } from './types.js';
37
+ export type { BaseRawColumn, BlocksToJsonMigrator, BuildDrizzleTable, BuildQueryJoinAliases, ColumnToCodeConverter, CountDistinct, CreateJSONQueryArgs, DeleteWhere, DrizzleAdapter, DrizzleOperandTransformHandler, DrizzleOperatorHandler, DrizzleOperatorHandlerContext, DrizzleOperatorReplacementHandler, DrizzleQueryConfig, DrizzleTransaction, DropDatabase, EnumRawColumn, Execute, GenericColumn, GenericColumns, GenericPgColumn, GenericRelation, GenericTable, IDType, Insert, IntegerRawColumn, Migration, PostgresDB, RawColumn, RawForeignKey, RawIndex, RawRelation, RawTable, RelationMap, RequireDrizzleKit, SetColumnID, SQLiteDB, TimestampRawColumn, TransactionPg, TransactionSQLite, UUIDRawColumn, VectorRawColumn, } from './types.js';
36
38
  export { updateGlobal } from './updateGlobal.js';
37
39
  export { updateGlobalVersion } from './updateGlobalVersion.js';
38
40
  export { updateJobs } from './updateJobs.js';
@@ -40,9 +42,11 @@ export { updateMany } from './updateMany.js';
40
42
  export { updateOne } from './updateOne.js';
41
43
  export { updateVersion } from './updateVersion.js';
42
44
  export { upsert } from './upsert.js';
45
+ export { upsertBranchGlobalChange } from './upsertBranchGlobalChange.js';
43
46
  export { upsertRow } from './upsertRow/index.js';
44
47
  export { buildDynamicPredefinedBlocksToJsonMigration, createBlocksToJsonMigrator, getBlocksToJsonMigrator, } from './utilities/blocksToJsonMigrator.js';
45
48
  export { buildCreateMigration } from './utilities/buildCreateMigration.js';
49
+ export { buildDynamicPredefinedSizesToVariantsMigration } from './utilities/buildDynamicPredefinedSizesToVariantsMigration.js';
46
50
  export { buildIndexName } from './utilities/buildIndexName.js';
47
51
  export { createSchemaGenerator } from './utilities/createSchemaGenerator.js';
48
52
  export { executeSchemaHooks } from './utilities/executeSchemaHooks.js';