@payloadcms/drizzle 4.0.0-internal.a1317b2 → 4.0.0-internal.a5acc33

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 (262) 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/countGlobalVersions.js +8 -3
  5. package/dist/countGlobalVersions.js.map +1 -1
  6. package/dist/countVersions.d.ts.map +1 -1
  7. package/dist/countVersions.js +29 -4
  8. package/dist/countVersions.js.map +1 -1
  9. package/dist/createGlobalVersion.d.ts.map +1 -1
  10. package/dist/createGlobalVersion.js +17 -2
  11. package/dist/createGlobalVersion.js.map +1 -1
  12. package/dist/createVersion.d.ts.map +1 -1
  13. package/dist/createVersion.js +12 -1
  14. package/dist/createVersion.js.map +1 -1
  15. package/dist/deleteBranchGlobal.d.ts +10 -0
  16. package/dist/deleteBranchGlobal.d.ts.map +1 -0
  17. package/dist/deleteBranchGlobal.js +27 -0
  18. package/dist/deleteBranchGlobal.js.map +1 -0
  19. package/dist/deleteOne.d.ts.map +1 -1
  20. package/dist/deleteOne.js +25 -1
  21. package/dist/deleteOne.js.map +1 -1
  22. package/dist/exports/postgres.d.ts +2 -1
  23. package/dist/exports/postgres.d.ts.map +1 -1
  24. package/dist/exports/postgres.js +2 -1
  25. package/dist/exports/postgres.js.map +1 -1
  26. package/dist/exports/sqlite.d.ts +2 -1
  27. package/dist/exports/sqlite.d.ts.map +1 -1
  28. package/dist/exports/sqlite.js +2 -1
  29. package/dist/exports/sqlite.js.map +1 -1
  30. package/dist/find/buildFindManyArgs.d.ts +3 -2
  31. package/dist/find/buildFindManyArgs.d.ts.map +1 -1
  32. package/dist/find/buildFindManyArgs.js +2 -1
  33. package/dist/find/buildFindManyArgs.js.map +1 -1
  34. package/dist/find/buildPolymorphicJoinQuery.d.ts +40 -0
  35. package/dist/find/buildPolymorphicJoinQuery.d.ts.map +1 -0
  36. package/dist/find/buildPolymorphicJoinQuery.js +163 -0
  37. package/dist/find/buildPolymorphicJoinQuery.js.map +1 -0
  38. package/dist/find/buildPolymorphicJoinWhere.d.ts +20 -0
  39. package/dist/find/buildPolymorphicJoinWhere.d.ts.map +1 -0
  40. package/dist/find/buildPolymorphicJoinWhere.js +301 -0
  41. package/dist/find/buildPolymorphicJoinWhere.js.map +1 -0
  42. package/dist/find/createPolymorphicJoinWherePlan.d.ts +38 -0
  43. package/dist/find/createPolymorphicJoinWherePlan.d.ts.map +1 -0
  44. package/dist/find/createPolymorphicJoinWherePlan.js +200 -0
  45. package/dist/find/createPolymorphicJoinWherePlan.js.map +1 -0
  46. package/dist/find/findMany.d.ts +6 -1
  47. package/dist/find/findMany.d.ts.map +1 -1
  48. package/dist/find/findMany.js +16 -3
  49. package/dist/find/findMany.js.map +1 -1
  50. package/dist/find/traverseFields.d.ts +3 -2
  51. package/dist/find/traverseFields.d.ts.map +1 -1
  52. package/dist/find/traverseFields.js +82 -198
  53. package/dist/find/traverseFields.js.map +1 -1
  54. package/dist/find.d.ts.map +1 -1
  55. package/dist/find.js +32 -4
  56. package/dist/find.js.map +1 -1
  57. package/dist/findDistinct.d.ts.map +1 -1
  58. package/dist/findDistinct.js +104 -8
  59. package/dist/findDistinct.js.map +1 -1
  60. package/dist/findGlobal.d.ts.map +1 -1
  61. package/dist/findGlobal.js +24 -5
  62. package/dist/findGlobal.js.map +1 -1
  63. package/dist/findGlobalVersions.js +8 -3
  64. package/dist/findGlobalVersions.js.map +1 -1
  65. package/dist/findOne.d.ts +1 -1
  66. package/dist/findOne.d.ts.map +1 -1
  67. package/dist/findOne.js +30 -3
  68. package/dist/findOne.js.map +1 -1
  69. package/dist/findVersions.d.ts.map +1 -1
  70. package/dist/findVersions.js +32 -5
  71. package/dist/findVersions.js.map +1 -1
  72. package/dist/index.d.ts +3 -8
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +3 -8
  75. package/dist/index.js.map +1 -1
  76. package/dist/migrate.d.ts.map +1 -1
  77. package/dist/migrate.js +6 -2
  78. package/dist/migrate.js.map +1 -1
  79. package/dist/migrateDown.d.ts.map +1 -1
  80. package/dist/migrateDown.js +5 -2
  81. package/dist/migrateDown.js.map +1 -1
  82. package/dist/migrateFresh.d.ts.map +1 -1
  83. package/dist/migrateFresh.js +5 -2
  84. package/dist/migrateFresh.js.map +1 -1
  85. package/dist/migrateRefresh.d.ts.map +1 -1
  86. package/dist/migrateRefresh.js +6 -2
  87. package/dist/migrateRefresh.js.map +1 -1
  88. package/dist/migrateReset.d.ts.map +1 -1
  89. package/dist/migrateReset.js +6 -2
  90. package/dist/migrateReset.js.map +1 -1
  91. package/dist/postgres/createJSONQuery/index.js +3 -3
  92. package/dist/postgres/createJSONQuery/index.js.map +1 -1
  93. package/dist/postgres/insert.d.ts.map +1 -1
  94. package/dist/postgres/insert.js +4 -2
  95. package/dist/postgres/insert.js.map +1 -1
  96. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.d.ts +35 -0
  97. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.d.ts.map +1 -0
  98. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.js +185 -0
  99. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.js.map +1 -0
  100. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts.map +1 -1
  101. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js +8 -4
  102. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js.map +1 -1
  103. package/dist/postgres/predefinedMigrations/v2-v3/index.js +1 -1
  104. package/dist/postgres/predefinedMigrations/v2-v3/index.js.map +1 -1
  105. package/dist/postgres/requireDrizzleKit.d.ts +4 -0
  106. package/dist/postgres/requireDrizzleKit.d.ts.map +1 -1
  107. package/dist/postgres/requireDrizzleKit.js +16 -10
  108. package/dist/postgres/requireDrizzleKit.js.map +1 -1
  109. package/dist/postgres/types.d.ts +4 -0
  110. package/dist/postgres/types.d.ts.map +1 -1
  111. package/dist/postgres/types.js.map +1 -1
  112. package/dist/queries/buildAndOrConditions.d.ts +3 -2
  113. package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
  114. package/dist/queries/buildAndOrConditions.js +2 -1
  115. package/dist/queries/buildAndOrConditions.js.map +1 -1
  116. package/dist/queries/buildBranchVisibility.d.ts +11 -0
  117. package/dist/queries/buildBranchVisibility.d.ts.map +1 -0
  118. package/dist/queries/buildBranchVisibility.js +48 -0
  119. package/dist/queries/buildBranchVisibility.js.map +1 -0
  120. package/dist/queries/buildOrderBy.d.ts +3 -2
  121. package/dist/queries/buildOrderBy.d.ts.map +1 -1
  122. package/dist/queries/buildOrderBy.js +2 -1
  123. package/dist/queries/buildOrderBy.js.map +1 -1
  124. package/dist/queries/buildQuery.d.ts +3 -2
  125. package/dist/queries/buildQuery.d.ts.map +1 -1
  126. package/dist/queries/buildQuery.js +4 -2
  127. package/dist/queries/buildQuery.js.map +1 -1
  128. package/dist/queries/getTableColumnFromPath.d.ts +3 -2
  129. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  130. package/dist/queries/getTableColumnFromPath.js +176 -29
  131. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  132. package/dist/queries/parseParams.d.ts +3 -2
  133. package/dist/queries/parseParams.d.ts.map +1 -1
  134. package/dist/queries/parseParams.js +63 -3
  135. package/dist/queries/parseParams.js.map +1 -1
  136. package/dist/queryDrafts.d.ts.map +1 -1
  137. package/dist/queryDrafts.js +27 -5
  138. package/dist/queryDrafts.js.map +1 -1
  139. package/dist/schema/build.d.ts.map +1 -1
  140. package/dist/schema/build.js +28 -20
  141. package/dist/schema/build.js.map +1 -1
  142. package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js +3 -2
  143. package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js.map +1 -1
  144. package/dist/sqlite/createJSONQuery/index.d.ts.map +1 -1
  145. package/dist/sqlite/createJSONQuery/index.js +6 -5
  146. package/dist/sqlite/createJSONQuery/index.js.map +1 -1
  147. package/dist/sqlite/createRequireDrizzleKit.d.ts +6 -0
  148. package/dist/sqlite/createRequireDrizzleKit.d.ts.map +1 -0
  149. package/dist/sqlite/createRequireDrizzleKit.js +15 -0
  150. package/dist/sqlite/createRequireDrizzleKit.js.map +1 -0
  151. package/dist/sqlite/execute.js.map +1 -1
  152. package/dist/sqlite/insert.d.ts.map +1 -1
  153. package/dist/sqlite/insert.js +9 -4
  154. package/dist/sqlite/insert.js.map +1 -1
  155. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.d.ts +15 -0
  156. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.d.ts.map +1 -0
  157. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.js +114 -0
  158. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.js.map +1 -0
  159. package/dist/sqlite/types.d.ts +4 -0
  160. package/dist/sqlite/types.d.ts.map +1 -1
  161. package/dist/sqlite/types.js.map +1 -1
  162. package/dist/transactions/beginTransaction.d.ts.map +1 -1
  163. package/dist/transactions/beginTransaction.js +13 -5
  164. package/dist/transactions/beginTransaction.js.map +1 -1
  165. package/dist/transactions/commitTransaction.d.ts.map +1 -1
  166. package/dist/transactions/commitTransaction.js +2 -5
  167. package/dist/transactions/commitTransaction.js.map +1 -1
  168. package/dist/transform/read/traverseFields.js.map +1 -1
  169. package/dist/transform/write/array.d.ts +3 -2
  170. package/dist/transform/write/array.d.ts.map +1 -1
  171. package/dist/transform/write/array.js +2 -1
  172. package/dist/transform/write/array.js.map +1 -1
  173. package/dist/transform/write/blocks.d.ts +3 -2
  174. package/dist/transform/write/blocks.d.ts.map +1 -1
  175. package/dist/transform/write/blocks.js +2 -1
  176. package/dist/transform/write/blocks.js.map +1 -1
  177. package/dist/transform/write/index.d.ts.map +1 -1
  178. package/dist/transform/write/index.js +2 -0
  179. package/dist/transform/write/index.js.map +1 -1
  180. package/dist/transform/write/traverseFields.d.ts +2 -1
  181. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  182. package/dist/transform/write/traverseFields.js +51 -21
  183. package/dist/transform/write/traverseFields.js.map +1 -1
  184. package/dist/transform/write/types.d.ts +7 -0
  185. package/dist/transform/write/types.d.ts.map +1 -1
  186. package/dist/transform/write/types.js.map +1 -1
  187. package/dist/types.d.ts +3 -2
  188. package/dist/types.d.ts.map +1 -1
  189. package/dist/types.js.map +1 -1
  190. package/dist/updateGlobal.d.ts +5 -1
  191. package/dist/updateGlobal.d.ts.map +1 -1
  192. package/dist/updateGlobal.js +96 -4
  193. package/dist/updateGlobal.js.map +1 -1
  194. package/dist/updateOne.d.ts.map +1 -1
  195. package/dist/updateOne.js +93 -4
  196. package/dist/updateOne.js.map +1 -1
  197. package/dist/upsertBranchGlobalChange.d.ts +3 -0
  198. package/dist/upsertBranchGlobalChange.d.ts.map +1 -0
  199. package/dist/upsertBranchGlobalChange.js +35 -0
  200. package/dist/upsertBranchGlobalChange.js.map +1 -0
  201. package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -1
  202. package/dist/upsertRow/deleteExistingRowsByPath.js +17 -12
  203. package/dist/upsertRow/deleteExistingRowsByPath.js.map +1 -1
  204. package/dist/upsertRow/index.d.ts +1 -1
  205. package/dist/upsertRow/index.d.ts.map +1 -1
  206. package/dist/upsertRow/index.js +156 -46
  207. package/dist/upsertRow/index.js.map +1 -1
  208. package/dist/upsertRow/types.d.ts +3 -0
  209. package/dist/upsertRow/types.d.ts.map +1 -1
  210. package/dist/upsertRow/types.js.map +1 -1
  211. package/dist/utilities/blocksToJsonMigrator.d.ts.map +1 -1
  212. package/dist/utilities/blocksToJsonMigrator.js +7 -18
  213. package/dist/utilities/blocksToJsonMigrator.js.map +1 -1
  214. package/dist/utilities/buildCreateMigration.js +1 -1
  215. package/dist/utilities/buildCreateMigration.js.map +1 -1
  216. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.d.ts +15 -0
  217. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.d.ts.map +1 -0
  218. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js +110 -0
  219. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js.map +1 -0
  220. package/dist/utilities/createSchemaGenerator.d.ts.map +1 -1
  221. package/dist/utilities/createSchemaGenerator.js +7 -12
  222. package/dist/utilities/createSchemaGenerator.js.map +1 -1
  223. package/dist/utilities/executeSchemaHooks.js +1 -1
  224. package/dist/utilities/executeSchemaHooks.js.map +1 -1
  225. package/dist/utilities/formatGeneratedFile.d.ts +10 -0
  226. package/dist/utilities/formatGeneratedFile.d.ts.map +1 -0
  227. package/dist/utilities/formatGeneratedFile.js +58 -0
  228. package/dist/utilities/formatGeneratedFile.js.map +1 -0
  229. package/dist/utilities/getSizesToVariantsRenames.d.ts +54 -0
  230. package/dist/utilities/getSizesToVariantsRenames.d.ts.map +1 -0
  231. package/dist/utilities/getSizesToVariantsRenames.js +251 -0
  232. package/dist/utilities/getSizesToVariantsRenames.js.map +1 -0
  233. package/dist/utilities/getTransaction.js.map +1 -1
  234. package/dist/utilities/parseJSONPathSegment.d.ts +9 -0
  235. package/dist/utilities/parseJSONPathSegment.d.ts.map +1 -0
  236. package/dist/utilities/parseJSONPathSegment.js +17 -0
  237. package/dist/utilities/parseJSONPathSegment.js.map +1 -0
  238. package/dist/utilities/pushDevSchema.js +1 -1
  239. package/dist/utilities/pushDevSchema.js.map +1 -1
  240. package/package.json +17 -19
  241. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.spec.js +0 -91
  242. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.spec.js.map +0 -1
  243. package/dist/postgres/query/postgresUnaccent.spec.js +0 -71
  244. package/dist/postgres/query/postgresUnaccent.spec.js.map +0 -1
  245. package/dist/queries/buildOperatorConstraint.spec.js +0 -348
  246. package/dist/queries/buildOperatorConstraint.spec.js.map +0 -1
  247. package/dist/queries/validateOperatorHandlers.spec.js +0 -142
  248. package/dist/queries/validateOperatorHandlers.spec.js.map +0 -1
  249. package/dist/schema/buildRawSchema.spec.js +0 -290
  250. package/dist/schema/buildRawSchema.spec.js.map +0 -1
  251. package/dist/sqlite/requireDrizzleKit.d.ts +0 -3
  252. package/dist/sqlite/requireDrizzleKit.d.ts.map +0 -1
  253. package/dist/sqlite/requireDrizzleKit.js +0 -12
  254. package/dist/sqlite/requireDrizzleKit.js.map +0 -1
  255. package/dist/upsertRow/handleUpsertError.spec.js +0 -42
  256. package/dist/upsertRow/handleUpsertError.spec.js.map +0 -1
  257. package/dist/utilities/checkTruncatedIdentifiers.spec.js +0 -301
  258. package/dist/utilities/checkTruncatedIdentifiers.spec.js.map +0 -1
  259. package/dist/utilities/isValidStringID.spec.js +0 -15
  260. package/dist/utilities/isValidStringID.spec.js.map +0 -1
  261. package/dist/utilities/validateIdentifierLength.spec.js +0 -19
  262. package/dist/utilities/validateIdentifierLength.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":"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":"AAGA,SAASA,GAAG,EAAEC,GAAG,EAAEC,IAAI,EAAEC,GAAG,EAAEC,GAAG,QAAQ,cAAa;AACtD,SAEEC,cAAc,EACdC,iBAAiB,EACjBC,gBAAgB,EAChBC,kBAAkB,EAClBC,sBAAsB,EACtBC,gBAAgB,QAGX,UAAS;AAChB,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,qBAAqB,QAAQ,qCAAoC;AAC1E,SAASC,UAAU,QAAQ,0BAAyB;AACpD,SAASC,cAAc,QAAQ,8BAA6B;AAC5D,SAASC,cAAc,QAAQ,gCAA+B;AAC9D,SAASC,cAAc,QAAQ,+BAA8B;AAE7D,MAAMC,mBAAmB,CAAC,EAAEC,MAAM,EAAEC,KAAK,EAAoC;IAC3E,MAAMC,gBAAuB,CAAC;IAE9B,KAAK,MAAM,CAACC,KAAKC,MAAM,IAAIC,OAAOC,OAAO,CAACL,OAAQ;QAChD,IAAI;YAAC;YAAO;SAAK,CAACM,QAAQ,CAACJ,IAAIK,WAAW,OAAOC,MAAMC,OAAO,CAACN,QAAQ;YACrEF,aAAa,CAACC,IAAI,GAAGC,MAAMO,GAAG,CAAC,CAACC,cAC9Bb,iBAAiB;oBAAEC;oBAAQC,OAAOW;gBAAY;QAElD,OAAO;YACLV,aAAa,CAAC,GAAGF,OAAO,CAAC,EAAEG,KAAK,CAAC,GAAGC;QACtC;IACF;IAEA,OAAOF;AACT;AAEA,MAAMW,iBAAiB,CACrBC,SACAC,cACAC;IAEA,IAAIF,QAAQG,MAAM,KAAK,GAAG;QACxB,OAAO;IACT;IAEA,IAAIH,OAAO,CAAC,EAAE,CAACI,MAAM,KAAKH,YAAY,CAAC,YAAY,EAAE;QACnD,OAAO;IACT;IAEA,IAAIC,MAAMC,MAAM,GAAG,GAAG;QACpB,OAAOH,OAAO,CAAC,EAAE,CAACI,MAAM;IAC1B;IAEA,OAAOjC,IAAI6B,OAAO,CAAC,EAAE,EAAEI,QAAQC,EAAE,CAAC;AACpC;AAEA,OAAO,MAAMC,eAA6B,eAAsCC,IAAI;IAClF,MAAMC,mBACJ,IAAI,CAACC,OAAO,CAACC,WAAW,CAACH,KAAKI,UAAU,CAAC,CAACC,MAAM;IAClD,MAAMC,OAAON,KAAKM,IAAI,IAAI;IAC1B,MAAMC,SAASP,KAAKQ,KAAK,GAAG,AAACF,CAAAA,OAAO,CAAA,IAAKN,KAAKQ,KAAK,GAAGC;IACtD,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACxC,YAAY6B,iBAAiBY,IAAI;IAEzE,mFAAmF;IACnF,MAAMC,kBAAkB5C,uBAAuB;QAC7C6C,QAAQf,KAAKe,MAAM;QACnBC,gBAAgBhB,KAAKI,UAAU;QAC/Ba,KAAKjB,KAAKiB,GAAG;IACf;IACA,MAAMC,oBAAoBJ,gBAAgBK,YAAY,GAClDhD,iBAAiB6B,KAAKpB,KAAK,IAC3B,MAAMX,mBAAmB;QACvB8C,QAAQf,KAAKe,MAAM;QACnBC,gBAAgBhB,KAAKI,UAAU;QAC/Ba,KAAKjB,KAAKiB,GAAG;QACbrC,OAAOoB,KAAKpB,KAAK;IACnB;IAEJ,MAAMwC,2BAAoC,EAAE;IAC5C,MAAMC,aAAatD,kBAAkB;QACnCiD,gBAAgBhB,KAAKI,UAAU;QAC/BkB,QAAQrB,iBAAiBsB,eAAe;QACxCC,cAAcxB,KAAKyB,KAAK;QACxBC,QAAQ1B,KAAK0B,MAAM;QACnBC,gBAAgB;QAChBzB,SAAS,IAAI,CAACA,OAAO;IACvB;IAEA,IAAK,IAAI0B,YAAY,GAAGA,YAAYP,WAAWzB,MAAM,EAAEgC,YAAa;QAClE,MAAMC,wBAAwBR,UAAU,CAACO,UAAU,EAAEZ;QAErD,IAAI,CAACa,uBAAuB;YAC1B;QACF;QAEA,MAAMC,mBAAmBT,WACtBU,KAAK,CAAC,GAAGH,WACTtC,GAAG,CAAC,CAAC,EAAE0C,IAAI,EAAE,GAAKA,MAClBC,IAAI,CAAC;QACR,MAAMC,yBAAyBhE,uBAAuB;YACpD6C,QAAQf,KAAKe,MAAM;YACnBC,gBAAgBa;YAChBZ,KAAKjB,KAAKiB,GAAG;QACf;QACA,MAAMkB,eAAeD,uBAAuBf,YAAY,GACpDhD,iBAAiB6B,KAAKoC,aAAa,EAAE,CAACN,iBAAiB,IACvD,MAAM7D,mBAAmB;YACvB8C,QAAQf,KAAKe,MAAM;YACnBC,gBAAgBa;YAChBZ,KAAKjB,KAAKiB,GAAG;YACbrC,OAAOoB,KAAKoC,aAAa,EAAE,CAACN,iBAAiB;QAC/C;QAEJ,IAAIK,gBAAgBnD,OAAOqD,IAAI,CAACF,cAAcvC,MAAM,EAAE;YACpDwB,yBAAyBkB,IAAI,CAC3B5D,iBAAiB;gBAAEC,QAAQmD;gBAAkBlD,OAAOuD;YAAa;QAErE;IACF;IAEA,MAAMI,WACJvC,KAAKiB,GAAG,IAAIjB,KAAKe,MAAM,KAAKN,YACxB;QACE,GAAGT,KAAKiB,GAAG;QACXF,QAAQf,KAAKe,MAAM,KAAK,QAAQf,KAAKiB,GAAG,CAACF,MAAM,GAAGf,KAAKe,MAAM;QAC7DyB,SAAS;YACP,GAAGxC,KAAKiB,GAAG,CAACuB,OAAO;YACnB,GAAIxC,KAAKe,MAAM,KAAK,QAAQ;gBAAE0B,eAAe;YAAK,IAAI,CAAC,CAAC;QAC1D;IACF,IACAzC,KAAKiB,GAAG;IAEd,IAAIsB,YAAYA,aAAavC,KAAKiB,GAAG,EAAE;QACrCjD,iBAAiB;YAAEiD,KAAKsB;QAA2B;IACrD;IAEA,MAAM,EACJ5C,KAAK,EACLF,OAAO,EACPC,YAAY,EACZd,OAAO8D,UAAU,EAClB,GAAGpE,WAAW;QACbqE,SAAS,IAAI;QACbrB,QAAQrB,iBAAiBsB,eAAe;QACxCG,QAAQ1B,KAAK0B,MAAM;QACnBT,KAAKsB;QACLK,MAAM5C,KAAK4C,IAAI,IAAI5C,KAAKyB,KAAK;QAC7Bf;QACA9B,OAAO;YACLnB,KAAK;gBACH;oBACE,CAACuC,KAAKyB,KAAK,CAAC,EAAE;wBACZoB,QAAQpE;oBACV;gBACF;gBACAyC,qBAAqB,CAAC;mBACnBE;aACJ;QACH;IACF;IAEA3B,QAAQqD,GAAG;IACX,MAAMC,QAAQ,IAAI,CAACC,MAAM,CAACtC,UAAU;IACpC,MAAMuC,wBACJnC,gBAAgBK,YAAY,IAAInB,KAAKyB,KAAK,KAAK,OAC3C5D,GAAG,CAAC,SAAS,EAAEkF,MAAMG,YAAY,CAAC,EAAE,EAAEH,MAAMI,EAAE,CAAC,CAAC,CAAC,GACjD1C;IAEN,IAAIwC,uBAAuB;QACzBvD,YAAY,CAAC,YAAY,GAAGuD,sBAAsBnD,EAAE,CAAC;IACvD;IAEA,MAAMsD,wBAAwBtC,gBAAgBK,YAAY,GACtD9C,sBAAsB;QACpBsE,SAAS,IAAI;QACb5B,QAAQD,gBAAgBC,MAAM;QAC9BC,gBAAgBhB,KAAKI,UAAU;QAC/B2C;IACF,KACAtC;IACJ,MAAM7B,QAAQnB,IAAIiF,YAAYU;IAE9B,MAAMC,KAAK,MAAM7E,eAAe,IAAI,EAAEwB,KAAKiB,GAAG;IAE9C,MAAMqC,SAASL,wBAAwB,OAAOzD,eAAeC,SAASC,cAAcC;IACpF,MAAM4D,YAAYnE,MAAMC,OAAO,CAACW,KAAK4C,IAAI,IAAI5C,KAAK4C,IAAI,CAAC,EAAE,GAAG5C,KAAK4C,IAAI;IACrE,MAAMY,mBAAmBD,WAAWE,WAAW,OAAO9F,OAAOD;IAE7D,MAAMgG,uBAAuB,MAAMnF,eAAe;QAChDoE,SAAS,IAAI;QACbU;QACAM,UAAU;QACVC,eAAeC,QAAQP,WAAW,CAAC3D,MAAMC,MAAM;QAC/CD;QACAmE,OAAO,CAAC,EAAEA,KAAK,EAAE;YACf,IAAIb,uBAAuB;gBACzBa,QAAQA,MAAMrE,OAAO,CAAC+D,iBAAiB3F,GAAG,CAAC,SAAS,CAAC;YACvD,OAAO,IAAIyF,UAAU7D,QAAQG,MAAM,GAAG,KAAK,CAACD,MAAMC,MAAM,EAAE;gBACxDkE,QAAQA,MAAMrE,OAAO,CAACA,OAAO,CAAC,EAAE,CAACsE,KAAK,CAAClG,GAAG,CAAC,MAAM,CAAC;YACpD,OAAO;gBACLiG,QAAQA,MAAMrE,OAAO,CAAC,IAAMA,QAAQH,GAAG,CAAC,CAAC,EAAEO,MAAM,EAAEkE,KAAK,EAAE,GAAKA,MAAMlE;YACvE;YAEA,IAAIG,KAAKQ,KAAK,EAAE;gBACd,IAAID,QAAQ;oBACVuD,QAAQA,MAAMvD,MAAM,CAACA;gBACvB;gBAEAuD,QAAQA,MAAMtD,KAAK,CAACR,KAAKQ,KAAK;YAChC;YAEA,OAAOsD;QACT;QACApE,cAAc;YACZsE,WAAWtE,YAAY,CAAC,YAAY;YACpC,GAAI4D,SAAS;gBAAEA;YAAO,IAAI,CAAC,CAAC;QAC9B;QACA5C;QACA9B;IACF;IAEA,MAAM6C,QAAQ3D,eAAe;QAC3BuC,QAAQ,IAAI,CAACH,OAAO,CAACG,MAAM;QAC3BiB,QAAQrB,iBAAiBsB,eAAe;QACxC0C,sBAAsB;QACtBjC,MAAMhC,KAAKyB,KAAK;IAClB,IAAIA;IAEJ,IAAIA,SAAS,gBAAgBA,SAASrC,MAAMC,OAAO,CAACoC,MAAMyC,UAAU,GAAG;QACrE,KAAK,MAAMC,OAAOT,qBAA6B;YAC7C,MAAMU,OAAOC,KAAKC,KAAK,CAACH,IAAIH,SAAS;YACrC,MAAME,aAAalF,OAAOqD,IAAI,CAAC+B,MAAMG,IAAI,CAAC,CAACC,OAASX,QAAQO,IAAI,CAACI,KAAK;YACtE,MAAMzF,QAAQqF,IAAI,CAACF,WAAW;YAE9B,IAAI,CAACnF,OAAO;gBACVoF,IAAIH,SAAS,GAAG;YAClB,OAAO;gBACLG,IAAIH,SAAS,GAAG;oBAAEE;oBAAYnF;gBAAM;YACtC;QACF;IACF;IAEA,MAAM0F,SAASf,qBAAqBpE,GAAG,CAAC,CAACkF,OAAU,CAAA;YACjD,CAACxE,KAAKyB,KAAK,CAAC,EAAE,AAAC+C,KAA6BR,SAAS;QACvD,CAAA;IAEA,IAAIhE,KAAKQ,KAAK,EAAE;QACd,MAAMkE,YAAY,MAAM,IAAI,CAACC,aAAa,CAAC;YACzC9E,QAASoD,yBAAyBvD,YAAY,CAAC,YAAY;YAC3D2D;YACA1D;YACAe;YACA9B;QACF;QAEA,MAAMgG,aAAaC,KAAKC,IAAI,CAACJ,YAAY1E,KAAKQ,KAAK;QACnD,MAAMuE,cAAczE,OAAO;QAC3B,MAAM0E,cAAcJ,aAAatE;QACjC,MAAM2E,gBAAgB,AAAC3E,CAAAA,OAAO,CAAA,IAAKN,KAAKQ,KAAK,GAAG;QAEhD,OAAO;YACLwE;YACAD;YACAvE,OAAOR,KAAKQ,KAAK;YACjB0E,UAAUF,cAAc1E,OAAO,IAAI;YACnCA;YACA2E;YACAE,UAAUJ,cAAczE,OAAO,IAAI;YACnCoE;YACAE;YACAH;QACF;IACF;IAEA,OAAO;QACLO,aAAa;QACbD,aAAa;QACbvE,OAAO;QACPF,MAAM;QACN2E,eAAe;QACfP,WAAWD,OAAO7E,MAAM;QACxBgF,YAAY;QACZH;IACF;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"findGlobal.d.ts","sourceRoot":"","sources":["../src/findGlobal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAQzC,eAAO,MAAM,UAAU,EAAE,UA4BxB,CAAA"}
1
+ {"version":3,"file":"findGlobal.d.ts","sourceRoot":"","sources":["../src/findGlobal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;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"}
@@ -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';
@@ -41,9 +42,11 @@ export { updateMany } from './updateMany.js';
41
42
  export { updateOne } from './updateOne.js';
42
43
  export { updateVersion } from './updateVersion.js';
43
44
  export { upsert } from './upsert.js';
45
+ export { upsertBranchGlobalChange } from './upsertBranchGlobalChange.js';
44
46
  export { upsertRow } from './upsertRow/index.js';
45
47
  export { buildDynamicPredefinedBlocksToJsonMigration, createBlocksToJsonMigrator, getBlocksToJsonMigrator, } from './utilities/blocksToJsonMigrator.js';
46
48
  export { buildCreateMigration } from './utilities/buildCreateMigration.js';
49
+ export { buildDynamicPredefinedSizesToVariantsMigration } from './utilities/buildDynamicPredefinedSizesToVariantsMigration.js';
47
50
  export { buildIndexName } from './utilities/buildIndexName.js';
48
51
  export { createSchemaGenerator } from './utilities/createSchemaGenerator.js';
49
52
  export { executeSchemaHooks } from './utilities/executeSchemaHooks.js';
@@ -51,12 +54,4 @@ export { extendDrizzleTable } from './utilities/extendDrizzleTable.js';
51
54
  export { hasLocalesTable } from './utilities/hasLocalesTable.js';
52
55
  export { pushDevSchema } from './utilities/pushDevSchema.js';
53
56
  export { validateExistingBlockIsIdentical } from './utilities/validateExistingBlockIsIdentical.js';
54
- /**
55
- * @deprecated remove in 4.0
56
- * use
57
- * ```ts
58
- * import { findMigrationDir } from 'payload'
59
- * ```
60
- */
61
- export declare const findMigrationDir: (migrationDir?: string) => string;
62
57
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}