@payloadcms/drizzle 3.0.0-canary.ff8c8fd → 3.0.0

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 (291) hide show
  1. package/dist/count.d.ts.map +1 -1
  2. package/dist/count.js +1 -1
  3. package/dist/count.js.map +1 -1
  4. package/dist/countGlobalVersions.d.ts +3 -0
  5. package/dist/countGlobalVersions.d.ts.map +1 -0
  6. package/dist/countGlobalVersions.js +27 -0
  7. package/dist/countGlobalVersions.js.map +1 -0
  8. package/dist/countVersions.d.ts +3 -0
  9. package/dist/countVersions.d.ts.map +1 -0
  10. package/dist/countVersions.js +27 -0
  11. package/dist/countVersions.js.map +1 -0
  12. package/dist/create.d.ts.map +1 -1
  13. package/dist/create.js +2 -1
  14. package/dist/create.js.map +1 -1
  15. package/dist/createGlobalVersion.d.ts +1 -1
  16. package/dist/createGlobalVersion.d.ts.map +1 -1
  17. package/dist/createGlobalVersion.js +7 -2
  18. package/dist/createGlobalVersion.js.map +1 -1
  19. package/dist/createTableName.d.ts.map +1 -1
  20. package/dist/createTableName.js +6 -2
  21. package/dist/createTableName.js.map +1 -1
  22. package/dist/createVersion.d.ts +1 -1
  23. package/dist/createVersion.d.ts.map +1 -1
  24. package/dist/createVersion.js +22 -14
  25. package/dist/createVersion.js.map +1 -1
  26. package/dist/deleteOne.d.ts.map +1 -1
  27. package/dist/deleteOne.js +6 -3
  28. package/dist/deleteOne.js.map +1 -1
  29. package/dist/deleteVersions.js +1 -1
  30. package/dist/deleteVersions.js.map +1 -1
  31. package/dist/destroy.d.ts.map +1 -1
  32. package/dist/destroy.js +3 -1
  33. package/dist/destroy.js.map +1 -1
  34. package/dist/exports/postgres.d.ts +2 -1
  35. package/dist/exports/postgres.d.ts.map +1 -1
  36. package/dist/exports/postgres.js +2 -1
  37. package/dist/exports/postgres.js.map +1 -1
  38. package/dist/find/buildFindManyArgs.d.ts +15 -7
  39. package/dist/find/buildFindManyArgs.d.ts.map +1 -1
  40. package/dist/find/buildFindManyArgs.js +40 -17
  41. package/dist/find/buildFindManyArgs.js.map +1 -1
  42. package/dist/find/findMany.d.ts +2 -1
  43. package/dist/find/findMany.d.ts.map +1 -1
  44. package/dist/find/findMany.js +12 -7
  45. package/dist/find/findMany.js.map +1 -1
  46. package/dist/find/traverseFields.d.ts +18 -4
  47. package/dist/find/traverseFields.d.ts.map +1 -1
  48. package/dist/find/traverseFields.js +358 -68
  49. package/dist/find/traverseFields.js.map +1 -1
  50. package/dist/find.d.ts.map +1 -1
  51. package/dist/find.js +4 -2
  52. package/dist/find.js.map +1 -1
  53. package/dist/findGlobal.d.ts.map +1 -1
  54. package/dist/findGlobal.js +2 -1
  55. package/dist/findGlobal.js.map +1 -1
  56. package/dist/findGlobalVersions.d.ts.map +1 -1
  57. package/dist/findGlobalVersions.js +4 -3
  58. package/dist/findGlobalVersions.js.map +1 -1
  59. package/dist/findMigrationDir.d.ts.map +1 -1
  60. package/dist/findMigrationDir.js +3 -1
  61. package/dist/findMigrationDir.js.map +1 -1
  62. package/dist/findOne.d.ts +1 -1
  63. package/dist/findOne.d.ts.map +1 -1
  64. package/dist/findOne.js +3 -1
  65. package/dist/findOne.js.map +1 -1
  66. package/dist/findVersions.d.ts.map +1 -1
  67. package/dist/findVersions.js +4 -3
  68. package/dist/findVersions.js.map +1 -1
  69. package/dist/index.d.ts +5 -0
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +5 -0
  72. package/dist/index.js.map +1 -1
  73. package/dist/migrate.d.ts.map +1 -1
  74. package/dist/migrate.js +4 -0
  75. package/dist/migrate.js.map +1 -1
  76. package/dist/migrateDown.d.ts.map +1 -1
  77. package/dist/migrateDown.js +1 -1
  78. package/dist/migrateDown.js.map +1 -1
  79. package/dist/migrateFresh.d.ts.map +1 -1
  80. package/dist/migrateFresh.js +4 -0
  81. package/dist/migrateFresh.js.map +1 -1
  82. package/dist/migrateRefresh.d.ts.map +1 -1
  83. package/dist/migrateRefresh.js +2 -1
  84. package/dist/migrateRefresh.js.map +1 -1
  85. package/dist/migrateReset.d.ts.map +1 -1
  86. package/dist/migrateReset.js +5 -3
  87. package/dist/migrateReset.js.map +1 -1
  88. package/dist/migrateStatus.js +0 -1
  89. package/dist/migrateStatus.js.map +1 -1
  90. package/dist/postgres/countDistinct.d.ts.map +1 -1
  91. package/dist/postgres/countDistinct.js +2 -3
  92. package/dist/postgres/countDistinct.js.map +1 -1
  93. package/dist/postgres/createDatabase.d.ts +14 -0
  94. package/dist/postgres/createDatabase.d.ts.map +1 -0
  95. package/dist/postgres/createDatabase.js +76 -0
  96. package/dist/postgres/createDatabase.js.map +1 -0
  97. package/dist/postgres/createExtensions.d.ts +3 -0
  98. package/dist/postgres/createExtensions.d.ts.map +1 -0
  99. package/dist/postgres/createExtensions.js +16 -0
  100. package/dist/postgres/createExtensions.js.map +1 -0
  101. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.d.ts.map +1 -1
  102. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.js +3 -1
  103. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.js.map +1 -1
  104. package/dist/postgres/createJSONQuery/index.d.ts +2 -9
  105. package/dist/postgres/createJSONQuery/index.d.ts.map +1 -1
  106. package/dist/postgres/createJSONQuery/index.js +34 -46
  107. package/dist/postgres/createJSONQuery/index.js.map +1 -1
  108. package/dist/postgres/createMigration.d.ts.map +1 -1
  109. package/dist/postgres/createMigration.js +1 -5
  110. package/dist/postgres/createMigration.js.map +1 -1
  111. package/dist/postgres/defaultSnapshot.d.ts.map +1 -1
  112. package/dist/postgres/defaultSnapshot.js +4 -1
  113. package/dist/postgres/defaultSnapshot.js.map +1 -1
  114. package/dist/postgres/init.d.ts.map +1 -1
  115. package/dist/postgres/init.js +12 -3
  116. package/dist/postgres/init.js.map +1 -1
  117. package/dist/postgres/schema/build.d.ts +12 -2
  118. package/dist/postgres/schema/build.d.ts.map +1 -1
  119. package/dist/postgres/schema/build.js +45 -10
  120. package/dist/postgres/schema/build.js.map +1 -1
  121. package/dist/postgres/schema/createIndex.d.ts +2 -3
  122. package/dist/postgres/schema/createIndex.d.ts.map +1 -1
  123. package/dist/postgres/schema/createIndex.js +5 -3
  124. package/dist/postgres/schema/createIndex.js.map +1 -1
  125. package/dist/postgres/schema/geometryColumn.d.ts +12 -0
  126. package/dist/postgres/schema/geometryColumn.d.ts.map +1 -0
  127. package/dist/postgres/schema/geometryColumn.js +18 -0
  128. package/dist/postgres/schema/geometryColumn.js.map +1 -0
  129. package/dist/postgres/schema/traverseFields.d.ts +9 -2
  130. package/dist/postgres/schema/traverseFields.d.ts.map +1 -1
  131. package/dist/postgres/schema/traverseFields.js +393 -265
  132. package/dist/postgres/schema/traverseFields.js.map +1 -1
  133. package/dist/postgres/schema/withDefault.d.ts.map +1 -1
  134. package/dist/postgres/schema/withDefault.js +6 -1
  135. package/dist/postgres/schema/withDefault.js.map +1 -1
  136. package/dist/postgres/types.d.ts +37 -7
  137. package/dist/postgres/types.d.ts.map +1 -1
  138. package/dist/postgres/types.js.map +1 -1
  139. package/dist/queries/addJoinTable.d.ts +11 -0
  140. package/dist/queries/addJoinTable.d.ts.map +1 -0
  141. package/dist/queries/addJoinTable.js +13 -0
  142. package/dist/queries/addJoinTable.js.map +1 -0
  143. package/dist/queries/buildAndOrConditions.d.ts +1 -1
  144. package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
  145. package/dist/queries/buildAndOrConditions.js +2 -4
  146. package/dist/queries/buildAndOrConditions.js.map +1 -1
  147. package/dist/queries/buildOrderBy.d.ts +18 -0
  148. package/dist/queries/buildOrderBy.d.ts.map +1 -0
  149. package/dist/queries/buildOrderBy.js +56 -0
  150. package/dist/queries/buildOrderBy.js.map +1 -0
  151. package/dist/queries/buildQuery.d.ts +8 -7
  152. package/dist/queries/buildQuery.d.ts.map +1 -1
  153. package/dist/queries/buildQuery.js +12 -47
  154. package/dist/queries/buildQuery.js.map +1 -1
  155. package/dist/queries/getTableColumnFromPath.d.ts +6 -2
  156. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  157. package/dist/queries/getTableColumnFromPath.js +270 -223
  158. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  159. package/dist/queries/operatorMap.d.ts.map +1 -1
  160. package/dist/queries/operatorMap.js +0 -4
  161. package/dist/queries/operatorMap.js.map +1 -1
  162. package/dist/queries/parseParams.d.ts +1 -1
  163. package/dist/queries/parseParams.d.ts.map +1 -1
  164. package/dist/queries/parseParams.js +85 -6
  165. package/dist/queries/parseParams.js.map +1 -1
  166. package/dist/queries/sanitizeQueryValue.d.ts +12 -1
  167. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  168. package/dist/queries/sanitizeQueryValue.js +89 -25
  169. package/dist/queries/sanitizeQueryValue.js.map +1 -1
  170. package/dist/queries/selectDistinct.d.ts +3 -4
  171. package/dist/queries/selectDistinct.d.ts.map +1 -1
  172. package/dist/queries/selectDistinct.js.map +1 -1
  173. package/dist/queryDrafts.d.ts.map +1 -1
  174. package/dist/queryDrafts.js +6 -6
  175. package/dist/queryDrafts.js.map +1 -1
  176. package/dist/transactions/beginTransaction.d.ts.map +1 -1
  177. package/dist/transactions/beginTransaction.js +5 -1
  178. package/dist/transactions/beginTransaction.js.map +1 -1
  179. package/dist/transactions/commitTransaction.d.ts.map +1 -1
  180. package/dist/transactions/commitTransaction.js +3 -1
  181. package/dist/transactions/commitTransaction.js.map +1 -1
  182. package/dist/transform/read/hasManyNumber.d.ts +2 -1
  183. package/dist/transform/read/hasManyNumber.d.ts.map +1 -1
  184. package/dist/transform/read/hasManyNumber.js +12 -2
  185. package/dist/transform/read/hasManyNumber.js.map +1 -1
  186. package/dist/transform/read/hasManyText.d.ts +2 -1
  187. package/dist/transform/read/hasManyText.d.ts.map +1 -1
  188. package/dist/transform/read/hasManyText.js +12 -2
  189. package/dist/transform/read/hasManyText.js.map +1 -1
  190. package/dist/transform/read/index.d.ts +3 -2
  191. package/dist/transform/read/index.d.ts.map +1 -1
  192. package/dist/transform/read/index.js +3 -2
  193. package/dist/transform/read/index.js.map +1 -1
  194. package/dist/transform/read/relationship.d.ts +2 -1
  195. package/dist/transform/read/relationship.d.ts.map +1 -1
  196. package/dist/transform/read/relationship.js +15 -6
  197. package/dist/transform/read/relationship.js.map +1 -1
  198. package/dist/transform/read/traverseFields.d.ts +10 -2
  199. package/dist/transform/read/traverseFields.d.ts.map +1 -1
  200. package/dist/transform/read/traverseFields.js +185 -71
  201. package/dist/transform/read/traverseFields.js.map +1 -1
  202. package/dist/transform/write/array.d.ts +6 -1
  203. package/dist/transform/write/array.d.ts.map +1 -1
  204. package/dist/transform/write/array.js +7 -3
  205. package/dist/transform/write/array.js.map +1 -1
  206. package/dist/transform/write/blocks.d.ts +8 -3
  207. package/dist/transform/write/blocks.d.ts.map +1 -1
  208. package/dist/transform/write/blocks.js +19 -7
  209. package/dist/transform/write/blocks.js.map +1 -1
  210. package/dist/transform/write/index.d.ts.map +1 -1
  211. package/dist/transform/write/index.js +1 -1
  212. package/dist/transform/write/index.js.map +1 -1
  213. package/dist/transform/write/relationships.d.ts.map +1 -1
  214. package/dist/transform/write/relationships.js +6 -2
  215. package/dist/transform/write/relationships.js.map +1 -1
  216. package/dist/transform/write/selects.d.ts.map +1 -1
  217. package/dist/transform/write/selects.js +1 -1
  218. package/dist/transform/write/selects.js.map +1 -1
  219. package/dist/transform/write/traverseFields.d.ts +6 -1
  220. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  221. package/dist/transform/write/traverseFields.js +62 -19
  222. package/dist/transform/write/traverseFields.js.map +1 -1
  223. package/dist/types.d.ts +6 -4
  224. package/dist/types.d.ts.map +1 -1
  225. package/dist/types.js.map +1 -1
  226. package/dist/update.d.ts.map +1 -1
  227. package/dist/update.js +4 -2
  228. package/dist/update.js.map +1 -1
  229. package/dist/updateGlobal.d.ts +1 -1
  230. package/dist/updateGlobal.d.ts.map +1 -1
  231. package/dist/updateGlobal.js +2 -1
  232. package/dist/updateGlobal.js.map +1 -1
  233. package/dist/updateGlobalVersion.d.ts +1 -1
  234. package/dist/updateGlobalVersion.d.ts.map +1 -1
  235. package/dist/updateGlobalVersion.js +4 -3
  236. package/dist/updateGlobalVersion.js.map +1 -1
  237. package/dist/updateVersion.d.ts +1 -1
  238. package/dist/updateVersion.d.ts.map +1 -1
  239. package/dist/updateVersion.js +4 -3
  240. package/dist/updateVersion.js.map +1 -1
  241. package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -1
  242. package/dist/upsertRow/deleteExistingRowsByPath.js +6 -2
  243. package/dist/upsertRow/deleteExistingRowsByPath.js.map +1 -1
  244. package/dist/upsertRow/index.d.ts +1 -1
  245. package/dist/upsertRow/index.d.ts.map +1 -1
  246. package/dist/upsertRow/index.js +51 -13
  247. package/dist/upsertRow/index.js.map +1 -1
  248. package/dist/upsertRow/insertArrays.d.ts.map +1 -1
  249. package/dist/upsertRow/insertArrays.js +5 -2
  250. package/dist/upsertRow/insertArrays.js.map +1 -1
  251. package/dist/upsertRow/types.d.ts +10 -5
  252. package/dist/upsertRow/types.d.ts.map +1 -1
  253. package/dist/upsertRow/types.js.map +1 -1
  254. package/dist/utilities/buildIndexName.d.ts +7 -0
  255. package/dist/utilities/buildIndexName.d.ts.map +1 -0
  256. package/dist/utilities/buildIndexName.js +14 -0
  257. package/dist/utilities/buildIndexName.js.map +1 -0
  258. package/dist/utilities/createBlocksMap.d.ts.map +1 -1
  259. package/dist/utilities/createBlocksMap.js +4 -2
  260. package/dist/utilities/createBlocksMap.js.map +1 -1
  261. package/dist/utilities/createRelationshipMap.d.ts.map +1 -1
  262. package/dist/utilities/createRelationshipMap.js +3 -1
  263. package/dist/utilities/createRelationshipMap.js.map +1 -1
  264. package/dist/utilities/executeSchemaHooks.d.ts +24 -0
  265. package/dist/utilities/executeSchemaHooks.d.ts.map +1 -0
  266. package/dist/utilities/executeSchemaHooks.js +21 -0
  267. package/dist/utilities/executeSchemaHooks.js.map +1 -0
  268. package/dist/utilities/extendDrizzleTable.d.ts +19 -0
  269. package/dist/utilities/extendDrizzleTable.d.ts.map +1 -0
  270. package/dist/utilities/extendDrizzleTable.js +38 -0
  271. package/dist/utilities/extendDrizzleTable.js.map +1 -0
  272. package/dist/utilities/getCollectionIdType.d.ts +7 -0
  273. package/dist/utilities/getCollectionIdType.d.ts.map +1 -0
  274. package/dist/utilities/getCollectionIdType.js +11 -0
  275. package/dist/utilities/getCollectionIdType.js.map +1 -0
  276. package/dist/utilities/getNameFromDrizzleTable.d.ts +3 -0
  277. package/dist/utilities/getNameFromDrizzleTable.d.ts.map +1 -0
  278. package/dist/utilities/getNameFromDrizzleTable.js +6 -0
  279. package/dist/utilities/getNameFromDrizzleTable.js.map +1 -0
  280. package/dist/utilities/hasLocalesTable.d.ts.map +1 -1
  281. package/dist/utilities/hasLocalesTable.js +12 -4
  282. package/dist/utilities/hasLocalesTable.js.map +1 -1
  283. package/dist/utilities/isPolymorphicRelationship.d.ts +6 -0
  284. package/dist/utilities/isPolymorphicRelationship.d.ts.map +1 -0
  285. package/dist/utilities/isPolymorphicRelationship.js +5 -0
  286. package/dist/utilities/isPolymorphicRelationship.js.map +1 -0
  287. package/dist/utilities/pushDevSchema.d.ts.map +1 -1
  288. package/dist/utilities/pushDevSchema.js +5 -0
  289. package/dist/utilities/pushDevSchema.js.map +1 -1
  290. package/license.md +22 -0
  291. package/package.json +17 -8
@@ -1,12 +1,18 @@
1
1
  import { APIError, createArrayFromCommaDelineated } from 'payload';
2
2
  import { fieldAffectsData } from 'payload/shared';
3
- export const sanitizeQueryValue = ({ adapter, field, operator: operatorArg, relationOrPath, val })=>{
3
+ import { validate as uuidValidate } from 'uuid';
4
+ import { getCollectionIdType } from '../utilities/getCollectionIdType.js';
5
+ import { isPolymorphicRelationship } from '../utilities/isPolymorphicRelationship.js';
6
+ export const sanitizeQueryValue = ({ adapter, columns, field, isUUID, operator: operatorArg, relationOrPath, val })=>{
4
7
  let operator = operatorArg;
5
8
  let formattedValue = val;
6
- if (!fieldAffectsData(field)) return {
7
- operator,
8
- value: formattedValue
9
- };
9
+ let formattedColumns;
10
+ if (!fieldAffectsData(field)) {
11
+ return {
12
+ operator,
13
+ value: formattedValue
14
+ };
15
+ }
10
16
  if ((field.type === 'relationship' || field.type === 'upload') && !relationOrPath.endsWith('relationTo') && Array.isArray(formattedValue)) {
11
17
  const allPossibleIDTypes = [];
12
18
  formattedValue.forEach((val)=>{
@@ -22,8 +28,12 @@ export const sanitizeQueryValue = ({ adapter, field, operator: operatorArg, rela
22
28
  }
23
29
  // Cast incoming values as proper searchable types
24
30
  if (field.type === 'checkbox' && typeof val === 'string') {
25
- if (val.toLowerCase() === 'true') formattedValue = true;
26
- if (val.toLowerCase() === 'false') formattedValue = false;
31
+ if (val.toLowerCase() === 'true') {
32
+ formattedValue = true;
33
+ }
34
+ if (val.toLowerCase() === 'false') {
35
+ formattedValue = false;
36
+ }
27
37
  }
28
38
  if ([
29
39
  'all',
@@ -42,6 +52,14 @@ export const sanitizeQueryValue = ({ adapter, field, operator: operatorArg, rela
42
52
  }
43
53
  if (field.type === 'number' && typeof formattedValue === 'string') {
44
54
  formattedValue = Number(val);
55
+ if (Number.isNaN(formattedValue)) {
56
+ formattedValue = null;
57
+ }
58
+ }
59
+ if (isUUID && typeof formattedValue === 'string') {
60
+ if (!uuidValidate(val)) {
61
+ formattedValue = null;
62
+ }
45
63
  }
46
64
  if (field.type === 'date' && operator !== 'exists') {
47
65
  if (typeof val === 'string') {
@@ -52,7 +70,9 @@ export const sanitizeQueryValue = ({ adapter, field, operator: operatorArg, rela
52
70
  value: undefined
53
71
  };
54
72
  }
55
- } else if (typeof val === 'number') formattedValue = new Date(val).toISOString();
73
+ } else if (typeof val === 'number') {
74
+ formattedValue = new Date(val).toISOString();
75
+ }
56
76
  }
57
77
  if (field.type === 'relationship' || field.type === 'upload') {
58
78
  if (val === 'null') {
@@ -61,20 +81,55 @@ export const sanitizeQueryValue = ({ adapter, field, operator: operatorArg, rela
61
81
  // convert the value to the idType of the relationship
62
82
  let idType;
63
83
  if (typeof field.relationTo === 'string') {
64
- const collection = adapter.payload.collections[field.relationTo];
65
- const mixedType = collection.customIDType || adapter.idType;
66
- const typeMap = {
67
- number: 'number',
68
- serial: 'number',
69
- text: 'text',
70
- uuid: 'text'
71
- };
72
- idType = typeMap[mixedType];
84
+ idType = getCollectionIdType({
85
+ adapter,
86
+ collection: adapter.payload.collections[field.relationTo]
87
+ });
73
88
  } else {
74
- // LIMITATION: Only cast to the first relationTo id type,
75
- // otherwise we need to make the db cast which is inefficient
76
- const collection = adapter.payload.collections[field.relationTo[0]];
77
- idType = collection.customIDType || adapter.idType === 'uuid' ? 'text' : 'number';
89
+ if (isPolymorphicRelationship(val)) {
90
+ if (operator !== 'equals') {
91
+ throw new APIError(`Only 'equals' operator is supported for polymorphic relationship object notation. Given - ${operator}`);
92
+ }
93
+ idType = getCollectionIdType({
94
+ adapter,
95
+ collection: adapter.payload.collections[val.relationTo]
96
+ });
97
+ return {
98
+ operator,
99
+ value: idType === 'number' ? Number(val.value) : String(val.value)
100
+ };
101
+ }
102
+ formattedColumns = columns.map(({ idType, rawColumn })=>{
103
+ let formattedValue;
104
+ if (Array.isArray(val)) {
105
+ formattedValue = val.map((eachVal)=>{
106
+ let formattedValue;
107
+ if (idType === 'number') {
108
+ formattedValue = Number(eachVal);
109
+ if (Number.isNaN(formattedValue)) {
110
+ return null;
111
+ }
112
+ } else {
113
+ if (idType === 'uuid' && !uuidValidate(eachVal)) {
114
+ return null;
115
+ }
116
+ formattedValue = String(eachVal);
117
+ }
118
+ return formattedValue;
119
+ }).filter(Boolean);
120
+ } else if (idType === 'number') {
121
+ formattedValue = Number(val);
122
+ if (Number.isNaN(formattedValue)) {
123
+ return null;
124
+ }
125
+ } else {
126
+ formattedValue = String(val);
127
+ }
128
+ return {
129
+ rawColumn,
130
+ value: formattedValue
131
+ };
132
+ }).filter(Boolean);
78
133
  }
79
134
  if (Array.isArray(formattedValue)) {
80
135
  formattedValue = formattedValue.map((value)=>{
@@ -99,19 +154,28 @@ export const sanitizeQueryValue = ({ adapter, field, operator: operatorArg, rela
99
154
  if ('hasMany' in field && field.hasMany && operator === 'contains') {
100
155
  operator = 'equals';
101
156
  }
102
- if (operator === 'near' || operator === 'within' || operator === 'intersects') {
103
- throw new APIError(`Querying with '${operator}' is not supported with the postgres database adapter.`);
157
+ if (operator === 'near' && field.type === 'point' && typeof formattedValue === 'string') {
158
+ const [lng, lat, maxDistance, minDistance] = formattedValue.split(',');
159
+ formattedValue = [
160
+ Number(lng),
161
+ Number(lat),
162
+ Number(maxDistance),
163
+ Number(minDistance)
164
+ ];
104
165
  }
105
166
  if (operator === 'contains') {
106
167
  formattedValue = `%${formattedValue}%`;
107
168
  }
108
169
  if (operator === 'exists') {
109
- formattedValue = formattedValue === 'true' || formattedValue === true;
110
- if (formattedValue === false) {
170
+ formattedValue = val === 'true' || val === true;
171
+ if (formattedValue) {
172
+ operator = 'exists';
173
+ } else {
111
174
  operator = 'isNull';
112
175
  }
113
176
  }
114
177
  return {
178
+ columns: formattedColumns,
115
179
  operator,
116
180
  value: formattedValue
117
181
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/sanitizeQueryValue.ts"],"sourcesContent":["import { APIError, type Field, type TabAsField, createArrayFromCommaDelineated } from 'payload'\nimport { fieldAffectsData } from 'payload/shared'\n\nimport type { DrizzleAdapter } from '../types.js'\n\ntype SanitizeQueryValueArgs = {\n adapter: DrizzleAdapter\n field: Field | TabAsField\n operator: string\n relationOrPath: string\n val: any\n}\n\nexport const sanitizeQueryValue = ({\n adapter,\n field,\n operator: operatorArg,\n relationOrPath,\n val,\n}: SanitizeQueryValueArgs): { operator: string; value: unknown } => {\n let operator = operatorArg\n let formattedValue = val\n\n if (!fieldAffectsData(field)) return { operator, value: formattedValue }\n\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n !relationOrPath.endsWith('relationTo') &&\n Array.isArray(formattedValue)\n ) {\n const allPossibleIDTypes: (number | string)[] = []\n formattedValue.forEach((val) => {\n if (adapter.idType !== 'uuid' && typeof val === 'string') {\n allPossibleIDTypes.push(val, parseInt(val))\n } else if (typeof val === 'string') {\n allPossibleIDTypes.push(val)\n } else {\n allPossibleIDTypes.push(val, String(val))\n }\n })\n formattedValue = allPossibleIDTypes\n }\n\n // Cast incoming values as proper searchable types\n if (field.type === 'checkbox' && typeof val === 'string') {\n if (val.toLowerCase() === 'true') formattedValue = true\n if (val.toLowerCase() === 'false') formattedValue = false\n }\n\n if (['all', 'in', 'not_in'].includes(operator)) {\n if (typeof formattedValue === 'string') {\n formattedValue = createArrayFromCommaDelineated(formattedValue)\n\n if (field.type === 'number') {\n formattedValue = formattedValue.map((arrayVal) => parseFloat(arrayVal))\n }\n }\n\n if (!Array.isArray(formattedValue) || formattedValue.length === 0) {\n return null\n }\n }\n\n if (field.type === 'number' && typeof formattedValue === 'string') {\n formattedValue = Number(val)\n }\n\n if (field.type === 'date' && operator !== 'exists') {\n if (typeof val === 'string') {\n formattedValue = new Date(val).toISOString()\n if (Number.isNaN(Date.parse(formattedValue))) {\n return { operator, value: undefined }\n }\n } else if (typeof val === 'number') formattedValue = new Date(val).toISOString()\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n if (val === 'null') {\n formattedValue = null\n } else if (!(formattedValue === null || typeof formattedValue === 'boolean')) {\n // convert the value to the idType of the relationship\n let idType: 'number' | 'text'\n if (typeof field.relationTo === 'string') {\n const collection = adapter.payload.collections[field.relationTo]\n const mixedType: 'number' | 'serial' | 'text' | 'uuid' =\n collection.customIDType || adapter.idType\n const typeMap: Record<string, 'number' | 'text'> = {\n number: 'number',\n serial: 'number',\n text: 'text',\n uuid: 'text',\n }\n idType = typeMap[mixedType]\n } else {\n // LIMITATION: Only cast to the first relationTo id type,\n // otherwise we need to make the db cast which is inefficient\n const collection = adapter.payload.collections[field.relationTo[0]]\n idType = collection.customIDType || adapter.idType === 'uuid' ? 'text' : 'number'\n }\n if (Array.isArray(formattedValue)) {\n formattedValue = formattedValue.map((value) => {\n if (idType === 'number') {\n return Number(value)\n }\n if (idType === 'text') {\n return String(value)\n }\n return value\n })\n } else {\n if (idType === 'number') {\n formattedValue = Number(val)\n }\n if (idType === 'text') {\n formattedValue = String(val)\n }\n }\n }\n }\n\n if ('hasMany' in field && field.hasMany && operator === 'contains') {\n operator = 'equals'\n }\n\n if (operator === 'near' || operator === 'within' || operator === 'intersects') {\n throw new APIError(\n `Querying with '${operator}' is not supported with the postgres database adapter.`,\n )\n }\n\n if (operator === 'contains') {\n formattedValue = `%${formattedValue}%`\n }\n\n if (operator === 'exists') {\n formattedValue = formattedValue === 'true' || formattedValue === true\n if (formattedValue === false) {\n operator = 'isNull'\n }\n }\n\n return { operator, value: formattedValue }\n}\n"],"names":["APIError","createArrayFromCommaDelineated","fieldAffectsData","sanitizeQueryValue","adapter","field","operator","operatorArg","relationOrPath","val","formattedValue","value","type","endsWith","Array","isArray","allPossibleIDTypes","forEach","idType","push","parseInt","String","toLowerCase","includes","map","arrayVal","parseFloat","length","Number","Date","toISOString","isNaN","parse","undefined","relationTo","collection","payload","collections","mixedType","customIDType","typeMap","number","serial","text","uuid","hasMany"],"mappings":"AAAA,SAASA,QAAQ,EAA+BC,8BAA8B,QAAQ,UAAS;AAC/F,SAASC,gBAAgB,QAAQ,iBAAgB;AAYjD,OAAO,MAAMC,qBAAqB,CAAC,EACjCC,OAAO,EACPC,KAAK,EACLC,UAAUC,WAAW,EACrBC,cAAc,EACdC,GAAG,EACoB;IACvB,IAAIH,WAAWC;IACf,IAAIG,iBAAiBD;IAErB,IAAI,CAACP,iBAAiBG,QAAQ,OAAO;QAAEC;QAAUK,OAAOD;IAAe;IAEvE,IACE,AAACL,CAAAA,MAAMO,IAAI,KAAK,kBAAkBP,MAAMO,IAAI,KAAK,QAAO,KACxD,CAACJ,eAAeK,QAAQ,CAAC,iBACzBC,MAAMC,OAAO,CAACL,iBACd;QACA,MAAMM,qBAA0C,EAAE;QAClDN,eAAeO,OAAO,CAAC,CAACR;YACtB,IAAIL,QAAQc,MAAM,KAAK,UAAU,OAAOT,QAAQ,UAAU;gBACxDO,mBAAmBG,IAAI,CAACV,KAAKW,SAASX;YACxC,OAAO,IAAI,OAAOA,QAAQ,UAAU;gBAClCO,mBAAmBG,IAAI,CAACV;YAC1B,OAAO;gBACLO,mBAAmBG,IAAI,CAACV,KAAKY,OAAOZ;YACtC;QACF;QACAC,iBAAiBM;IACnB;IAEA,kDAAkD;IAClD,IAAIX,MAAMO,IAAI,KAAK,cAAc,OAAOH,QAAQ,UAAU;QACxD,IAAIA,IAAIa,WAAW,OAAO,QAAQZ,iBAAiB;QACnD,IAAID,IAAIa,WAAW,OAAO,SAASZ,iBAAiB;IACtD;IAEA,IAAI;QAAC;QAAO;QAAM;KAAS,CAACa,QAAQ,CAACjB,WAAW;QAC9C,IAAI,OAAOI,mBAAmB,UAAU;YACtCA,iBAAiBT,+BAA+BS;YAEhD,IAAIL,MAAMO,IAAI,KAAK,UAAU;gBAC3BF,iBAAiBA,eAAec,GAAG,CAAC,CAACC,WAAaC,WAAWD;YAC/D;QACF;QAEA,IAAI,CAACX,MAAMC,OAAO,CAACL,mBAAmBA,eAAeiB,MAAM,KAAK,GAAG;YACjE,OAAO;QACT;IACF;IAEA,IAAItB,MAAMO,IAAI,KAAK,YAAY,OAAOF,mBAAmB,UAAU;QACjEA,iBAAiBkB,OAAOnB;IAC1B;IAEA,IAAIJ,MAAMO,IAAI,KAAK,UAAUN,aAAa,UAAU;QAClD,IAAI,OAAOG,QAAQ,UAAU;YAC3BC,iBAAiB,IAAImB,KAAKpB,KAAKqB,WAAW;YAC1C,IAAIF,OAAOG,KAAK,CAACF,KAAKG,KAAK,CAACtB,kBAAkB;gBAC5C,OAAO;oBAAEJ;oBAAUK,OAAOsB;gBAAU;YACtC;QACF,OAAO,IAAI,OAAOxB,QAAQ,UAAUC,iBAAiB,IAAImB,KAAKpB,KAAKqB,WAAW;IAChF;IAEA,IAAIzB,MAAMO,IAAI,KAAK,kBAAkBP,MAAMO,IAAI,KAAK,UAAU;QAC5D,IAAIH,QAAQ,QAAQ;YAClBC,iBAAiB;QACnB,OAAO,IAAI,CAAEA,CAAAA,mBAAmB,QAAQ,OAAOA,mBAAmB,SAAQ,GAAI;YAC5E,sDAAsD;YACtD,IAAIQ;YACJ,IAAI,OAAOb,MAAM6B,UAAU,KAAK,UAAU;gBACxC,MAAMC,aAAa/B,QAAQgC,OAAO,CAACC,WAAW,CAAChC,MAAM6B,UAAU,CAAC;gBAChE,MAAMI,YACJH,WAAWI,YAAY,IAAInC,QAAQc,MAAM;gBAC3C,MAAMsB,UAA6C;oBACjDC,QAAQ;oBACRC,QAAQ;oBACRC,MAAM;oBACNC,MAAM;gBACR;gBACA1B,SAASsB,OAAO,CAACF,UAAU;YAC7B,OAAO;gBACL,yDAAyD;gBACzD,6DAA6D;gBAC7D,MAAMH,aAAa/B,QAAQgC,OAAO,CAACC,WAAW,CAAChC,MAAM6B,UAAU,CAAC,EAAE,CAAC;gBACnEhB,SAASiB,WAAWI,YAAY,IAAInC,QAAQc,MAAM,KAAK,SAAS,SAAS;YAC3E;YACA,IAAIJ,MAAMC,OAAO,CAACL,iBAAiB;gBACjCA,iBAAiBA,eAAec,GAAG,CAAC,CAACb;oBACnC,IAAIO,WAAW,UAAU;wBACvB,OAAOU,OAAOjB;oBAChB;oBACA,IAAIO,WAAW,QAAQ;wBACrB,OAAOG,OAAOV;oBAChB;oBACA,OAAOA;gBACT;YACF,OAAO;gBACL,IAAIO,WAAW,UAAU;oBACvBR,iBAAiBkB,OAAOnB;gBAC1B;gBACA,IAAIS,WAAW,QAAQ;oBACrBR,iBAAiBW,OAAOZ;gBAC1B;YACF;QACF;IACF;IAEA,IAAI,aAAaJ,SAASA,MAAMwC,OAAO,IAAIvC,aAAa,YAAY;QAClEA,WAAW;IACb;IAEA,IAAIA,aAAa,UAAUA,aAAa,YAAYA,aAAa,cAAc;QAC7E,MAAM,IAAIN,SACR,CAAC,eAAe,EAAEM,SAAS,sDAAsD,CAAC;IAEtF;IAEA,IAAIA,aAAa,YAAY;QAC3BI,iBAAiB,CAAC,CAAC,EAAEA,eAAe,CAAC,CAAC;IACxC;IAEA,IAAIJ,aAAa,UAAU;QACzBI,iBAAiBA,mBAAmB,UAAUA,mBAAmB;QACjE,IAAIA,mBAAmB,OAAO;YAC5BJ,WAAW;QACb;IACF;IAEA,OAAO;QAAEA;QAAUK,OAAOD;IAAe;AAC3C,EAAC"}
1
+ {"version":3,"sources":["../../src/queries/sanitizeQueryValue.ts"],"sourcesContent":["import type { SQL } from 'drizzle-orm'\n\nimport { APIError, createArrayFromCommaDelineated, type Field, type TabAsField } from 'payload'\nimport { fieldAffectsData } from 'payload/shared'\nimport { validate as uuidValidate } from 'uuid'\n\nimport type { DrizzleAdapter } from '../types.js'\n\nimport { getCollectionIdType } from '../utilities/getCollectionIdType.js'\nimport { isPolymorphicRelationship } from '../utilities/isPolymorphicRelationship.js'\n\ntype SanitizeQueryValueArgs = {\n adapter: DrizzleAdapter\n columns?: {\n idType: 'number' | 'text' | 'uuid'\n rawColumn: SQL<unknown>\n }[]\n field: Field | TabAsField\n isUUID: boolean\n operator: string\n relationOrPath: string\n val: any\n}\n\ntype SanitizedColumn = {\n rawColumn: SQL<unknown>\n value: unknown\n}\n\nexport const sanitizeQueryValue = ({\n adapter,\n columns,\n field,\n isUUID,\n operator: operatorArg,\n relationOrPath,\n val,\n}: SanitizeQueryValueArgs): {\n columns?: SanitizedColumn[]\n operator: string\n value: unknown\n} => {\n let operator = operatorArg\n let formattedValue = val\n let formattedColumns: SanitizedColumn[]\n\n if (!fieldAffectsData(field)) {\n return { operator, value: formattedValue }\n }\n\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n !relationOrPath.endsWith('relationTo') &&\n Array.isArray(formattedValue)\n ) {\n const allPossibleIDTypes: (number | string)[] = []\n formattedValue.forEach((val) => {\n if (adapter.idType !== 'uuid' && typeof val === 'string') {\n allPossibleIDTypes.push(val, parseInt(val))\n } else if (typeof val === 'string') {\n allPossibleIDTypes.push(val)\n } else {\n allPossibleIDTypes.push(val, String(val))\n }\n })\n formattedValue = allPossibleIDTypes\n }\n\n // Cast incoming values as proper searchable types\n if (field.type === 'checkbox' && typeof val === 'string') {\n if (val.toLowerCase() === 'true') {\n formattedValue = true\n }\n if (val.toLowerCase() === 'false') {\n formattedValue = false\n }\n }\n\n if (['all', 'in', 'not_in'].includes(operator)) {\n if (typeof formattedValue === 'string') {\n formattedValue = createArrayFromCommaDelineated(formattedValue)\n\n if (field.type === 'number') {\n formattedValue = formattedValue.map((arrayVal) => parseFloat(arrayVal))\n }\n }\n\n if (!Array.isArray(formattedValue) || formattedValue.length === 0) {\n return null\n }\n }\n\n if (field.type === 'number' && typeof formattedValue === 'string') {\n formattedValue = Number(val)\n\n if (Number.isNaN(formattedValue)) {\n formattedValue = null\n }\n }\n\n if (isUUID && typeof formattedValue === 'string') {\n if (!uuidValidate(val)) {\n formattedValue = null\n }\n }\n\n if (field.type === 'date' && operator !== 'exists') {\n if (typeof val === 'string') {\n formattedValue = new Date(val).toISOString()\n if (Number.isNaN(Date.parse(formattedValue))) {\n return { operator, value: undefined }\n }\n } else if (typeof val === 'number') {\n formattedValue = new Date(val).toISOString()\n }\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n if (val === 'null') {\n formattedValue = null\n } else if (!(formattedValue === null || typeof formattedValue === 'boolean')) {\n // convert the value to the idType of the relationship\n let idType: 'number' | 'text'\n if (typeof field.relationTo === 'string') {\n idType = getCollectionIdType({\n adapter,\n collection: adapter.payload.collections[field.relationTo],\n })\n } else {\n if (isPolymorphicRelationship(val)) {\n if (operator !== 'equals') {\n throw new APIError(\n `Only 'equals' operator is supported for polymorphic relationship object notation. Given - ${operator}`,\n )\n }\n idType = getCollectionIdType({\n adapter,\n collection: adapter.payload.collections[val.relationTo],\n })\n\n return {\n operator,\n value: idType === 'number' ? Number(val.value) : String(val.value),\n }\n }\n\n formattedColumns = columns\n .map(({ idType, rawColumn }) => {\n let formattedValue: number | number[] | string | string[]\n\n if (Array.isArray(val)) {\n formattedValue = val\n .map((eachVal) => {\n let formattedValue: number | string\n\n if (idType === 'number') {\n formattedValue = Number(eachVal)\n\n if (Number.isNaN(formattedValue)) {\n return null\n }\n } else {\n if (idType === 'uuid' && !uuidValidate(eachVal)) {\n return null\n }\n\n formattedValue = String(eachVal)\n }\n\n return formattedValue\n })\n .filter(Boolean) as number[] | string[]\n } else if (idType === 'number') {\n formattedValue = Number(val)\n\n if (Number.isNaN(formattedValue)) {\n return null\n }\n } else {\n formattedValue = String(val)\n }\n\n return {\n rawColumn,\n value: formattedValue,\n }\n })\n .filter(Boolean)\n }\n if (Array.isArray(formattedValue)) {\n formattedValue = formattedValue.map((value) => {\n if (idType === 'number') {\n return Number(value)\n }\n if (idType === 'text') {\n return String(value)\n }\n return value\n })\n } else {\n if (idType === 'number') {\n formattedValue = Number(val)\n }\n if (idType === 'text') {\n formattedValue = String(val)\n }\n }\n }\n }\n\n if ('hasMany' in field && field.hasMany && operator === 'contains') {\n operator = 'equals'\n }\n\n if (operator === 'near' && field.type === 'point' && typeof formattedValue === 'string') {\n const [lng, lat, maxDistance, minDistance] = formattedValue.split(',')\n\n formattedValue = [Number(lng), Number(lat), Number(maxDistance), Number(minDistance)]\n }\n\n if (operator === 'contains') {\n formattedValue = `%${formattedValue}%`\n }\n\n if (operator === 'exists') {\n formattedValue = val === 'true' || val === true\n\n if (formattedValue) {\n operator = 'exists'\n } else {\n operator = 'isNull'\n }\n }\n\n return {\n columns: formattedColumns,\n operator,\n value: formattedValue,\n }\n}\n"],"names":["APIError","createArrayFromCommaDelineated","fieldAffectsData","validate","uuidValidate","getCollectionIdType","isPolymorphicRelationship","sanitizeQueryValue","adapter","columns","field","isUUID","operator","operatorArg","relationOrPath","val","formattedValue","formattedColumns","value","type","endsWith","Array","isArray","allPossibleIDTypes","forEach","idType","push","parseInt","String","toLowerCase","includes","map","arrayVal","parseFloat","length","Number","isNaN","Date","toISOString","parse","undefined","relationTo","collection","payload","collections","rawColumn","eachVal","filter","Boolean","hasMany","lng","lat","maxDistance","minDistance","split"],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  import type { QueryPromise, SQL } from 'drizzle-orm';
2
2
  import type { ChainedMethods } from '../find/chainMethods.js';
3
- import type { DrizzleAdapter, DrizzleTransaction } from '../types.js';
3
+ import type { DrizzleAdapter, DrizzleTransaction, GenericColumn } from '../types.js';
4
4
  import type { BuildQueryJoinAliases } from './buildQuery.js';
5
- import { type GenericColumn } from '../types.js';
6
5
  type Args = {
7
6
  adapter: DrizzleAdapter;
8
7
  chainedMethods?: ChainedMethods;
@@ -15,8 +14,8 @@ type Args = {
15
14
  /**
16
15
  * Selects distinct records from a table only if there are joins that need to be used, otherwise return null
17
16
  */
18
- export declare const selectDistinct: ({ adapter, chainedMethods, db, joins, selectFields, tableName, where, }: Args) => QueryPromise<Record<string, GenericColumn> & {
17
+ export declare const selectDistinct: ({ adapter, chainedMethods, db, joins, selectFields, tableName, where, }: Args) => QueryPromise<{
19
18
  id: number | string;
20
- }[]>;
19
+ }[] & Record<string, GenericColumn>>;
21
20
  export {};
22
21
  //# sourceMappingURL=selectDistinct.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"selectDistinct.d.ts","sourceRoot":"","sources":["../../src/queries/selectDistinct.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAGpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAInB,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAG5D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,EAAE,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAA;IAClD,KAAK,EAAE,qBAAqB,CAAA;IAC5B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,GAAG,CAAA;CACX,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,4EAQxB,IAAI,KAAG,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAAE,CAgC/E,CAAA"}
1
+ {"version":3,"file":"selectDistinct.d.ts","sourceRoot":"","sources":["../../src/queries/selectDistinct.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAGpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,aAAa,EAId,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAI5D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,EAAE,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAA;IAClD,KAAK,EAAE,qBAAqB,CAAA;IAC5B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,GAAG,CAAA;CACX,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,4EAQxB,IAAI,KAAG,YAAY,CAAC;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAgC/E,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/selectDistinct.ts"],"sourcesContent":["import type { QueryPromise, SQL } from 'drizzle-orm'\nimport type { SQLiteColumn } from 'drizzle-orm/sqlite-core'\n\nimport type { ChainedMethods } from '../find/chainMethods.js'\nimport type {\n DrizzleAdapter,\n DrizzleTransaction,\n GenericPgColumn,\n TransactionPg,\n TransactionSQLite,\n} from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\nimport { chainMethods } from '../find/chainMethods.js'\nimport { type GenericColumn } from '../types.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n chainedMethods?: ChainedMethods\n db: DrizzleAdapter['drizzle'] | DrizzleTransaction\n joins: BuildQueryJoinAliases\n selectFields: Record<string, GenericColumn>\n tableName: string\n where: SQL\n}\n\n/**\n * Selects distinct records from a table only if there are joins that need to be used, otherwise return null\n */\nexport const selectDistinct = ({\n adapter,\n chainedMethods = [],\n db,\n joins,\n selectFields,\n tableName,\n where,\n}: Args): QueryPromise<Record<string, GenericColumn> & { id: number | string }[]> => {\n if (Object.keys(joins).length > 0) {\n if (where) {\n chainedMethods.push({ args: [where], method: 'where' })\n }\n\n joins.forEach(({ condition, table }) => {\n chainedMethods.push({\n args: [table, condition],\n method: 'leftJoin',\n })\n })\n\n let query\n const table = adapter.tables[tableName]\n\n if (adapter.name === 'postgres') {\n query = (db as TransactionPg)\n .selectDistinct(selectFields as Record<string, GenericPgColumn>)\n .from(table)\n }\n if (adapter.name === 'sqlite') {\n query = (db as TransactionSQLite)\n .selectDistinct(selectFields as Record<string, SQLiteColumn>)\n .from(table)\n }\n\n return chainMethods({\n methods: chainedMethods,\n query,\n })\n }\n}\n"],"names":["chainMethods","selectDistinct","adapter","chainedMethods","db","joins","selectFields","tableName","where","Object","keys","length","push","args","method","forEach","condition","table","query","tables","name","from","methods"],"mappings":"AAaA,SAASA,YAAY,QAAQ,0BAAyB;AAatD;;CAEC,GACD,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,OAAO,EACPC,iBAAiB,EAAE,EACnBC,EAAE,EACFC,KAAK,EACLC,YAAY,EACZC,SAAS,EACTC,KAAK,EACA;IACL,IAAIC,OAAOC,IAAI,CAACL,OAAOM,MAAM,GAAG,GAAG;QACjC,IAAIH,OAAO;YACTL,eAAeS,IAAI,CAAC;gBAAEC,MAAM;oBAACL;iBAAM;gBAAEM,QAAQ;YAAQ;QACvD;QAEAT,MAAMU,OAAO,CAAC,CAAC,EAAEC,SAAS,EAAEC,KAAK,EAAE;YACjCd,eAAeS,IAAI,CAAC;gBAClBC,MAAM;oBAACI;oBAAOD;iBAAU;gBACxBF,QAAQ;YACV;QACF;QAEA,IAAII;QACJ,MAAMD,QAAQf,QAAQiB,MAAM,CAACZ,UAAU;QAEvC,IAAIL,QAAQkB,IAAI,KAAK,YAAY;YAC/BF,QAAQ,AAACd,GACNH,cAAc,CAACK,cACfe,IAAI,CAACJ;QACV;QACA,IAAIf,QAAQkB,IAAI,KAAK,UAAU;YAC7BF,QAAQ,AAACd,GACNH,cAAc,CAACK,cACfe,IAAI,CAACJ;QACV;QAEA,OAAOjB,aAAa;YAClBsB,SAASnB;YACTe;QACF;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/queries/selectDistinct.ts"],"sourcesContent":["import type { QueryPromise, SQL } from 'drizzle-orm'\nimport type { SQLiteColumn } from 'drizzle-orm/sqlite-core'\n\nimport type { ChainedMethods } from '../find/chainMethods.js'\nimport type {\n DrizzleAdapter,\n DrizzleTransaction,\n GenericColumn,\n GenericPgColumn,\n TransactionPg,\n TransactionSQLite,\n} from '../types.js'\nimport type { BuildQueryJoinAliases } from './buildQuery.js'\n\nimport { chainMethods } from '../find/chainMethods.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n chainedMethods?: ChainedMethods\n db: DrizzleAdapter['drizzle'] | DrizzleTransaction\n joins: BuildQueryJoinAliases\n selectFields: Record<string, GenericColumn>\n tableName: string\n where: SQL\n}\n\n/**\n * Selects distinct records from a table only if there are joins that need to be used, otherwise return null\n */\nexport const selectDistinct = ({\n adapter,\n chainedMethods = [],\n db,\n joins,\n selectFields,\n tableName,\n where,\n}: Args): QueryPromise<{ id: number | string }[] & Record<string, GenericColumn>> => {\n if (Object.keys(joins).length > 0) {\n if (where) {\n chainedMethods.push({ args: [where], method: 'where' })\n }\n\n joins.forEach(({ condition, table }) => {\n chainedMethods.push({\n args: [table, condition],\n method: 'leftJoin',\n })\n })\n\n let query\n const table = adapter.tables[tableName]\n\n if (adapter.name === 'postgres') {\n query = (db as TransactionPg)\n .selectDistinct(selectFields as Record<string, GenericPgColumn>)\n .from(table)\n }\n if (adapter.name === 'sqlite') {\n query = (db as TransactionSQLite)\n .selectDistinct(selectFields as Record<string, SQLiteColumn>)\n .from(table)\n }\n\n return chainMethods({\n methods: chainedMethods,\n query,\n })\n }\n}\n"],"names":["chainMethods","selectDistinct","adapter","chainedMethods","db","joins","selectFields","tableName","where","Object","keys","length","push","args","method","forEach","condition","table","query","tables","name","from","methods"],"mappings":"AAcA,SAASA,YAAY,QAAQ,0BAAyB;AAYtD;;CAEC,GACD,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,OAAO,EACPC,iBAAiB,EAAE,EACnBC,EAAE,EACFC,KAAK,EACLC,YAAY,EACZC,SAAS,EACTC,KAAK,EACA;IACL,IAAIC,OAAOC,IAAI,CAACL,OAAOM,MAAM,GAAG,GAAG;QACjC,IAAIH,OAAO;YACTL,eAAeS,IAAI,CAAC;gBAAEC,MAAM;oBAACL;iBAAM;gBAAEM,QAAQ;YAAQ;QACvD;QAEAT,MAAMU,OAAO,CAAC,CAAC,EAAEC,SAAS,EAAEC,KAAK,EAAE;YACjCd,eAAeS,IAAI,CAAC;gBAClBC,MAAM;oBAACI;oBAAOD;iBAAU;gBACxBF,QAAQ;YACV;QACF;QAEA,IAAII;QACJ,MAAMD,QAAQf,QAAQiB,MAAM,CAACZ,UAAU;QAEvC,IAAIL,QAAQkB,IAAI,KAAK,YAAY;YAC/BF,QAAQ,AAACd,GACNH,cAAc,CAACK,cACfe,IAAI,CAACJ;QACV;QACA,IAAIf,QAAQkB,IAAI,KAAK,UAAU;YAC7BF,QAAQ,AAACd,GACNH,cAAc,CAACK,cACfe,IAAI,CAACJ;QACV;QAEA,OAAOjB,aAAa;YAClBsB,SAASnB;YACTe;QACF;IACF;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"queryDrafts.d.ts","sourceRoot":"","sources":["../src/queryDrafts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,WAAW,EAA6B,MAAM,SAAS,CAAA;AASrF,eAAO,MAAM,WAAW,EAAE,WAuCzB,CAAA"}
1
+ {"version":3,"file":"queryDrafts.d.ts","sourceRoot":"","sources":["../src/queryDrafts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,WAAW,EAA6B,MAAM,SAAS,CAAA;AASrF,eAAO,MAAM,WAAW,EAAE,WAkDzB,CAAA"}
@@ -1,10 +1,10 @@
1
1
  import { buildVersionCollectionFields, combineQueries } from 'payload';
2
2
  import toSnakeCase from 'to-snake-case';
3
3
  import { findMany } from './find/findMany.js';
4
- export const queryDrafts = async function queryDrafts({ collection, limit, locale, page = 1, pagination, req = {}, sort, where }) {
4
+ export const queryDrafts = async function queryDrafts({ collection, joins, limit, locale, page = 1, pagination, req = {}, select, sort, where }) {
5
5
  const collectionConfig = this.payload.collections[collection].config;
6
6
  const tableName = this.tableNameMap.get(`_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`);
7
- const fields = buildVersionCollectionFields(collectionConfig);
7
+ const fields = buildVersionCollectionFields(this.payload.config, collectionConfig);
8
8
  const combinedWhere = combineQueries({
9
9
  latest: {
10
10
  equals: true
@@ -13,24 +13,24 @@ export const queryDrafts = async function queryDrafts({ collection, limit, local
13
13
  const result = await findMany({
14
14
  adapter: this,
15
15
  fields,
16
+ joins,
16
17
  limit,
17
18
  locale,
18
19
  page,
19
20
  pagination,
20
21
  req,
22
+ select,
21
23
  sort,
22
24
  tableName,
25
+ versions: true,
23
26
  where: combinedWhere
24
27
  });
25
28
  return {
26
29
  ...result,
27
30
  docs: result.docs.map((doc)=>{
28
- // eslint-disable-next-line no-param-reassign
29
31
  doc = {
30
32
  id: doc.parent,
31
- ...doc.version,
32
- createdAt: doc.createdAt,
33
- updatedAt: doc.updatedAt
33
+ ...doc.version
34
34
  };
35
35
  return doc;
36
36
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/queryDrafts.ts"],"sourcesContent":["import type { PayloadRequest, QueryDrafts, SanitizedCollectionConfig } from 'payload'\n\nimport { buildVersionCollectionFields, combineQueries } 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 queryDrafts: QueryDrafts = async function queryDrafts(\n this: DrizzleAdapter,\n { collection, limit, locale, page = 1, pagination, req = {} as PayloadRequest, sort, where },\n) {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`,\n )\n const fields = buildVersionCollectionFields(collectionConfig)\n\n const combinedWhere = combineQueries({ latest: { equals: true } }, where)\n\n const result = await findMany({\n adapter: this,\n fields,\n limit,\n locale,\n page,\n pagination,\n req,\n sort,\n tableName,\n where: combinedWhere,\n })\n\n return {\n ...result,\n docs: result.docs.map((doc) => {\n // eslint-disable-next-line no-param-reassign\n doc = {\n id: doc.parent,\n ...doc.version,\n createdAt: doc.createdAt,\n updatedAt: doc.updatedAt,\n }\n\n return doc\n }),\n }\n}\n"],"names":["buildVersionCollectionFields","combineQueries","toSnakeCase","findMany","queryDrafts","collection","limit","locale","page","pagination","req","sort","where","collectionConfig","payload","collections","config","tableName","tableNameMap","get","slug","versionsSuffix","fields","combinedWhere","latest","equals","result","adapter","docs","map","doc","id","parent","version","createdAt","updatedAt"],"mappings":"AAEA,SAASA,4BAA4B,EAAEC,cAAc,QAAQ,UAAS;AACtE,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,cAA2B,eAAeA,YAErD,EAAEC,UAAU,EAAEC,KAAK,EAAEC,MAAM,EAAEC,OAAO,CAAC,EAAEC,UAAU,EAAEC,MAAM,CAAC,CAAmB,EAAEC,IAAI,EAAEC,KAAK,EAAE;IAE5F,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACV,WAAW,CAACW,MAAM;IAC/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAEjB,YAAYW,iBAAiBO,IAAI,EAAE,EAAE,IAAI,CAACC,cAAc,CAAC,CAAC;IAEhE,MAAMC,SAAStB,6BAA6Ba;IAE5C,MAAMU,gBAAgBtB,eAAe;QAAEuB,QAAQ;YAAEC,QAAQ;QAAK;IAAE,GAAGb;IAEnE,MAAMc,SAAS,MAAMvB,SAAS;QAC5BwB,SAAS,IAAI;QACbL;QACAhB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAM;QACAL,OAAOW;IACT;IAEA,OAAO;QACL,GAAGG,MAAM;QACTE,MAAMF,OAAOE,IAAI,CAACC,GAAG,CAAC,CAACC;YACrB,6CAA6C;YAC7CA,MAAM;gBACJC,IAAID,IAAIE,MAAM;gBACd,GAAGF,IAAIG,OAAO;gBACdC,WAAWJ,IAAII,SAAS;gBACxBC,WAAWL,IAAIK,SAAS;YAC1B;YAEA,OAAOL;QACT;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../src/queryDrafts.ts"],"sourcesContent":["import type { PayloadRequest, QueryDrafts, SanitizedCollectionConfig } from 'payload'\n\nimport { buildVersionCollectionFields, combineQueries } 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 queryDrafts: QueryDrafts = async function queryDrafts(\n this: DrizzleAdapter,\n {\n collection,\n joins,\n limit,\n locale,\n page = 1,\n pagination,\n req = {} as PayloadRequest,\n select,\n sort,\n where,\n },\n) {\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`,\n )\n const fields = buildVersionCollectionFields(this.payload.config, collectionConfig)\n\n const combinedWhere = combineQueries({ latest: { equals: true } }, where)\n\n const result = await findMany({\n adapter: this,\n fields,\n joins,\n limit,\n locale,\n page,\n pagination,\n req,\n select,\n sort,\n tableName,\n versions: true,\n where: combinedWhere,\n })\n\n return {\n ...result,\n docs: result.docs.map((doc) => {\n doc = {\n id: doc.parent,\n ...doc.version,\n }\n\n return doc\n }),\n }\n}\n"],"names":["buildVersionCollectionFields","combineQueries","toSnakeCase","findMany","queryDrafts","collection","joins","limit","locale","page","pagination","req","select","sort","where","collectionConfig","payload","collections","config","tableName","tableNameMap","get","slug","versionsSuffix","fields","combinedWhere","latest","equals","result","adapter","versions","docs","map","doc","id","parent","version"],"mappings":"AAEA,SAASA,4BAA4B,EAAEC,cAAc,QAAQ,UAAS;AACtE,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAE7C,OAAO,MAAMC,cAA2B,eAAeA,YAErD,EACEC,UAAU,EACVC,KAAK,EACLC,KAAK,EACLC,MAAM,EACNC,OAAO,CAAC,EACRC,UAAU,EACVC,MAAM,CAAC,CAAmB,EAC1BC,MAAM,EACNC,IAAI,EACJC,KAAK,EACN;IAED,MAAMC,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACZ,WAAW,CAACa,MAAM;IAC/F,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAEnB,YAAYa,iBAAiBO,IAAI,EAAE,EAAE,IAAI,CAACC,cAAc,CAAC,CAAC;IAEhE,MAAMC,SAASxB,6BAA6B,IAAI,CAACgB,OAAO,CAACE,MAAM,EAAEH;IAEjE,MAAMU,gBAAgBxB,eAAe;QAAEyB,QAAQ;YAAEC,QAAQ;QAAK;IAAE,GAAGb;IAEnE,MAAMc,SAAS,MAAMzB,SAAS;QAC5B0B,SAAS,IAAI;QACbL;QACAlB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAM;QACAW,UAAU;QACVhB,OAAOW;IACT;IAEA,OAAO;QACL,GAAGG,MAAM;QACTG,MAAMH,OAAOG,IAAI,CAACC,GAAG,CAAC,CAACC;YACrBA,MAAM;gBACJC,IAAID,IAAIE,MAAM;gBACd,GAAGF,IAAIG,OAAO;YAChB;YAEA,OAAOH;QACT;IACF;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"beginTransaction.d.ts","sourceRoot":"","sources":["../../src/transactions/beginTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAM/C,eAAO,MAAM,gBAAgB,EAAE,gBA0D9B,CAAA"}
1
+ {"version":3,"file":"beginTransaction.d.ts","sourceRoot":"","sources":["../../src/transactions/beginTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAM/C,eAAO,MAAM,gBAAgB,EAAE,gBA2D9B,CAAA"}
@@ -24,6 +24,7 @@ export const beginTransaction = async function beginTransaction(options) {
24
24
  return done;
25
25
  };
26
26
  reject = ()=>{
27
+ // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
27
28
  rej();
28
29
  return done;
29
30
  };
@@ -41,7 +42,10 @@ export const beginTransaction = async function beginTransaction(options) {
41
42
  resolve
42
43
  };
43
44
  } catch (err) {
44
- this.payload.logger.error(`Error: cannot begin transaction: ${err.message}`, err);
45
+ this.payload.logger.error({
46
+ err,
47
+ msg: `Error: cannot begin transaction: ${err.message}`
48
+ });
45
49
  process.exit(1);
46
50
  }
47
51
  return id;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/transactions/beginTransaction.ts"],"sourcesContent":["import type { BeginTransaction } from 'payload'\n\nimport { v4 as uuid } from 'uuid'\n\nimport type { DrizzleAdapter, DrizzleTransaction } from '../types.js'\n\nexport const beginTransaction: BeginTransaction = async function beginTransaction(\n this: DrizzleAdapter,\n options: DrizzleAdapter['transactionOptions'],\n) {\n let id\n try {\n id = uuid()\n\n let reject: () => Promise<void>\n let resolve: () => Promise<void>\n let transaction: DrizzleTransaction\n\n let transactionReady: () => void\n\n // Await initialization here\n // Prevent race conditions where the adapter may be\n // re-initializing, and `this.drizzle` is potentially undefined\n await this.initializing\n\n // Drizzle only exposes a transactions API that is sufficient if you\n // can directly pass around the `tx` argument. But our operations are spread\n // over many files and we don't want to pass the `tx` around like that,\n // so instead, we \"lift\" up the `resolve` and `reject` methods\n // and will call them in our respective transaction methods\n const done = this.drizzle\n .transaction(async (tx) => {\n transaction = tx\n await new Promise<void>((res, rej) => {\n resolve = () => {\n res()\n return done\n }\n reject = () => {\n rej()\n return done\n }\n transactionReady()\n })\n }, options || this.transactionOptions)\n .catch(() => {\n // swallow\n })\n\n // Need to wait until the transaction is ready\n // before binding its `resolve` and `reject` methods below\n await new Promise<void>((resolve) => (transactionReady = resolve))\n\n this.sessions[id] = {\n db: transaction,\n reject,\n resolve,\n }\n } catch (err) {\n this.payload.logger.error(`Error: cannot begin transaction: ${err.message}`, err)\n process.exit(1)\n }\n\n return id\n}\n"],"names":["v4","uuid","beginTransaction","options","id","reject","resolve","transaction","transactionReady","initializing","done","drizzle","tx","Promise","res","rej","transactionOptions","catch","sessions","db","err","payload","logger","error","message","process","exit"],"mappings":"AAEA,SAASA,MAAMC,IAAI,QAAQ,OAAM;AAIjC,OAAO,MAAMC,mBAAqC,eAAeA,iBAE/DC,OAA6C;IAE7C,IAAIC;IACJ,IAAI;QACFA,KAAKH;QAEL,IAAII;QACJ,IAAIC;QACJ,IAAIC;QAEJ,IAAIC;QAEJ,4BAA4B;QAC5B,mDAAmD;QACnD,+DAA+D;QAC/D,MAAM,IAAI,CAACC,YAAY;QAEvB,oEAAoE;QACpE,4EAA4E;QAC5E,uEAAuE;QACvE,8DAA8D;QAC9D,2DAA2D;QAC3D,MAAMC,OAAO,IAAI,CAACC,OAAO,CACtBJ,WAAW,CAAC,OAAOK;YAClBL,cAAcK;YACd,MAAM,IAAIC,QAAc,CAACC,KAAKC;gBAC5BT,UAAU;oBACRQ;oBACA,OAAOJ;gBACT;gBACAL,SAAS;oBACPU;oBACA,OAAOL;gBACT;gBACAF;YACF;QACF,GAAGL,WAAW,IAAI,CAACa,kBAAkB,EACpCC,KAAK,CAAC;QACL,UAAU;QACZ;QAEF,8CAA8C;QAC9C,0DAA0D;QAC1D,MAAM,IAAIJ,QAAc,CAACP,UAAaE,mBAAmBF;QAEzD,IAAI,CAACY,QAAQ,CAACd,GAAG,GAAG;YAClBe,IAAIZ;YACJF;YACAC;QACF;IACF,EAAE,OAAOc,KAAK;QACZ,IAAI,CAACC,OAAO,CAACC,MAAM,CAACC,KAAK,CAAC,CAAC,iCAAiC,EAAEH,IAAII,OAAO,CAAC,CAAC,EAAEJ;QAC7EK,QAAQC,IAAI,CAAC;IACf;IAEA,OAAOtB;AACT,EAAC"}
1
+ {"version":3,"sources":["../../src/transactions/beginTransaction.ts"],"sourcesContent":["import type { BeginTransaction } from 'payload'\n\nimport { v4 as uuid } from 'uuid'\n\nimport type { DrizzleAdapter, DrizzleTransaction } from '../types.js'\n\nexport const beginTransaction: BeginTransaction = async function beginTransaction(\n this: DrizzleAdapter,\n options: DrizzleAdapter['transactionOptions'],\n) {\n let id\n try {\n id = uuid()\n\n let reject: () => Promise<void>\n let resolve: () => Promise<void>\n let transaction: DrizzleTransaction\n\n let transactionReady: () => void\n\n // Await initialization here\n // Prevent race conditions where the adapter may be\n // re-initializing, and `this.drizzle` is potentially undefined\n await this.initializing\n\n // Drizzle only exposes a transactions API that is sufficient if you\n // can directly pass around the `tx` argument. But our operations are spread\n // over many files and we don't want to pass the `tx` around like that,\n // so instead, we \"lift\" up the `resolve` and `reject` methods\n // and will call them in our respective transaction methods\n const done = this.drizzle\n .transaction(async (tx) => {\n transaction = tx\n await new Promise<void>((res, rej) => {\n resolve = () => {\n res()\n return done\n }\n reject = () => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n rej()\n return done\n }\n transactionReady()\n })\n }, options || this.transactionOptions)\n .catch(() => {\n // swallow\n })\n\n // Need to wait until the transaction is ready\n // before binding its `resolve` and `reject` methods below\n await new Promise<void>((resolve) => (transactionReady = resolve))\n\n this.sessions[id] = {\n db: transaction,\n reject,\n resolve,\n }\n } catch (err) {\n this.payload.logger.error({ err, msg: `Error: cannot begin transaction: ${err.message}` })\n process.exit(1)\n }\n\n return id\n}\n"],"names":["v4","uuid","beginTransaction","options","id","reject","resolve","transaction","transactionReady","initializing","done","drizzle","tx","Promise","res","rej","transactionOptions","catch","sessions","db","err","payload","logger","error","msg","message","process","exit"],"mappings":"AAEA,SAASA,MAAMC,IAAI,QAAQ,OAAM;AAIjC,OAAO,MAAMC,mBAAqC,eAAeA,iBAE/DC,OAA6C;IAE7C,IAAIC;IACJ,IAAI;QACFA,KAAKH;QAEL,IAAII;QACJ,IAAIC;QACJ,IAAIC;QAEJ,IAAIC;QAEJ,4BAA4B;QAC5B,mDAAmD;QACnD,+DAA+D;QAC/D,MAAM,IAAI,CAACC,YAAY;QAEvB,oEAAoE;QACpE,4EAA4E;QAC5E,uEAAuE;QACvE,8DAA8D;QAC9D,2DAA2D;QAC3D,MAAMC,OAAO,IAAI,CAACC,OAAO,CACtBJ,WAAW,CAAC,OAAOK;YAClBL,cAAcK;YACd,MAAM,IAAIC,QAAc,CAACC,KAAKC;gBAC5BT,UAAU;oBACRQ;oBACA,OAAOJ;gBACT;gBACAL,SAAS;oBACP,2EAA2E;oBAC3EU;oBACA,OAAOL;gBACT;gBACAF;YACF;QACF,GAAGL,WAAW,IAAI,CAACa,kBAAkB,EACpCC,KAAK,CAAC;QACL,UAAU;QACZ;QAEF,8CAA8C;QAC9C,0DAA0D;QAC1D,MAAM,IAAIJ,QAAc,CAACP,UAAaE,mBAAmBF;QAEzD,IAAI,CAACY,QAAQ,CAACd,GAAG,GAAG;YAClBe,IAAIZ;YACJF;YACAC;QACF;IACF,EAAE,OAAOc,KAAK;QACZ,IAAI,CAACC,OAAO,CAACC,MAAM,CAACC,KAAK,CAAC;YAAEH;YAAKI,KAAK,CAAC,iCAAiC,EAAEJ,IAAIK,OAAO,CAAC,CAAC;QAAC;QACxFC,QAAQC,IAAI,CAAC;IACf;IAEA,OAAOvB;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"commitTransaction.d.ts","sourceRoot":"","sources":["../../src/transactions/commitTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAEhD,eAAO,MAAM,iBAAiB,EAAE,iBAe/B,CAAA"}
1
+ {"version":3,"file":"commitTransaction.d.ts","sourceRoot":"","sources":["../../src/transactions/commitTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAEhD,eAAO,MAAM,iBAAiB,EAAE,iBAiB/B,CAAA"}
@@ -1,5 +1,7 @@
1
1
  export const commitTransaction = async function commitTransaction(id) {
2
- if (id instanceof Promise) return;
2
+ if (id instanceof Promise) {
3
+ return;
4
+ }
3
5
  // if the session was deleted it has already been aborted
4
6
  if (!this.sessions[id]) {
5
7
  return;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/transactions/commitTransaction.ts"],"sourcesContent":["import type { CommitTransaction } from 'payload'\n\nexport const commitTransaction: CommitTransaction = async function commitTransaction(id) {\n if (id instanceof Promise) return\n\n // if the session was deleted it has already been aborted\n if (!this.sessions[id]) {\n return\n }\n\n try {\n await this.sessions[id].resolve()\n } catch (err: unknown) {\n await this.sessions[id].reject()\n }\n\n delete this.sessions[id]\n}\n"],"names":["commitTransaction","id","Promise","sessions","resolve","err","reject"],"mappings":"AAEA,OAAO,MAAMA,oBAAuC,eAAeA,kBAAkBC,EAAE;IACrF,IAAIA,cAAcC,SAAS;IAE3B,yDAAyD;IACzD,IAAI,CAAC,IAAI,CAACC,QAAQ,CAACF,GAAG,EAAE;QACtB;IACF;IAEA,IAAI;QACF,MAAM,IAAI,CAACE,QAAQ,CAACF,GAAG,CAACG,OAAO;IACjC,EAAE,OAAOC,KAAc;QACrB,MAAM,IAAI,CAACF,QAAQ,CAACF,GAAG,CAACK,MAAM;IAChC;IAEA,OAAO,IAAI,CAACH,QAAQ,CAACF,GAAG;AAC1B,EAAC"}
1
+ {"version":3,"sources":["../../src/transactions/commitTransaction.ts"],"sourcesContent":["import type { CommitTransaction } from 'payload'\n\nexport const commitTransaction: CommitTransaction = async function commitTransaction(id) {\n if (id instanceof Promise) {\n return\n }\n\n // if the session was deleted it has already been aborted\n if (!this.sessions[id]) {\n return\n }\n\n try {\n await this.sessions[id].resolve()\n } catch (err: unknown) {\n await this.sessions[id].reject()\n }\n\n delete this.sessions[id]\n}\n"],"names":["commitTransaction","id","Promise","sessions","resolve","err","reject"],"mappings":"AAEA,OAAO,MAAMA,oBAAuC,eAAeA,kBAAkBC,EAAE;IACrF,IAAIA,cAAcC,SAAS;QACzB;IACF;IAEA,yDAAyD;IACzD,IAAI,CAAC,IAAI,CAACC,QAAQ,CAACF,GAAG,EAAE;QACtB;IACF;IAEA,IAAI;QACF,MAAM,IAAI,CAACE,QAAQ,CAACF,GAAG,CAACG,OAAO;IACjC,EAAE,OAAOC,KAAc;QACrB,MAAM,IAAI,CAACF,QAAQ,CAACF,GAAG,CAACK,MAAM;IAChC;IAEA,OAAO,IAAI,CAACH,QAAQ,CAACF,GAAG;AAC1B,EAAC"}
@@ -4,7 +4,8 @@ type Args = {
4
4
  locale?: string;
5
5
  numberRows: Record<string, unknown>[];
6
6
  ref: Record<string, unknown>;
7
+ withinArrayOrBlockLocale?: string;
7
8
  };
8
- export declare const transformHasManyNumber: ({ field, locale, numberRows, ref }: Args) => void;
9
+ export declare const transformHasManyNumber: ({ field, locale, numberRows, ref, withinArrayOrBlockLocale, }: Args) => void;
9
10
  export {};
10
11
  //# sourceMappingURL=hasManyNumber.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hasManyNumber.d.ts","sourceRoot":"","sources":["../../../src/transform/read/hasManyNumber.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,WAAW,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACrC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B,CAAA;AAED,eAAO,MAAM,sBAAsB,uCAAwC,IAAI,SAQ9E,CAAA"}
1
+ {"version":3,"file":"hasManyNumber.d.ts","sourceRoot":"","sources":["../../../src/transform/read/hasManyNumber.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,WAAW,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACrC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,sBAAsB,kEAMhC,IAAI,SAoBN,CAAA"}
@@ -1,5 +1,15 @@
1
- /* eslint-disable no-param-reassign */ export const transformHasManyNumber = ({ field, locale, numberRows, ref })=>{
2
- const result = numberRows.map(({ number })=>number);
1
+ export const transformHasManyNumber = ({ field, locale, numberRows, ref, withinArrayOrBlockLocale })=>{
2
+ let result;
3
+ if (withinArrayOrBlockLocale) {
4
+ result = numberRows.reduce((acc, { locale, number })=>{
5
+ if (locale === withinArrayOrBlockLocale) {
6
+ acc.push(number);
7
+ }
8
+ return acc;
9
+ }, []);
10
+ } else {
11
+ result = numberRows.map(({ number })=>number);
12
+ }
3
13
  if (locale) {
4
14
  ref[field.name][locale] = result;
5
15
  } else {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/transform/read/hasManyNumber.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { NumberField } from 'payload'\n\ntype Args = {\n field: NumberField\n locale?: string\n numberRows: Record<string, unknown>[]\n ref: Record<string, unknown>\n}\n\nexport const transformHasManyNumber = ({ field, locale, numberRows, ref }: Args) => {\n const result = numberRows.map(({ number }) => number)\n\n if (locale) {\n ref[field.name][locale] = result\n } else {\n ref[field.name] = result\n }\n}\n"],"names":["transformHasManyNumber","field","locale","numberRows","ref","result","map","number","name"],"mappings":"AAAA,oCAAoC,GAUpC,OAAO,MAAMA,yBAAyB,CAAC,EAAEC,KAAK,EAAEC,MAAM,EAAEC,UAAU,EAAEC,GAAG,EAAQ;IAC7E,MAAMC,SAASF,WAAWG,GAAG,CAAC,CAAC,EAAEC,MAAM,EAAE,GAAKA;IAE9C,IAAIL,QAAQ;QACVE,GAAG,CAACH,MAAMO,IAAI,CAAC,CAACN,OAAO,GAAGG;IAC5B,OAAO;QACLD,GAAG,CAACH,MAAMO,IAAI,CAAC,GAAGH;IACpB;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/transform/read/hasManyNumber.ts"],"sourcesContent":["import type { NumberField } from 'payload'\n\ntype Args = {\n field: NumberField\n locale?: string\n numberRows: Record<string, unknown>[]\n ref: Record<string, unknown>\n withinArrayOrBlockLocale?: string\n}\n\nexport const transformHasManyNumber = ({\n field,\n locale,\n numberRows,\n ref,\n withinArrayOrBlockLocale,\n}: Args) => {\n let result: unknown[]\n\n if (withinArrayOrBlockLocale) {\n result = numberRows.reduce((acc, { locale, number }) => {\n if (locale === withinArrayOrBlockLocale) {\n acc.push(number)\n }\n\n return acc\n }, [])\n } else {\n result = numberRows.map(({ number }) => number)\n }\n\n if (locale) {\n ref[field.name][locale] = result\n } else {\n ref[field.name] = result\n }\n}\n"],"names":["transformHasManyNumber","field","locale","numberRows","ref","withinArrayOrBlockLocale","result","reduce","acc","number","push","map","name"],"mappings":"AAUA,OAAO,MAAMA,yBAAyB,CAAC,EACrCC,KAAK,EACLC,MAAM,EACNC,UAAU,EACVC,GAAG,EACHC,wBAAwB,EACnB;IACL,IAAIC;IAEJ,IAAID,0BAA0B;QAC5BC,SAASH,WAAWI,MAAM,CAAC,CAACC,KAAK,EAAEN,MAAM,EAAEO,MAAM,EAAE;YACjD,IAAIP,WAAWG,0BAA0B;gBACvCG,IAAIE,IAAI,CAACD;YACX;YAEA,OAAOD;QACT,GAAG,EAAE;IACP,OAAO;QACLF,SAASH,WAAWQ,GAAG,CAAC,CAAC,EAAEF,MAAM,EAAE,GAAKA;IAC1C;IAEA,IAAIP,QAAQ;QACVE,GAAG,CAACH,MAAMW,IAAI,CAAC,CAACV,OAAO,GAAGI;IAC5B,OAAO;QACLF,GAAG,CAACH,MAAMW,IAAI,CAAC,GAAGN;IACpB;AACF,EAAC"}
@@ -4,7 +4,8 @@ type Args = {
4
4
  locale?: string;
5
5
  ref: Record<string, unknown>;
6
6
  textRows: Record<string, unknown>[];
7
+ withinArrayOrBlockLocale?: string;
7
8
  };
8
- export declare const transformHasManyText: ({ field, locale, ref, textRows }: Args) => void;
9
+ export declare const transformHasManyText: ({ field, locale, ref, textRows, withinArrayOrBlockLocale, }: Args) => void;
9
10
  export {};
10
11
  //# sourceMappingURL=hasManyText.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hasManyText.d.ts","sourceRoot":"","sources":["../../../src/transform/read/hasManyText.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,oBAAoB,qCAAsC,IAAI,SAQ1E,CAAA"}
1
+ {"version":3,"file":"hasManyText.d.ts","sourceRoot":"","sources":["../../../src/transform/read/hasManyText.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACnC,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,oBAAoB,gEAM9B,IAAI,SAoBN,CAAA"}
@@ -1,5 +1,15 @@
1
- /* eslint-disable no-param-reassign */ export const transformHasManyText = ({ field, locale, ref, textRows })=>{
2
- const result = textRows.map(({ text })=>text);
1
+ export const transformHasManyText = ({ field, locale, ref, textRows, withinArrayOrBlockLocale })=>{
2
+ let result;
3
+ if (withinArrayOrBlockLocale) {
4
+ result = textRows.reduce((acc, { locale, text })=>{
5
+ if (locale === withinArrayOrBlockLocale) {
6
+ acc.push(text);
7
+ }
8
+ return acc;
9
+ }, []);
10
+ } else {
11
+ result = textRows.map(({ text })=>text);
12
+ }
3
13
  if (locale) {
4
14
  ref[field.name][locale] = result;
5
15
  } else {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/transform/read/hasManyText.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { TextField } from 'payload'\n\ntype Args = {\n field: TextField\n locale?: string\n ref: Record<string, unknown>\n textRows: Record<string, unknown>[]\n}\n\nexport const transformHasManyText = ({ field, locale, ref, textRows }: Args) => {\n const result = textRows.map(({ text }) => text)\n\n if (locale) {\n ref[field.name][locale] = result\n } else {\n ref[field.name] = result\n }\n}\n"],"names":["transformHasManyText","field","locale","ref","textRows","result","map","text","name"],"mappings":"AAAA,oCAAoC,GAUpC,OAAO,MAAMA,uBAAuB,CAAC,EAAEC,KAAK,EAAEC,MAAM,EAAEC,GAAG,EAAEC,QAAQ,EAAQ;IACzE,MAAMC,SAASD,SAASE,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA;IAE1C,IAAIL,QAAQ;QACVC,GAAG,CAACF,MAAMO,IAAI,CAAC,CAACN,OAAO,GAAGG;IAC5B,OAAO;QACLF,GAAG,CAACF,MAAMO,IAAI,CAAC,GAAGH;IACpB;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/transform/read/hasManyText.ts"],"sourcesContent":["import type { TextField } from 'payload'\n\ntype Args = {\n field: TextField\n locale?: string\n ref: Record<string, unknown>\n textRows: Record<string, unknown>[]\n withinArrayOrBlockLocale?: string\n}\n\nexport const transformHasManyText = ({\n field,\n locale,\n ref,\n textRows,\n withinArrayOrBlockLocale,\n}: Args) => {\n let result: unknown[]\n\n if (withinArrayOrBlockLocale) {\n result = textRows.reduce((acc, { locale, text }) => {\n if (locale === withinArrayOrBlockLocale) {\n acc.push(text)\n }\n\n return acc\n }, [])\n } else {\n result = textRows.map(({ text }) => text)\n }\n\n if (locale) {\n ref[field.name][locale] = result\n } else {\n ref[field.name] = result\n }\n}\n"],"names":["transformHasManyText","field","locale","ref","textRows","withinArrayOrBlockLocale","result","reduce","acc","text","push","map","name"],"mappings":"AAUA,OAAO,MAAMA,uBAAuB,CAAC,EACnCC,KAAK,EACLC,MAAM,EACNC,GAAG,EACHC,QAAQ,EACRC,wBAAwB,EACnB;IACL,IAAIC;IAEJ,IAAID,0BAA0B;QAC5BC,SAASF,SAASG,MAAM,CAAC,CAACC,KAAK,EAAEN,MAAM,EAAEO,IAAI,EAAE;YAC7C,IAAIP,WAAWG,0BAA0B;gBACvCG,IAAIE,IAAI,CAACD;YACX;YAEA,OAAOD;QACT,GAAG,EAAE;IACP,OAAO;QACLF,SAASF,SAASO,GAAG,CAAC,CAAC,EAAEF,IAAI,EAAE,GAAKA;IACtC;IAEA,IAAIP,QAAQ;QACVC,GAAG,CAACF,MAAMW,IAAI,CAAC,CAACV,OAAO,GAAGI;IAC5B,OAAO;QACLH,GAAG,CAACF,MAAMW,IAAI,CAAC,GAAGN;IACpB;AACF,EAAC"}
@@ -1,4 +1,4 @@
1
- import type { Field, SanitizedConfig, TypeWithID } from 'payload';
1
+ import type { Field, JoinQuery, SanitizedConfig, TypeWithID } from 'payload';
2
2
  import type { DrizzleAdapter } from '../../types.js';
3
3
  type TransformArgs = {
4
4
  adapter: DrizzleAdapter;
@@ -6,8 +6,9 @@ type TransformArgs = {
6
6
  data: Record<string, unknown>;
7
7
  fallbackLocale?: false | string;
8
8
  fields: Field[];
9
+ joinQuery?: JoinQuery;
9
10
  locale?: string;
10
11
  };
11
- export declare const transform: <T extends Record<string, unknown> | TypeWithID>({ adapter, config, data, fields, }: TransformArgs) => T;
12
+ export declare const transform: <T extends Record<string, unknown> | TypeWithID>({ adapter, config, data, fields, joinQuery, }: TransformArgs) => T;
12
13
  export {};
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transform/read/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAMpD,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,cAAc,CAAA;IACvB,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IAC/B,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAID,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,sCAKrE,aAAa,KAAG,CA2ClB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transform/read/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAE5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAMpD,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,cAAc,CAAA;IACvB,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IAC/B,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAID,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,iDAMrE,aAAa,KAAG,CA4ClB,CAAA"}
@@ -1,9 +1,9 @@
1
- /* eslint-disable no-param-reassign */ import { createBlocksMap } from '../../utilities/createBlocksMap.js';
1
+ import { createBlocksMap } from '../../utilities/createBlocksMap.js';
2
2
  import { createPathMap } from '../../utilities/createRelationshipMap.js';
3
3
  import { traverseFields } from './traverseFields.js';
4
4
  // This is the entry point to transform Drizzle output data
5
5
  // into the shape Payload expects based on field schema
6
- export const transform = ({ adapter, config, data, fields })=>{
6
+ export const transform = ({ adapter, config, data, fields, joinQuery })=>{
7
7
  let relationships = {};
8
8
  let texts = {};
9
9
  let numbers = {};
@@ -31,6 +31,7 @@ export const transform = ({ adapter, config, data, fields })=>{
31
31
  deletions,
32
32
  fieldPrefix: '',
33
33
  fields,
34
+ joinQuery,
34
35
  numbers,
35
36
  path: '',
36
37
  relationships,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/transform/read/index.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { Field, SanitizedConfig, TypeWithID } from 'payload'\n\nimport type { DrizzleAdapter } from '../../types.js'\n\nimport { createBlocksMap } from '../../utilities/createBlocksMap.js'\nimport { createPathMap } from '../../utilities/createRelationshipMap.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype TransformArgs = {\n adapter: DrizzleAdapter\n config: SanitizedConfig\n data: Record<string, unknown>\n fallbackLocale?: false | string\n fields: Field[]\n locale?: string\n}\n\n// This is the entry point to transform Drizzle output data\n// into the shape Payload expects based on field schema\nexport const transform = <T extends Record<string, unknown> | TypeWithID>({\n adapter,\n config,\n data,\n fields,\n}: TransformArgs): T => {\n let relationships: Record<string, Record<string, unknown>[]> = {}\n let texts: Record<string, Record<string, unknown>[]> = {}\n let numbers: Record<string, Record<string, unknown>[]> = {}\n\n if ('_rels' in data) {\n relationships = createPathMap(data._rels)\n delete data._rels\n }\n\n if ('_texts' in data) {\n texts = createPathMap(data._texts)\n delete data._texts\n }\n\n if ('_numbers' in data) {\n numbers = createPathMap(data._numbers)\n delete data._numbers\n }\n\n const blocks = createBlocksMap(data)\n const deletions = []\n\n const result = traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: {\n id: data.id,\n },\n deletions,\n fieldPrefix: '',\n fields,\n numbers,\n path: '',\n relationships,\n table: data,\n texts,\n })\n\n deletions.forEach((deletion) => deletion())\n\n return result\n}\n"],"names":["createBlocksMap","createPathMap","traverseFields","transform","adapter","config","data","fields","relationships","texts","numbers","_rels","_texts","_numbers","blocks","deletions","result","dataRef","id","fieldPrefix","path","table","forEach","deletion"],"mappings":"AAAA,oCAAoC,GAKpC,SAASA,eAAe,QAAQ,qCAAoC;AACpE,SAASC,aAAa,QAAQ,2CAA0C;AACxE,SAASC,cAAc,QAAQ,sBAAqB;AAWpD,2DAA2D;AAC3D,uDAAuD;AACvD,OAAO,MAAMC,YAAY,CAAiD,EACxEC,OAAO,EACPC,MAAM,EACNC,IAAI,EACJC,MAAM,EACQ;IACd,IAAIC,gBAA2D,CAAC;IAChE,IAAIC,QAAmD,CAAC;IACxD,IAAIC,UAAqD,CAAC;IAE1D,IAAI,WAAWJ,MAAM;QACnBE,gBAAgBP,cAAcK,KAAKK,KAAK;QACxC,OAAOL,KAAKK,KAAK;IACnB;IAEA,IAAI,YAAYL,MAAM;QACpBG,QAAQR,cAAcK,KAAKM,MAAM;QACjC,OAAON,KAAKM,MAAM;IACpB;IAEA,IAAI,cAAcN,MAAM;QACtBI,UAAUT,cAAcK,KAAKO,QAAQ;QACrC,OAAOP,KAAKO,QAAQ;IACtB;IAEA,MAAMC,SAASd,gBAAgBM;IAC/B,MAAMS,YAAY,EAAE;IAEpB,MAAMC,SAASd,eAAkB;QAC/BE;QACAU;QACAT;QACAY,SAAS;YACPC,IAAIZ,KAAKY,EAAE;QACb;QACAH;QACAI,aAAa;QACbZ;QACAG;QACAU,MAAM;QACNZ;QACAa,OAAOf;QACPG;IACF;IAEAM,UAAUO,OAAO,CAAC,CAACC,WAAaA;IAEhC,OAAOP;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../src/transform/read/index.ts"],"sourcesContent":["import type { Field, JoinQuery, SanitizedConfig, TypeWithID } from 'payload'\n\nimport type { DrizzleAdapter } from '../../types.js'\n\nimport { createBlocksMap } from '../../utilities/createBlocksMap.js'\nimport { createPathMap } from '../../utilities/createRelationshipMap.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype TransformArgs = {\n adapter: DrizzleAdapter\n config: SanitizedConfig\n data: Record<string, unknown>\n fallbackLocale?: false | string\n fields: Field[]\n joinQuery?: JoinQuery\n locale?: string\n}\n\n// This is the entry point to transform Drizzle output data\n// into the shape Payload expects based on field schema\nexport const transform = <T extends Record<string, unknown> | TypeWithID>({\n adapter,\n config,\n data,\n fields,\n joinQuery,\n}: TransformArgs): T => {\n let relationships: Record<string, Record<string, unknown>[]> = {}\n let texts: Record<string, Record<string, unknown>[]> = {}\n let numbers: Record<string, Record<string, unknown>[]> = {}\n\n if ('_rels' in data) {\n relationships = createPathMap(data._rels)\n delete data._rels\n }\n\n if ('_texts' in data) {\n texts = createPathMap(data._texts)\n delete data._texts\n }\n\n if ('_numbers' in data) {\n numbers = createPathMap(data._numbers)\n delete data._numbers\n }\n\n const blocks = createBlocksMap(data)\n const deletions = []\n\n const result = traverseFields<T>({\n adapter,\n blocks,\n config,\n dataRef: {\n id: data.id,\n },\n deletions,\n fieldPrefix: '',\n fields,\n joinQuery,\n numbers,\n path: '',\n relationships,\n table: data,\n texts,\n })\n\n deletions.forEach((deletion) => deletion())\n\n return result\n}\n"],"names":["createBlocksMap","createPathMap","traverseFields","transform","adapter","config","data","fields","joinQuery","relationships","texts","numbers","_rels","_texts","_numbers","blocks","deletions","result","dataRef","id","fieldPrefix","path","table","forEach","deletion"],"mappings":"AAIA,SAASA,eAAe,QAAQ,qCAAoC;AACpE,SAASC,aAAa,QAAQ,2CAA0C;AACxE,SAASC,cAAc,QAAQ,sBAAqB;AAYpD,2DAA2D;AAC3D,uDAAuD;AACvD,OAAO,MAAMC,YAAY,CAAiD,EACxEC,OAAO,EACPC,MAAM,EACNC,IAAI,EACJC,MAAM,EACNC,SAAS,EACK;IACd,IAAIC,gBAA2D,CAAC;IAChE,IAAIC,QAAmD,CAAC;IACxD,IAAIC,UAAqD,CAAC;IAE1D,IAAI,WAAWL,MAAM;QACnBG,gBAAgBR,cAAcK,KAAKM,KAAK;QACxC,OAAON,KAAKM,KAAK;IACnB;IAEA,IAAI,YAAYN,MAAM;QACpBI,QAAQT,cAAcK,KAAKO,MAAM;QACjC,OAAOP,KAAKO,MAAM;IACpB;IAEA,IAAI,cAAcP,MAAM;QACtBK,UAAUV,cAAcK,KAAKQ,QAAQ;QACrC,OAAOR,KAAKQ,QAAQ;IACtB;IAEA,MAAMC,SAASf,gBAAgBM;IAC/B,MAAMU,YAAY,EAAE;IAEpB,MAAMC,SAASf,eAAkB;QAC/BE;QACAW;QACAV;QACAa,SAAS;YACPC,IAAIb,KAAKa,EAAE;QACb;QACAH;QACAI,aAAa;QACbb;QACAC;QACAG;QACAU,MAAM;QACNZ;QACAa,OAAOhB;QACPI;IACF;IAEAM,UAAUO,OAAO,CAAC,CAACC,WAAaA;IAEhC,OAAOP;AACT,EAAC"}
@@ -4,7 +4,8 @@ type Args = {
4
4
  locale?: string;
5
5
  ref: Record<string, unknown>;
6
6
  relations: Record<string, unknown>[];
7
+ withinArrayOrBlockLocale?: string;
7
8
  };
8
- export declare const transformRelationship: ({ field, locale, ref, relations }: Args) => void;
9
+ export declare const transformRelationship: ({ field, locale, ref, relations, withinArrayOrBlockLocale, }: Args) => void;
9
10
  export {};
10
11
  //# sourceMappingURL=relationship.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"relationship.d.ts","sourceRoot":"","sources":["../../../src/transform/read/relationship.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE7D,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAAA;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CACrC,CAAA;AAED,eAAO,MAAM,qBAAqB,sCAAuC,IAAI,SA6D5E,CAAA"}
1
+ {"version":3,"file":"relationship.d.ts","sourceRoot":"","sources":["../../../src/transform/read/relationship.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE7D,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAAA;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACpC,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,qBAAqB,iEAM/B,IAAI,SAwEN,CAAA"}