@payloadcms/drizzle 3.0.0-canary.2c2c95f

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 (290) hide show
  1. package/README.md +3 -0
  2. package/dist/count.d.ts +3 -0
  3. package/dist/count.d.ts.map +1 -0
  4. package/dist/count.js +25 -0
  5. package/dist/count.js.map +1 -0
  6. package/dist/create.d.ts +3 -0
  7. package/dist/create.d.ts.map +1 -0
  8. package/dist/create.js +19 -0
  9. package/dist/create.js.map +1 -0
  10. package/dist/createGlobal.d.ts +4 -0
  11. package/dist/createGlobal.d.ts.map +1 -0
  12. package/dist/createGlobal.js +19 -0
  13. package/dist/createGlobal.js.map +1 -0
  14. package/dist/createGlobalVersion.d.ts +4 -0
  15. package/dist/createGlobalVersion.d.ts.map +1 -0
  16. package/dist/createGlobalVersion.js +36 -0
  17. package/dist/createGlobalVersion.js.map +1 -0
  18. package/dist/createTableName.d.ts +31 -0
  19. package/dist/createTableName.d.ts.map +1 -0
  20. package/dist/createTableName.js +31 -0
  21. package/dist/createTableName.js.map +1 -0
  22. package/dist/createVersion.d.ts +4 -0
  23. package/dist/createVersion.d.ts.map +1 -0
  24. package/dist/createVersion.js +43 -0
  25. package/dist/createVersion.js.map +1 -0
  26. package/dist/deleteMany.d.ts +3 -0
  27. package/dist/deleteMany.d.ts.map +1 -0
  28. package/dist/deleteMany.js +32 -0
  29. package/dist/deleteMany.js.map +1 -0
  30. package/dist/deleteOne.d.ts +3 -0
  31. package/dist/deleteOne.d.ts.map +1 -0
  32. package/dist/deleteOne.js +63 -0
  33. package/dist/deleteOne.js.map +1 -0
  34. package/dist/deleteVersions.d.ts +3 -0
  35. package/dist/deleteVersions.d.ts.map +1 -0
  36. package/dist/deleteVersions.js +35 -0
  37. package/dist/deleteVersions.js.map +1 -0
  38. package/dist/destroy.d.ts +3 -0
  39. package/dist/destroy.d.ts.map +1 -0
  40. package/dist/destroy.js +15 -0
  41. package/dist/destroy.js.map +1 -0
  42. package/dist/find/buildFindManyArgs.d.ts +17 -0
  43. package/dist/find/buildFindManyArgs.d.ts.map +1 -0
  44. package/dist/find/buildFindManyArgs.js +65 -0
  45. package/dist/find/buildFindManyArgs.js.map +1 -0
  46. package/dist/find/chainMethods.d.ts +16 -0
  47. package/dist/find/chainMethods.d.ts.map +1 -0
  48. package/dist/find/chainMethods.js +12 -0
  49. package/dist/find/chainMethods.js.map +1 -0
  50. package/dist/find/findMany.d.ts +21 -0
  51. package/dist/find/findMany.d.ts.map +1 -0
  52. package/dist/find/findMany.js +141 -0
  53. package/dist/find/findMany.js.map +1 -0
  54. package/dist/find/traverseFields.d.ts +17 -0
  55. package/dist/find/traverseFields.d.ts.map +1 -0
  56. package/dist/find/traverseFields.js +156 -0
  57. package/dist/find/traverseFields.js.map +1 -0
  58. package/dist/find.d.ts +3 -0
  59. package/dist/find.d.ts.map +1 -0
  60. package/dist/find.js +21 -0
  61. package/dist/find.js.map +1 -0
  62. package/dist/findGlobal.d.ts +3 -0
  63. package/dist/findGlobal.d.ts.map +1 -0
  64. package/dist/findGlobal.js +23 -0
  65. package/dist/findGlobal.js.map +1 -0
  66. package/dist/findGlobalVersions.d.ts +3 -0
  67. package/dist/findGlobalVersions.d.ts.map +1 -0
  68. package/dist/findGlobalVersions.js +24 -0
  69. package/dist/findGlobalVersions.js.map +1 -0
  70. package/dist/findMigrationDir.d.ts +16 -0
  71. package/dist/findMigrationDir.d.ts.map +1 -0
  72. package/dist/findMigrationDir.js +36 -0
  73. package/dist/findMigrationDir.js.map +1 -0
  74. package/dist/findOne.d.ts +4 -0
  75. package/dist/findOne.d.ts.map +1 -0
  76. package/dist/findOne.js +21 -0
  77. package/dist/findOne.js.map +1 -0
  78. package/dist/findVersions.d.ts +3 -0
  79. package/dist/findVersions.d.ts.map +1 -0
  80. package/dist/findVersions.js +24 -0
  81. package/dist/findVersions.js.map +1 -0
  82. package/dist/index.d.ts +38 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +38 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/migrate.d.ts +3 -0
  87. package/dist/migrate.d.ts.map +1 -0
  88. package/dist/migrate.js +97 -0
  89. package/dist/migrate.js.map +1 -0
  90. package/dist/migrateDown.d.ts +3 -0
  91. package/dist/migrateDown.d.ts.map +1 -0
  92. package/dist/migrateDown.js +63 -0
  93. package/dist/migrateDown.js.map +1 -0
  94. package/dist/migrateFresh.d.ts +8 -0
  95. package/dist/migrateFresh.d.ts.map +1 -0
  96. package/dist/migrateFresh.js +75 -0
  97. package/dist/migrateFresh.js.map +1 -0
  98. package/dist/migrateRefresh.d.ts +6 -0
  99. package/dist/migrateRefresh.d.ts.map +1 -0
  100. package/dist/migrateRefresh.js +102 -0
  101. package/dist/migrateRefresh.js.map +1 -0
  102. package/dist/migrateReset.d.ts +6 -0
  103. package/dist/migrateReset.d.ts.map +1 -0
  104. package/dist/migrateReset.js +82 -0
  105. package/dist/migrateReset.js.map +1 -0
  106. package/dist/migrateStatus.d.ts +3 -0
  107. package/dist/migrateStatus.d.ts.map +1 -0
  108. package/dist/migrateStatus.js +44 -0
  109. package/dist/migrateStatus.js.map +1 -0
  110. package/dist/queries/buildAndOrConditions.d.ts +16 -0
  111. package/dist/queries/buildAndOrConditions.d.ts.map +1 -0
  112. package/dist/queries/buildAndOrConditions.js +28 -0
  113. package/dist/queries/buildAndOrConditions.js.map +1 -0
  114. package/dist/queries/buildQuery.d.ts +29 -0
  115. package/dist/queries/buildQuery.d.ts.map +1 -0
  116. package/dist/queries/buildQuery.js +72 -0
  117. package/dist/queries/buildQuery.js.map +1 -0
  118. package/dist/queries/getTableAlias.d.ts +13 -0
  119. package/dist/queries/getTableAlias.d.ts.map +1 -0
  120. package/dist/queries/getTableAlias.js +20 -0
  121. package/dist/queries/getTableAlias.js.map +1 -0
  122. package/dist/queries/getTableColumnFromPath.d.ts +51 -0
  123. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -0
  124. package/dist/queries/getTableColumnFromPath.js +532 -0
  125. package/dist/queries/getTableColumnFromPath.js.map +1 -0
  126. package/dist/queries/operatorMap.d.ts +6 -0
  127. package/dist/queries/operatorMap.d.ts.map +1 -0
  128. package/dist/queries/operatorMap.js +24 -0
  129. package/dist/queries/operatorMap.js.map +1 -0
  130. package/dist/queries/parseParams.d.ts +16 -0
  131. package/dist/queries/parseParams.d.ts.map +1 -0
  132. package/dist/queries/parseParams.js +188 -0
  133. package/dist/queries/parseParams.js.map +1 -0
  134. package/dist/queries/sanitizeQueryValue.d.ts +15 -0
  135. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -0
  136. package/dist/queries/sanitizeQueryValue.js +120 -0
  137. package/dist/queries/sanitizeQueryValue.js.map +1 -0
  138. package/dist/queries/selectDistinct.d.ts +22 -0
  139. package/dist/queries/selectDistinct.d.ts.map +1 -0
  140. package/dist/queries/selectDistinct.js +38 -0
  141. package/dist/queries/selectDistinct.js.map +1 -0
  142. package/dist/queryDrafts.d.ts +3 -0
  143. package/dist/queryDrafts.d.ts.map +1 -0
  144. package/dist/queryDrafts.js +40 -0
  145. package/dist/queryDrafts.js.map +1 -0
  146. package/dist/transactions/beginTransaction.d.ts +3 -0
  147. package/dist/transactions/beginTransaction.d.ts.map +1 -0
  148. package/dist/transactions/beginTransaction.js +51 -0
  149. package/dist/transactions/beginTransaction.js.map +1 -0
  150. package/dist/transactions/commitTransaction.d.ts +3 -0
  151. package/dist/transactions/commitTransaction.d.ts.map +1 -0
  152. package/dist/transactions/commitTransaction.js +15 -0
  153. package/dist/transactions/commitTransaction.js.map +1 -0
  154. package/dist/transactions/rollbackTransaction.d.ts +3 -0
  155. package/dist/transactions/rollbackTransaction.d.ts.map +1 -0
  156. package/dist/transactions/rollbackTransaction.js +14 -0
  157. package/dist/transactions/rollbackTransaction.js.map +1 -0
  158. package/dist/transform/read/hasManyNumber.d.ts +10 -0
  159. package/dist/transform/read/hasManyNumber.d.ts.map +1 -0
  160. package/dist/transform/read/hasManyNumber.js +10 -0
  161. package/dist/transform/read/hasManyNumber.js.map +1 -0
  162. package/dist/transform/read/hasManyText.d.ts +10 -0
  163. package/dist/transform/read/hasManyText.d.ts.map +1 -0
  164. package/dist/transform/read/hasManyText.js +10 -0
  165. package/dist/transform/read/hasManyText.js.map +1 -0
  166. package/dist/transform/read/index.d.ts +13 -0
  167. package/dist/transform/read/index.d.ts.map +1 -0
  168. package/dist/transform/read/index.js +44 -0
  169. package/dist/transform/read/index.js.map +1 -0
  170. package/dist/transform/read/relationship.d.ts +10 -0
  171. package/dist/transform/read/relationship.d.ts.map +1 -0
  172. package/dist/transform/read/relationship.js +60 -0
  173. package/dist/transform/read/relationship.js.map +1 -0
  174. package/dist/transform/read/traverseFields.d.ts +57 -0
  175. package/dist/transform/read/traverseFields.d.ts.map +1 -0
  176. package/dist/transform/read/traverseFields.js +435 -0
  177. package/dist/transform/read/traverseFields.js.map +1 -0
  178. package/dist/transform/write/array.d.ts +26 -0
  179. package/dist/transform/write/array.d.ts.map +1 -0
  180. package/dist/transform/write/array.js +58 -0
  181. package/dist/transform/write/array.js.map +1 -0
  182. package/dist/transform/write/blocks.d.ts +25 -0
  183. package/dist/transform/write/blocks.d.ts.map +1 -0
  184. package/dist/transform/write/blocks.js +54 -0
  185. package/dist/transform/write/blocks.js.map +1 -0
  186. package/dist/transform/write/index.d.ts +13 -0
  187. package/dist/transform/write/index.d.ts.map +1 -0
  188. package/dist/transform/write/index.js +41 -0
  189. package/dist/transform/write/index.js.map +1 -0
  190. package/dist/transform/write/numbers.d.ts +8 -0
  191. package/dist/transform/write/numbers.d.ts.map +1 -0
  192. package/dist/transform/write/numbers.js +11 -0
  193. package/dist/transform/write/numbers.js.map +1 -0
  194. package/dist/transform/write/relationships.d.ts +10 -0
  195. package/dist/transform/write/relationships.d.ts.map +1 -0
  196. package/dist/transform/write/relationships.js +23 -0
  197. package/dist/transform/write/relationships.js.map +1 -0
  198. package/dist/transform/write/selects.d.ts +8 -0
  199. package/dist/transform/write/selects.d.ts.map +1 -0
  200. package/dist/transform/write/selects.js +20 -0
  201. package/dist/transform/write/selects.js.map +1 -0
  202. package/dist/transform/write/texts.d.ts +8 -0
  203. package/dist/transform/write/texts.d.ts.map +1 -0
  204. package/dist/transform/write/texts.js +11 -0
  205. package/dist/transform/write/texts.js.map +1 -0
  206. package/dist/transform/write/traverseFields.d.ts +50 -0
  207. package/dist/transform/write/traverseFields.d.ts.map +1 -0
  208. package/dist/transform/write/traverseFields.js +452 -0
  209. package/dist/transform/write/traverseFields.js.map +1 -0
  210. package/dist/transform/write/types.d.ts +43 -0
  211. package/dist/transform/write/types.d.ts.map +1 -0
  212. package/dist/transform/write/types.js +3 -0
  213. package/dist/transform/write/types.js.map +1 -0
  214. package/dist/types.d.ts +145 -0
  215. package/dist/types.d.ts.map +1 -0
  216. package/dist/types.js +3 -0
  217. package/dist/types.js.map +1 -0
  218. package/dist/update.d.ts +3 -0
  219. package/dist/update.d.ts.map +1 -0
  220. package/dist/update.js +54 -0
  221. package/dist/update.js.map +1 -0
  222. package/dist/updateGlobal.d.ts +4 -0
  223. package/dist/updateGlobal.d.ts.map +1 -0
  224. package/dist/updateGlobal.js +25 -0
  225. package/dist/updateGlobal.js.map +1 -0
  226. package/dist/updateGlobalVersion.d.ts +4 -0
  227. package/dist/updateGlobalVersion.d.ts.map +1 -0
  228. package/dist/updateGlobalVersion.js +36 -0
  229. package/dist/updateGlobalVersion.js.map +1 -0
  230. package/dist/updateVersion.d.ts +4 -0
  231. package/dist/updateVersion.d.ts.map +1 -0
  232. package/dist/updateVersion.js +36 -0
  233. package/dist/updateVersion.js.map +1 -0
  234. package/dist/upsertRow/deleteExistingArrayRows.d.ts +10 -0
  235. package/dist/upsertRow/deleteExistingArrayRows.d.ts.map +1 -0
  236. package/dist/upsertRow/deleteExistingArrayRows.js +14 -0
  237. package/dist/upsertRow/deleteExistingArrayRows.js.map +1 -0
  238. package/dist/upsertRow/deleteExistingRowsByPath.d.ts +14 -0
  239. package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -0
  240. package/dist/upsertRow/deleteExistingRowsByPath.js +41 -0
  241. package/dist/upsertRow/deleteExistingRowsByPath.js.map +1 -0
  242. package/dist/upsertRow/index.d.ts +4 -0
  243. package/dist/upsertRow/index.d.ts.map +1 -0
  244. package/dist/upsertRow/index.js +337 -0
  245. package/dist/upsertRow/index.js.map +1 -0
  246. package/dist/upsertRow/insertArrays.d.ts +13 -0
  247. package/dist/upsertRow/insertArrays.d.ts.map +1 -0
  248. package/dist/upsertRow/insertArrays.js +76 -0
  249. package/dist/upsertRow/insertArrays.js.map +1 -0
  250. package/dist/upsertRow/types.d.ts +32 -0
  251. package/dist/upsertRow/types.d.ts.map +1 -0
  252. package/dist/upsertRow/types.js +3 -0
  253. package/dist/upsertRow/types.js.map +1 -0
  254. package/dist/utilities/appendPrefixToKeys.d.ts +2 -0
  255. package/dist/utilities/appendPrefixToKeys.d.ts.map +1 -0
  256. package/dist/utilities/appendPrefixToKeys.js +6 -0
  257. package/dist/utilities/appendPrefixToKeys.js.map +1 -0
  258. package/dist/utilities/createBlocksMap.d.ts +5 -0
  259. package/dist/utilities/createBlocksMap.d.ts.map +1 -0
  260. package/dist/utilities/createBlocksMap.js +29 -0
  261. package/dist/utilities/createBlocksMap.js.map +1 -0
  262. package/dist/utilities/createRelationshipMap.d.ts +2 -0
  263. package/dist/utilities/createRelationshipMap.d.ts.map +1 -0
  264. package/dist/utilities/createRelationshipMap.js +19 -0
  265. package/dist/utilities/createRelationshipMap.js.map +1 -0
  266. package/dist/utilities/hasLocalesTable.d.ts +3 -0
  267. package/dist/utilities/hasLocalesTable.d.ts.map +1 -0
  268. package/dist/utilities/hasLocalesTable.js +11 -0
  269. package/dist/utilities/hasLocalesTable.js.map +1 -0
  270. package/dist/utilities/isArrayOfRows.d.ts +2 -0
  271. package/dist/utilities/isArrayOfRows.d.ts.map +1 -0
  272. package/dist/utilities/isArrayOfRows.js +5 -0
  273. package/dist/utilities/isArrayOfRows.js.map +1 -0
  274. package/dist/utilities/migrationTableExists.d.ts +3 -0
  275. package/dist/utilities/migrationTableExists.d.ts.map +1 -0
  276. package/dist/utilities/migrationTableExists.js +25 -0
  277. package/dist/utilities/migrationTableExists.js.map +1 -0
  278. package/dist/utilities/parseError.d.ts +5 -0
  279. package/dist/utilities/parseError.d.ts.map +1 -0
  280. package/dist/utilities/parseError.js +15 -0
  281. package/dist/utilities/parseError.js.map +1 -0
  282. package/dist/utilities/pushDevSchema.d.ts +9 -0
  283. package/dist/utilities/pushDevSchema.d.ts.map +1 -0
  284. package/dist/utilities/pushDevSchema.js +53 -0
  285. package/dist/utilities/pushDevSchema.js.map +1 -0
  286. package/dist/utilities/validateExistingBlockIsIdentical.d.ts +11 -0
  287. package/dist/utilities/validateExistingBlockIsIdentical.d.ts.map +1 -0
  288. package/dist/utilities/validateExistingBlockIsIdentical.js +76 -0
  289. package/dist/utilities/validateExistingBlockIsIdentical.js.map +1 -0
  290. package/package.json +53 -0
@@ -0,0 +1,337 @@
1
+ /* eslint-disable no-param-reassign */ import { eq } from 'drizzle-orm';
2
+ import { ValidationError } from 'payload';
3
+ import { buildFindManyArgs } from '../find/buildFindManyArgs.js';
4
+ import { transform } from '../transform/read/index.js';
5
+ import { transformForWrite } from '../transform/write/index.js';
6
+ import { deleteExistingArrayRows } from './deleteExistingArrayRows.js';
7
+ import { deleteExistingRowsByPath } from './deleteExistingRowsByPath.js';
8
+ import { insertArrays } from './insertArrays.js';
9
+ export const upsertRow = async ({ id, adapter, data, db, fields, ignoreResult, operation, path = '', req, tableName, upsertTarget, where })=>{
10
+ // Split out the incoming data into the corresponding:
11
+ // base row, locales, relationships, blocks, and arrays
12
+ const rowToInsert = transformForWrite({
13
+ adapter,
14
+ data,
15
+ fields,
16
+ path,
17
+ tableName
18
+ });
19
+ // First, we insert the main row
20
+ let insertedRow;
21
+ try {
22
+ if (operation === 'update') {
23
+ const target = upsertTarget || adapter.tables[tableName].id;
24
+ if (id) {
25
+ rowToInsert.row.id = id;
26
+ [insertedRow] = await adapter.insert({
27
+ db,
28
+ onConflictDoUpdate: {
29
+ set: rowToInsert.row,
30
+ target
31
+ },
32
+ tableName,
33
+ values: rowToInsert.row
34
+ });
35
+ } else {
36
+ [insertedRow] = await adapter.insert({
37
+ db,
38
+ onConflictDoUpdate: {
39
+ set: rowToInsert.row,
40
+ target,
41
+ where
42
+ },
43
+ tableName,
44
+ values: rowToInsert.row
45
+ });
46
+ }
47
+ } else {
48
+ [insertedRow] = await adapter.insert({
49
+ db,
50
+ tableName,
51
+ values: rowToInsert.row
52
+ });
53
+ }
54
+ const localesToInsert = [];
55
+ const relationsToInsert = [];
56
+ const textsToInsert = [];
57
+ const numbersToInsert = [];
58
+ const blocksToInsert = {};
59
+ const selectsToInsert = {};
60
+ // If there are locale rows with data, add the parent and locale to each
61
+ if (Object.keys(rowToInsert.locales).length > 0) {
62
+ Object.entries(rowToInsert.locales).forEach(([locale, localeRow])=>{
63
+ localeRow._parentID = insertedRow.id;
64
+ localeRow._locale = locale;
65
+ localesToInsert.push(localeRow);
66
+ });
67
+ }
68
+ // If there are relationships, add parent to each
69
+ if (rowToInsert.relationships.length > 0) {
70
+ rowToInsert.relationships.forEach((relation)=>{
71
+ relation.parent = insertedRow.id;
72
+ relationsToInsert.push(relation);
73
+ });
74
+ }
75
+ // If there are texts, add parent to each
76
+ if (rowToInsert.texts.length > 0) {
77
+ rowToInsert.texts.forEach((textRow)=>{
78
+ textRow.parent = insertedRow.id;
79
+ textsToInsert.push(textRow);
80
+ });
81
+ }
82
+ // If there are numbers, add parent to each
83
+ if (rowToInsert.numbers.length > 0) {
84
+ rowToInsert.numbers.forEach((numberRow)=>{
85
+ numberRow.parent = insertedRow.id;
86
+ numbersToInsert.push(numberRow);
87
+ });
88
+ }
89
+ // If there are selects, add parent to each, and then
90
+ // store by table name and rows
91
+ if (Object.keys(rowToInsert.selects).length > 0) {
92
+ Object.entries(rowToInsert.selects).forEach(([selectTableName, selectRows])=>{
93
+ selectRows.forEach((row)=>{
94
+ if (typeof row.parent === 'undefined') {
95
+ row.parent = insertedRow.id;
96
+ }
97
+ if (!selectsToInsert[selectTableName]) selectsToInsert[selectTableName] = [];
98
+ selectsToInsert[selectTableName].push(row);
99
+ });
100
+ });
101
+ }
102
+ // If there are blocks, add parent to each, and then
103
+ // store by table name and rows
104
+ Object.keys(rowToInsert.blocks).forEach((blockName)=>{
105
+ rowToInsert.blocks[blockName].forEach((blockRow)=>{
106
+ blockRow.row._parentID = insertedRow.id;
107
+ if (!blocksToInsert[blockName]) blocksToInsert[blockName] = [];
108
+ if (blockRow.row.uuid) {
109
+ delete blockRow.row.uuid;
110
+ }
111
+ blocksToInsert[blockName].push(blockRow);
112
+ });
113
+ });
114
+ // //////////////////////////////////
115
+ // INSERT LOCALES
116
+ // //////////////////////////////////
117
+ if (localesToInsert.length > 0) {
118
+ const localeTableName = `${tableName}${adapter.localesSuffix}`;
119
+ const localeTable = adapter.tables[`${tableName}${adapter.localesSuffix}`];
120
+ if (operation === 'update') {
121
+ await adapter.deleteWhere({
122
+ db,
123
+ tableName: localeTableName,
124
+ where: eq(localeTable._parentID, insertedRow.id)
125
+ });
126
+ }
127
+ await adapter.insert({
128
+ db,
129
+ tableName: localeTableName,
130
+ values: localesToInsert
131
+ });
132
+ }
133
+ // //////////////////////////////////
134
+ // INSERT RELATIONSHIPS
135
+ // //////////////////////////////////
136
+ const relationshipsTableName = `${tableName}${adapter.relationshipsSuffix}`;
137
+ if (operation === 'update') {
138
+ await deleteExistingRowsByPath({
139
+ adapter,
140
+ db,
141
+ localeColumnName: 'locale',
142
+ parentColumnName: 'parent',
143
+ parentID: insertedRow.id,
144
+ pathColumnName: 'path',
145
+ rows: [
146
+ ...relationsToInsert,
147
+ ...rowToInsert.relationshipsToDelete
148
+ ],
149
+ tableName: relationshipsTableName
150
+ });
151
+ }
152
+ if (relationsToInsert.length > 0) {
153
+ await adapter.insert({
154
+ db,
155
+ tableName: relationshipsTableName,
156
+ values: relationsToInsert
157
+ });
158
+ }
159
+ // //////////////////////////////////
160
+ // INSERT hasMany TEXTS
161
+ // //////////////////////////////////
162
+ const textsTableName = `${tableName}_texts`;
163
+ if (operation === 'update') {
164
+ await deleteExistingRowsByPath({
165
+ adapter,
166
+ db,
167
+ localeColumnName: 'locale',
168
+ parentColumnName: 'parent',
169
+ parentID: insertedRow.id,
170
+ pathColumnName: 'path',
171
+ rows: textsToInsert,
172
+ tableName: textsTableName
173
+ });
174
+ }
175
+ if (textsToInsert.length > 0) {
176
+ await adapter.insert({
177
+ db,
178
+ tableName: textsTableName,
179
+ values: textsToInsert
180
+ });
181
+ }
182
+ // //////////////////////////////////
183
+ // INSERT hasMany NUMBERS
184
+ // //////////////////////////////////
185
+ const numbersTableName = `${tableName}_numbers`;
186
+ if (operation === 'update') {
187
+ await deleteExistingRowsByPath({
188
+ adapter,
189
+ db,
190
+ localeColumnName: 'locale',
191
+ parentColumnName: 'parent',
192
+ parentID: insertedRow.id,
193
+ pathColumnName: 'path',
194
+ rows: numbersToInsert,
195
+ tableName: numbersTableName
196
+ });
197
+ }
198
+ if (numbersToInsert.length > 0) {
199
+ await adapter.insert({
200
+ db,
201
+ tableName: numbersTableName,
202
+ values: numbersToInsert
203
+ });
204
+ }
205
+ // //////////////////////////////////
206
+ // INSERT BLOCKS
207
+ // //////////////////////////////////
208
+ const insertedBlockRows = {};
209
+ if (operation === 'update') {
210
+ for (const blockName of rowToInsert.blocksToDelete){
211
+ const blockTableName = adapter.tableNameMap.get(`${tableName}_blocks_${blockName}`);
212
+ const blockTable = adapter.tables[blockTableName];
213
+ await adapter.deleteWhere({
214
+ db,
215
+ tableName: blockTableName,
216
+ where: eq(blockTable._parentID, insertedRow.id)
217
+ });
218
+ }
219
+ }
220
+ for (const [blockName, blockRows] of Object.entries(blocksToInsert)){
221
+ const blockTableName = adapter.tableNameMap.get(`${tableName}_blocks_${blockName}`);
222
+ insertedBlockRows[blockName] = await adapter.insert({
223
+ db,
224
+ tableName: blockTableName,
225
+ values: blockRows.map(({ row })=>row)
226
+ });
227
+ insertedBlockRows[blockName].forEach((row, i)=>{
228
+ blockRows[i].row = row;
229
+ });
230
+ const blockLocaleIndexMap = [];
231
+ const blockLocaleRowsToInsert = blockRows.reduce((acc, blockRow, i)=>{
232
+ if (Object.entries(blockRow.locales).length > 0) {
233
+ Object.entries(blockRow.locales).forEach(([blockLocale, blockLocaleData])=>{
234
+ if (Object.keys(blockLocaleData).length > 0) {
235
+ blockLocaleData._parentID = blockRow.row.id;
236
+ blockLocaleData._locale = blockLocale;
237
+ acc.push(blockLocaleData);
238
+ blockLocaleIndexMap.push(i);
239
+ }
240
+ });
241
+ }
242
+ return acc;
243
+ }, []);
244
+ if (blockLocaleRowsToInsert.length > 0) {
245
+ await adapter.insert({
246
+ db,
247
+ tableName: `${blockTableName}${adapter.localesSuffix}`,
248
+ values: blockLocaleRowsToInsert
249
+ });
250
+ }
251
+ await insertArrays({
252
+ adapter,
253
+ arrays: blockRows.map(({ arrays })=>arrays),
254
+ db,
255
+ parentRows: insertedBlockRows[blockName]
256
+ });
257
+ }
258
+ // //////////////////////////////////
259
+ // INSERT ARRAYS RECURSIVELY
260
+ // //////////////////////////////////
261
+ if (operation === 'update') {
262
+ for (const arrayTableName of Object.keys(rowToInsert.arrays)){
263
+ await deleteExistingArrayRows({
264
+ adapter,
265
+ db,
266
+ parentID: insertedRow.id,
267
+ tableName: arrayTableName
268
+ });
269
+ }
270
+ }
271
+ await insertArrays({
272
+ adapter,
273
+ arrays: [
274
+ rowToInsert.arrays
275
+ ],
276
+ db,
277
+ parentRows: [
278
+ insertedRow
279
+ ]
280
+ });
281
+ // //////////////////////////////////
282
+ // INSERT hasMany SELECTS
283
+ // //////////////////////////////////
284
+ for (const [selectTableName, tableRows] of Object.entries(selectsToInsert)){
285
+ const selectTable = adapter.tables[selectTableName];
286
+ if (operation === 'update') {
287
+ await adapter.deleteWhere({
288
+ db,
289
+ tableName: selectTableName,
290
+ where: eq(selectTable.parent, insertedRow.id)
291
+ });
292
+ }
293
+ await adapter.insert({
294
+ db,
295
+ tableName: selectTableName,
296
+ values: tableRows
297
+ });
298
+ }
299
+ // //////////////////////////////////
300
+ // Error Handling
301
+ // //////////////////////////////////
302
+ } catch (error) {
303
+ // TODO: error handle for sqlite
304
+ throw error.code === '23505' ? new ValidationError({
305
+ errors: [
306
+ {
307
+ field: adapter.fieldConstraints[tableName][error.constraint],
308
+ message: req.t('error:valueMustBeUnique')
309
+ }
310
+ ]
311
+ }, req.t) : error;
312
+ }
313
+ if (ignoreResult) return data;
314
+ // //////////////////////////////////
315
+ // RETRIEVE NEWLY UPDATED ROW
316
+ // //////////////////////////////////
317
+ const findManyArgs = buildFindManyArgs({
318
+ adapter,
319
+ depth: 0,
320
+ fields,
321
+ tableName
322
+ });
323
+ findManyArgs.where = eq(adapter.tables[tableName].id, insertedRow.id);
324
+ const doc = await db.query[tableName].findFirst(findManyArgs);
325
+ // //////////////////////////////////
326
+ // TRANSFORM DATA
327
+ // //////////////////////////////////
328
+ const result = transform({
329
+ adapter,
330
+ config: adapter.payload.config,
331
+ data: doc,
332
+ fields
333
+ });
334
+ return result;
335
+ };
336
+
337
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/upsertRow/index.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { TypeWithID } from 'payload'\n\nimport { eq } from 'drizzle-orm'\nimport { ValidationError } from 'payload'\n\nimport type { BlockRowToInsert } from '../transform/write/types.js'\nimport type { Args } from './types.js'\n\nimport { buildFindManyArgs } from '../find/buildFindManyArgs.js'\nimport { transform } from '../transform/read/index.js'\nimport { transformForWrite } from '../transform/write/index.js'\nimport { deleteExistingArrayRows } from './deleteExistingArrayRows.js'\nimport { deleteExistingRowsByPath } from './deleteExistingRowsByPath.js'\nimport { insertArrays } from './insertArrays.js'\n\nexport const upsertRow = async <T extends Record<string, unknown> | TypeWithID>({\n id,\n adapter,\n data,\n db,\n fields,\n ignoreResult,\n operation,\n path = '',\n req,\n tableName,\n upsertTarget,\n where,\n}: Args): Promise<T> => {\n // Split out the incoming data into the corresponding:\n // base row, locales, relationships, blocks, and arrays\n const rowToInsert = transformForWrite({\n adapter,\n data,\n fields,\n path,\n tableName,\n })\n\n // First, we insert the main row\n let insertedRow: Record<string, unknown>\n\n try {\n if (operation === 'update') {\n const target = upsertTarget || adapter.tables[tableName].id\n\n if (id) {\n rowToInsert.row.id = id\n ;[insertedRow] = await adapter.insert({\n db,\n onConflictDoUpdate: { set: rowToInsert.row, target },\n tableName,\n values: rowToInsert.row,\n })\n } else {\n ;[insertedRow] = await adapter.insert({\n db,\n onConflictDoUpdate: { set: rowToInsert.row, target, where },\n tableName,\n values: rowToInsert.row,\n })\n }\n } else {\n ;[insertedRow] = await adapter.insert({\n db,\n tableName,\n values: rowToInsert.row,\n })\n }\n\n const localesToInsert: Record<string, unknown>[] = []\n const relationsToInsert: Record<string, unknown>[] = []\n const textsToInsert: Record<string, unknown>[] = []\n const numbersToInsert: Record<string, unknown>[] = []\n const blocksToInsert: { [blockType: string]: BlockRowToInsert[] } = {}\n const selectsToInsert: { [selectTableName: string]: Record<string, unknown>[] } = {}\n\n // If there are locale rows with data, add the parent and locale to each\n if (Object.keys(rowToInsert.locales).length > 0) {\n Object.entries(rowToInsert.locales).forEach(([locale, localeRow]) => {\n localeRow._parentID = insertedRow.id\n localeRow._locale = locale\n localesToInsert.push(localeRow)\n })\n }\n\n // If there are relationships, add parent to each\n if (rowToInsert.relationships.length > 0) {\n rowToInsert.relationships.forEach((relation) => {\n relation.parent = insertedRow.id\n relationsToInsert.push(relation)\n })\n }\n\n // If there are texts, add parent to each\n if (rowToInsert.texts.length > 0) {\n rowToInsert.texts.forEach((textRow) => {\n textRow.parent = insertedRow.id\n textsToInsert.push(textRow)\n })\n }\n\n // If there are numbers, add parent to each\n if (rowToInsert.numbers.length > 0) {\n rowToInsert.numbers.forEach((numberRow) => {\n numberRow.parent = insertedRow.id\n numbersToInsert.push(numberRow)\n })\n }\n\n // If there are selects, add parent to each, and then\n // store by table name and rows\n if (Object.keys(rowToInsert.selects).length > 0) {\n Object.entries(rowToInsert.selects).forEach(([selectTableName, selectRows]) => {\n selectRows.forEach((row) => {\n if (typeof row.parent === 'undefined') {\n row.parent = insertedRow.id\n }\n if (!selectsToInsert[selectTableName]) selectsToInsert[selectTableName] = []\n selectsToInsert[selectTableName].push(row)\n })\n })\n }\n\n // If there are blocks, add parent to each, and then\n // store by table name and rows\n Object.keys(rowToInsert.blocks).forEach((blockName) => {\n rowToInsert.blocks[blockName].forEach((blockRow) => {\n blockRow.row._parentID = insertedRow.id\n if (!blocksToInsert[blockName]) blocksToInsert[blockName] = []\n if (blockRow.row.uuid) {\n delete blockRow.row.uuid\n }\n blocksToInsert[blockName].push(blockRow)\n })\n })\n\n // //////////////////////////////////\n // INSERT LOCALES\n // //////////////////////////////////\n\n if (localesToInsert.length > 0) {\n const localeTableName = `${tableName}${adapter.localesSuffix}`\n const localeTable = adapter.tables[`${tableName}${adapter.localesSuffix}`]\n\n if (operation === 'update') {\n await adapter.deleteWhere({\n db,\n tableName: localeTableName,\n where: eq(localeTable._parentID, insertedRow.id),\n })\n }\n\n await adapter.insert({\n db,\n tableName: localeTableName,\n values: localesToInsert,\n })\n }\n\n // //////////////////////////////////\n // INSERT RELATIONSHIPS\n // //////////////////////////////////\n\n const relationshipsTableName = `${tableName}${adapter.relationshipsSuffix}`\n\n if (operation === 'update') {\n await deleteExistingRowsByPath({\n adapter,\n db,\n localeColumnName: 'locale',\n parentColumnName: 'parent',\n parentID: insertedRow.id,\n pathColumnName: 'path',\n rows: [...relationsToInsert, ...rowToInsert.relationshipsToDelete],\n tableName: relationshipsTableName,\n })\n }\n\n if (relationsToInsert.length > 0) {\n await adapter.insert({\n db,\n tableName: relationshipsTableName,\n values: relationsToInsert,\n })\n }\n\n // //////////////////////////////////\n // INSERT hasMany TEXTS\n // //////////////////////////////////\n\n const textsTableName = `${tableName}_texts`\n\n if (operation === 'update') {\n await deleteExistingRowsByPath({\n adapter,\n db,\n localeColumnName: 'locale',\n parentColumnName: 'parent',\n parentID: insertedRow.id,\n pathColumnName: 'path',\n rows: textsToInsert,\n tableName: textsTableName,\n })\n }\n\n if (textsToInsert.length > 0) {\n await adapter.insert({\n db,\n tableName: textsTableName,\n values: textsToInsert,\n })\n }\n\n // //////////////////////////////////\n // INSERT hasMany NUMBERS\n // //////////////////////////////////\n\n const numbersTableName = `${tableName}_numbers`\n\n if (operation === 'update') {\n await deleteExistingRowsByPath({\n adapter,\n db,\n localeColumnName: 'locale',\n parentColumnName: 'parent',\n parentID: insertedRow.id,\n pathColumnName: 'path',\n rows: numbersToInsert,\n tableName: numbersTableName,\n })\n }\n\n if (numbersToInsert.length > 0) {\n await adapter.insert({\n db,\n tableName: numbersTableName,\n values: numbersToInsert,\n })\n }\n\n // //////////////////////////////////\n // INSERT BLOCKS\n // //////////////////////////////////\n\n const insertedBlockRows: Record<string, Record<string, unknown>[]> = {}\n\n if (operation === 'update') {\n for (const blockName of rowToInsert.blocksToDelete) {\n const blockTableName = adapter.tableNameMap.get(`${tableName}_blocks_${blockName}`)\n const blockTable = adapter.tables[blockTableName]\n await adapter.deleteWhere({\n db,\n tableName: blockTableName,\n where: eq(blockTable._parentID, insertedRow.id),\n })\n }\n }\n\n for (const [blockName, blockRows] of Object.entries(blocksToInsert)) {\n const blockTableName = adapter.tableNameMap.get(`${tableName}_blocks_${blockName}`)\n insertedBlockRows[blockName] = await adapter.insert({\n db,\n tableName: blockTableName,\n values: blockRows.map(({ row }) => row),\n })\n\n insertedBlockRows[blockName].forEach((row, i) => {\n blockRows[i].row = row\n })\n\n const blockLocaleIndexMap: number[] = []\n\n const blockLocaleRowsToInsert = blockRows.reduce((acc, blockRow, i) => {\n if (Object.entries(blockRow.locales).length > 0) {\n Object.entries(blockRow.locales).forEach(([blockLocale, blockLocaleData]) => {\n if (Object.keys(blockLocaleData).length > 0) {\n blockLocaleData._parentID = blockRow.row.id\n blockLocaleData._locale = blockLocale\n acc.push(blockLocaleData)\n blockLocaleIndexMap.push(i)\n }\n })\n }\n\n return acc\n }, [])\n\n if (blockLocaleRowsToInsert.length > 0) {\n await adapter.insert({\n db,\n tableName: `${blockTableName}${adapter.localesSuffix}`,\n values: blockLocaleRowsToInsert,\n })\n }\n\n await insertArrays({\n adapter,\n arrays: blockRows.map(({ arrays }) => arrays),\n db,\n parentRows: insertedBlockRows[blockName],\n })\n }\n\n // //////////////////////////////////\n // INSERT ARRAYS RECURSIVELY\n // //////////////////////////////////\n\n if (operation === 'update') {\n for (const arrayTableName of Object.keys(rowToInsert.arrays)) {\n await deleteExistingArrayRows({\n adapter,\n db,\n parentID: insertedRow.id,\n tableName: arrayTableName,\n })\n }\n }\n\n await insertArrays({\n adapter,\n arrays: [rowToInsert.arrays],\n db,\n parentRows: [insertedRow],\n })\n\n // //////////////////////////////////\n // INSERT hasMany SELECTS\n // //////////////////////////////////\n\n for (const [selectTableName, tableRows] of Object.entries(selectsToInsert)) {\n const selectTable = adapter.tables[selectTableName]\n if (operation === 'update') {\n await adapter.deleteWhere({\n db,\n tableName: selectTableName,\n where: eq(selectTable.parent, insertedRow.id),\n })\n }\n await adapter.insert({\n db,\n tableName: selectTableName,\n values: tableRows,\n })\n }\n\n // //////////////////////////////////\n // Error Handling\n // //////////////////////////////////\n } catch (error) {\n // TODO: error handle for sqlite\n throw error.code === '23505'\n ? new ValidationError(\n {\n errors: [\n {\n field: adapter.fieldConstraints[tableName][error.constraint],\n message: req.t('error:valueMustBeUnique'),\n },\n ],\n },\n req.t,\n )\n : error\n }\n\n if (ignoreResult) return data as T\n\n // //////////////////////////////////\n // RETRIEVE NEWLY UPDATED ROW\n // //////////////////////////////////\n\n const findManyArgs = buildFindManyArgs({\n adapter,\n depth: 0,\n fields,\n tableName,\n })\n\n findManyArgs.where = eq(adapter.tables[tableName].id, insertedRow.id)\n\n const doc = await db.query[tableName].findFirst(findManyArgs)\n\n // //////////////////////////////////\n // TRANSFORM DATA\n // //////////////////////////////////\n\n const result = transform<T>({\n adapter,\n config: adapter.payload.config,\n data: doc,\n fields,\n })\n\n return result\n}\n"],"names":["eq","ValidationError","buildFindManyArgs","transform","transformForWrite","deleteExistingArrayRows","deleteExistingRowsByPath","insertArrays","upsertRow","id","adapter","data","db","fields","ignoreResult","operation","path","req","tableName","upsertTarget","where","rowToInsert","insertedRow","target","tables","row","insert","onConflictDoUpdate","set","values","localesToInsert","relationsToInsert","textsToInsert","numbersToInsert","blocksToInsert","selectsToInsert","Object","keys","locales","length","entries","forEach","locale","localeRow","_parentID","_locale","push","relationships","relation","parent","texts","textRow","numbers","numberRow","selects","selectTableName","selectRows","blocks","blockName","blockRow","uuid","localeTableName","localesSuffix","localeTable","deleteWhere","relationshipsTableName","relationshipsSuffix","localeColumnName","parentColumnName","parentID","pathColumnName","rows","relationshipsToDelete","textsTableName","numbersTableName","insertedBlockRows","blocksToDelete","blockTableName","tableNameMap","get","blockTable","blockRows","map","i","blockLocaleIndexMap","blockLocaleRowsToInsert","reduce","acc","blockLocale","blockLocaleData","arrays","parentRows","arrayTableName","tableRows","selectTable","error","code","errors","field","fieldConstraints","constraint","message","t","findManyArgs","depth","doc","query","findFirst","result","config","payload"],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { ArrayRowToInsert } from '../transform/write/types.js';
2
+ import type { DrizzleAdapter, DrizzleTransaction } from '../types.js';
3
+ type Args = {
4
+ adapter: DrizzleAdapter;
5
+ arrays: {
6
+ [tableName: string]: ArrayRowToInsert[];
7
+ }[];
8
+ db: DrizzleAdapter['drizzle'] | DrizzleTransaction;
9
+ parentRows: Record<string, unknown>[];
10
+ };
11
+ export declare const insertArrays: ({ adapter, arrays, db, parentRows }: Args) => Promise<void>;
12
+ export {};
13
+ //# sourceMappingURL=insertArrays.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insertArrays.d.ts","sourceRoot":"","sources":["../../src/upsertRow/insertArrays.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErE,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,EAAE,CAAA;IACH,EAAE,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAA;IAClD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CACtC,CAAA;AAYD,eAAO,MAAM,YAAY,wCAA+C,IAAI,KAAG,OAAO,CAAC,IAAI,CAiF1F,CAAA"}
@@ -0,0 +1,76 @@
1
+ /* eslint-disable no-param-reassign */ export const insertArrays = async ({ adapter, arrays, db, parentRows })=>{
2
+ // Maintain a map of flattened rows by table
3
+ const rowsByTable = {};
4
+ arrays.forEach((arraysByTable, parentRowIndex)=>{
5
+ Object.entries(arraysByTable).forEach(([tableName, arrayRows])=>{
6
+ // If the table doesn't exist in map, initialize it
7
+ if (!rowsByTable[tableName]) {
8
+ rowsByTable[tableName] = {
9
+ arrays: [],
10
+ locales: [],
11
+ rows: []
12
+ };
13
+ }
14
+ const parentID = parentRows[parentRowIndex].id;
15
+ // Add any sub arrays that need to be created
16
+ // We will call this recursively below
17
+ arrayRows.forEach((arrayRow, i)=>{
18
+ if (Object.keys(arrayRow.arrays).length > 0) {
19
+ rowsByTable[tableName].arrays.push(arrayRow.arrays);
20
+ }
21
+ // Set up parent IDs for both row and locale row
22
+ arrayRow.row._parentID = parentID;
23
+ rowsByTable[tableName].rows.push(arrayRow.row);
24
+ Object.entries(arrayRow.locales).forEach(([arrayRowLocale, arrayRowLocaleData])=>{
25
+ arrayRowLocaleData._parentID = arrayRow.row.id;
26
+ arrayRowLocaleData._locale = arrayRowLocale;
27
+ rowsByTable[tableName].locales.push(arrayRowLocaleData);
28
+ if (!arrayRow.row.id) {
29
+ arrayRowLocaleData._getParentID = (rows)=>rows[i].id;
30
+ }
31
+ });
32
+ });
33
+ });
34
+ });
35
+ // Insert all corresponding arrays
36
+ // (one insert per array table)
37
+ for (const [tableName, row] of Object.entries(rowsByTable)){
38
+ // the nested arrays need the ID for the parentID foreign key
39
+ let insertedRows;
40
+ if (row.rows.length > 0) {
41
+ insertedRows = await adapter.insert({
42
+ db,
43
+ tableName,
44
+ values: row.rows
45
+ });
46
+ }
47
+ // Insert locale rows
48
+ if (adapter.tables[`${tableName}${adapter.localesSuffix}`] && row.locales.length > 0) {
49
+ if (!row.locales[0]._parentID) {
50
+ row.locales = row.locales.map((localeRow)=>{
51
+ if (typeof localeRow._getParentID === 'function') {
52
+ localeRow._parentID = localeRow._getParentID(insertedRows);
53
+ delete localeRow._getParentID;
54
+ }
55
+ return localeRow;
56
+ });
57
+ }
58
+ await adapter.insert({
59
+ db,
60
+ tableName: `${tableName}${adapter.localesSuffix}`,
61
+ values: row.locales
62
+ });
63
+ }
64
+ // If there are sub arrays, call this function recursively
65
+ if (row.arrays.length > 0) {
66
+ await insertArrays({
67
+ adapter,
68
+ arrays: row.arrays,
69
+ db,
70
+ parentRows: insertedRows
71
+ });
72
+ }
73
+ }
74
+ };
75
+
76
+ //# sourceMappingURL=insertArrays.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/upsertRow/insertArrays.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { ArrayRowToInsert } from '../transform/write/types.js'\nimport type { DrizzleAdapter, DrizzleTransaction } from '../types.js'\n\ntype Args = {\n adapter: DrizzleAdapter\n arrays: {\n [tableName: string]: ArrayRowToInsert[]\n }[]\n db: DrizzleAdapter['drizzle'] | DrizzleTransaction\n parentRows: Record<string, unknown>[]\n}\n\ntype RowsByTable = {\n [tableName: string]: {\n arrays: {\n [tableName: string]: ArrayRowToInsert[]\n }[]\n locales: Record<string, unknown>[]\n rows: Record<string, unknown>[]\n }\n}\n\nexport const insertArrays = async ({ adapter, arrays, db, parentRows }: Args): Promise<void> => {\n // Maintain a map of flattened rows by table\n const rowsByTable: RowsByTable = {}\n\n arrays.forEach((arraysByTable, parentRowIndex) => {\n Object.entries(arraysByTable).forEach(([tableName, arrayRows]) => {\n // If the table doesn't exist in map, initialize it\n if (!rowsByTable[tableName]) {\n rowsByTable[tableName] = {\n arrays: [],\n locales: [],\n rows: [],\n }\n }\n\n const parentID = parentRows[parentRowIndex].id\n\n // Add any sub arrays that need to be created\n // We will call this recursively below\n arrayRows.forEach((arrayRow, i) => {\n if (Object.keys(arrayRow.arrays).length > 0) {\n rowsByTable[tableName].arrays.push(arrayRow.arrays)\n }\n\n // Set up parent IDs for both row and locale row\n arrayRow.row._parentID = parentID\n rowsByTable[tableName].rows.push(arrayRow.row)\n\n Object.entries(arrayRow.locales).forEach(([arrayRowLocale, arrayRowLocaleData]) => {\n arrayRowLocaleData._parentID = arrayRow.row.id\n arrayRowLocaleData._locale = arrayRowLocale\n rowsByTable[tableName].locales.push(arrayRowLocaleData)\n if (!arrayRow.row.id) {\n arrayRowLocaleData._getParentID = (rows) => rows[i].id\n }\n })\n })\n })\n })\n\n // Insert all corresponding arrays\n // (one insert per array table)\n for (const [tableName, row] of Object.entries(rowsByTable)) {\n // the nested arrays need the ID for the parentID foreign key\n let insertedRows: Args['parentRows']\n if (row.rows.length > 0) {\n insertedRows = await adapter.insert({\n db,\n tableName,\n values: row.rows,\n })\n }\n\n // Insert locale rows\n if (adapter.tables[`${tableName}${adapter.localesSuffix}`] && row.locales.length > 0) {\n if (!row.locales[0]._parentID) {\n row.locales = row.locales.map((localeRow) => {\n if (typeof localeRow._getParentID === 'function') {\n localeRow._parentID = localeRow._getParentID(insertedRows)\n delete localeRow._getParentID\n }\n return localeRow\n })\n }\n await adapter.insert({\n db,\n tableName: `${tableName}${adapter.localesSuffix}`,\n values: row.locales,\n })\n }\n\n // If there are sub arrays, call this function recursively\n if (row.arrays.length > 0) {\n await insertArrays({\n adapter,\n arrays: row.arrays,\n db,\n parentRows: insertedRows,\n })\n }\n }\n}\n"],"names":["insertArrays","adapter","arrays","db","parentRows","rowsByTable","forEach","arraysByTable","parentRowIndex","Object","entries","tableName","arrayRows","locales","rows","parentID","id","arrayRow","i","keys","length","push","row","_parentID","arrayRowLocale","arrayRowLocaleData","_locale","_getParentID","insertedRows","insert","values","tables","localesSuffix","map","localeRow"],"mappings":"AAAA,oCAAoC,GAuBpC,OAAO,MAAMA,eAAe,OAAO,EAAEC,OAAO,EAAEC,MAAM,EAAEC,EAAE,EAAEC,UAAU,EAAQ;IAC1E,4CAA4C;IAC5C,MAAMC,cAA2B,CAAC;IAElCH,OAAOI,OAAO,CAAC,CAACC,eAAeC;QAC7BC,OAAOC,OAAO,CAACH,eAAeD,OAAO,CAAC,CAAC,CAACK,WAAWC,UAAU;YAC3D,mDAAmD;YACnD,IAAI,CAACP,WAAW,CAACM,UAAU,EAAE;gBAC3BN,WAAW,CAACM,UAAU,GAAG;oBACvBT,QAAQ,EAAE;oBACVW,SAAS,EAAE;oBACXC,MAAM,EAAE;gBACV;YACF;YAEA,MAAMC,WAAWX,UAAU,CAACI,eAAe,CAACQ,EAAE;YAE9C,6CAA6C;YAC7C,sCAAsC;YACtCJ,UAAUN,OAAO,CAAC,CAACW,UAAUC;gBAC3B,IAAIT,OAAOU,IAAI,CAACF,SAASf,MAAM,EAAEkB,MAAM,GAAG,GAAG;oBAC3Cf,WAAW,CAACM,UAAU,CAACT,MAAM,CAACmB,IAAI,CAACJ,SAASf,MAAM;gBACpD;gBAEA,gDAAgD;gBAChDe,SAASK,GAAG,CAACC,SAAS,GAAGR;gBACzBV,WAAW,CAACM,UAAU,CAACG,IAAI,CAACO,IAAI,CAACJ,SAASK,GAAG;gBAE7Cb,OAAOC,OAAO,CAACO,SAASJ,OAAO,EAAEP,OAAO,CAAC,CAAC,CAACkB,gBAAgBC,mBAAmB;oBAC5EA,mBAAmBF,SAAS,GAAGN,SAASK,GAAG,CAACN,EAAE;oBAC9CS,mBAAmBC,OAAO,GAAGF;oBAC7BnB,WAAW,CAACM,UAAU,CAACE,OAAO,CAACQ,IAAI,CAACI;oBACpC,IAAI,CAACR,SAASK,GAAG,CAACN,EAAE,EAAE;wBACpBS,mBAAmBE,YAAY,GAAG,CAACb,OAASA,IAAI,CAACI,EAAE,CAACF,EAAE;oBACxD;gBACF;YACF;QACF;IACF;IAEA,kCAAkC;IAClC,+BAA+B;IAC/B,KAAK,MAAM,CAACL,WAAWW,IAAI,IAAIb,OAAOC,OAAO,CAACL,aAAc;QAC1D,6DAA6D;QAC7D,IAAIuB;QACJ,IAAIN,IAAIR,IAAI,CAACM,MAAM,GAAG,GAAG;YACvBQ,eAAe,MAAM3B,QAAQ4B,MAAM,CAAC;gBAClC1B;gBACAQ;gBACAmB,QAAQR,IAAIR,IAAI;YAClB;QACF;QAEA,qBAAqB;QACrB,IAAIb,QAAQ8B,MAAM,CAAC,CAAC,EAAEpB,UAAU,EAAEV,QAAQ+B,aAAa,CAAC,CAAC,CAAC,IAAIV,IAAIT,OAAO,CAACO,MAAM,GAAG,GAAG;YACpF,IAAI,CAACE,IAAIT,OAAO,CAAC,EAAE,CAACU,SAAS,EAAE;gBAC7BD,IAAIT,OAAO,GAAGS,IAAIT,OAAO,CAACoB,GAAG,CAAC,CAACC;oBAC7B,IAAI,OAAOA,UAAUP,YAAY,KAAK,YAAY;wBAChDO,UAAUX,SAAS,GAAGW,UAAUP,YAAY,CAACC;wBAC7C,OAAOM,UAAUP,YAAY;oBAC/B;oBACA,OAAOO;gBACT;YACF;YACA,MAAMjC,QAAQ4B,MAAM,CAAC;gBACnB1B;gBACAQ,WAAW,CAAC,EAAEA,UAAU,EAAEV,QAAQ+B,aAAa,CAAC,CAAC;gBACjDF,QAAQR,IAAIT,OAAO;YACrB;QACF;QAEA,0DAA0D;QAC1D,IAAIS,IAAIpB,MAAM,CAACkB,MAAM,GAAG,GAAG;YACzB,MAAMpB,aAAa;gBACjBC;gBACAC,QAAQoB,IAAIpB,MAAM;gBAClBC;gBACAC,YAAYwB;YACd;QACF;IACF;AACF,EAAC"}
@@ -0,0 +1,32 @@
1
+ import type { SQL } from 'drizzle-orm';
2
+ import type { Field, PayloadRequest } from 'payload';
3
+ import type { DrizzleAdapter, DrizzleTransaction, GenericColumn } from '../types.js';
4
+ type BaseArgs = {
5
+ adapter: DrizzleAdapter;
6
+ data: Record<string, unknown>;
7
+ db: DrizzleAdapter['drizzle'] | DrizzleTransaction;
8
+ fields: Field[];
9
+ /**
10
+ * When true, skips reading the data back from the database and returns the input data
11
+ * @default false
12
+ */
13
+ ignoreResult?: boolean;
14
+ path?: string;
15
+ req: PayloadRequest;
16
+ tableName: string;
17
+ };
18
+ type CreateArgs = BaseArgs & {
19
+ id?: never;
20
+ operation: 'create';
21
+ upsertTarget?: never;
22
+ where?: never;
23
+ };
24
+ type UpdateArgs = BaseArgs & {
25
+ id?: number | string;
26
+ operation: 'update';
27
+ upsertTarget?: GenericColumn;
28
+ where?: SQL<unknown>;
29
+ };
30
+ export type Args = CreateArgs | UpdateArgs;
31
+ export {};
32
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/upsertRow/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEpF,KAAK,QAAQ,GAAG;IACd,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,EAAE,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAA;IAClD,MAAM,EAAE,KAAK,EAAE,CAAA;IACf;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,cAAc,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,KAAK,UAAU,GAAG,QAAQ,GAAG;IAC3B,EAAE,CAAC,EAAE,KAAK,CAAA;IACV,SAAS,EAAE,QAAQ,CAAA;IACnB,YAAY,CAAC,EAAE,KAAK,CAAA;IACpB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAED,KAAK,UAAU,GAAG,QAAQ,GAAG;IAC3B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,SAAS,EAAE,QAAQ,CAAA;IACnB,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,IAAI,GAAG,UAAU,GAAG,UAAU,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/upsertRow/types.ts"],"sourcesContent":["import type { SQL } from 'drizzle-orm'\nimport type { Field, PayloadRequest } from 'payload'\n\nimport type { DrizzleAdapter, DrizzleTransaction, GenericColumn } from '../types.js'\n\ntype BaseArgs = {\n adapter: DrizzleAdapter\n data: Record<string, unknown>\n db: DrizzleAdapter['drizzle'] | DrizzleTransaction\n fields: Field[]\n /**\n * When true, skips reading the data back from the database and returns the input data\n * @default false\n */\n ignoreResult?: boolean\n path?: string\n req: PayloadRequest\n tableName: string\n}\n\ntype CreateArgs = BaseArgs & {\n id?: never\n operation: 'create'\n upsertTarget?: never\n where?: never\n}\n\ntype UpdateArgs = BaseArgs & {\n id?: number | string\n operation: 'update'\n upsertTarget?: GenericColumn\n where?: SQL<unknown>\n}\n\nexport type Args = CreateArgs | UpdateArgs\n"],"names":[],"mappings":"AAkCA,WAA0C"}
@@ -0,0 +1,2 @@
1
+ export declare const appendPrefixToObjectKeys: <T>(obj: Record<string, unknown>, prefix: string) => T;
2
+ //# sourceMappingURL=appendPrefixToKeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appendPrefixToKeys.d.ts","sourceRoot":"","sources":["../../src/utilities/appendPrefixToKeys.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,GAAI,CAAC,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,MAAM,KAAG,CAI9E,CAAA"}
@@ -0,0 +1,6 @@
1
+ export const appendPrefixToObjectKeys = (obj, prefix)=>Object.entries(obj).reduce((res, [key, val])=>{
2
+ res[`${prefix}_${key}`] = val;
3
+ return res;
4
+ }, {});
5
+
6
+ //# sourceMappingURL=appendPrefixToKeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utilities/appendPrefixToKeys.ts"],"sourcesContent":["export const appendPrefixToObjectKeys = <T>(obj: Record<string, unknown>, prefix: string): T =>\n Object.entries(obj).reduce((res, [key, val]) => {\n res[`${prefix}_${key}`] = val\n return res\n }, {} as T)\n"],"names":["appendPrefixToObjectKeys","obj","prefix","Object","entries","reduce","res","key","val"],"mappings":"AAAA,OAAO,MAAMA,2BAA2B,CAAIC,KAA8BC,SACxEC,OAAOC,OAAO,CAACH,KAAKI,MAAM,CAAC,CAACC,KAAK,CAACC,KAAKC,IAAI;QACzCF,GAAG,CAAC,CAAC,EAAEJ,OAAO,CAAC,EAAEK,IAAI,CAAC,CAAC,GAAGC;QAC1B,OAAOF;IACT,GAAG,CAAC,GAAO"}
@@ -0,0 +1,5 @@
1
+ export type BlocksMap = {
2
+ [path: string]: Record<string, unknown>[];
3
+ };
4
+ export declare const createBlocksMap: (data: Record<string, unknown>) => BlocksMap;
5
+ //# sourceMappingURL=createBlocksMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createBlocksMap.d.ts","sourceRoot":"","sources":["../../src/utilities/createBlocksMap.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CAC1C,CAAA;AAED,eAAO,MAAM,eAAe,SAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,SAmC/D,CAAA"}
@@ -0,0 +1,29 @@
1
+ /* eslint-disable no-param-reassign */ export const createBlocksMap = (data)=>{
2
+ const blocksMap = {};
3
+ Object.entries(data).forEach(([key, rows])=>{
4
+ if (key.startsWith('_blocks_') && Array.isArray(rows)) {
5
+ const blockType = key.replace('_blocks_', '');
6
+ rows.forEach((row)=>{
7
+ if ('_path' in row) {
8
+ if (!(row._path in blocksMap)) blocksMap[row._path] = [];
9
+ row.blockType = blockType;
10
+ blocksMap[row._path].push(row);
11
+ delete row._path;
12
+ }
13
+ });
14
+ delete data[key];
15
+ }
16
+ });
17
+ Object.entries(blocksMap).reduce((sortedBlocksMap, [path, blocks])=>{
18
+ sortedBlocksMap[path] = blocks.sort((a, b)=>{
19
+ if (typeof a._order === 'number' && typeof b._order === 'number') {
20
+ return a._order - b._order;
21
+ }
22
+ return 0;
23
+ });
24
+ return sortedBlocksMap;
25
+ }, {});
26
+ return blocksMap;
27
+ };
28
+
29
+ //# sourceMappingURL=createBlocksMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utilities/createBlocksMap.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nexport type BlocksMap = {\n [path: string]: Record<string, unknown>[]\n}\n\nexport const createBlocksMap = (data: Record<string, unknown>): BlocksMap => {\n const blocksMap: BlocksMap = {}\n\n Object.entries(data).forEach(([key, rows]) => {\n if (key.startsWith('_blocks_') && Array.isArray(rows)) {\n const blockType = key.replace('_blocks_', '')\n\n rows.forEach((row) => {\n if ('_path' in row) {\n if (!(row._path in blocksMap)) blocksMap[row._path] = []\n\n row.blockType = blockType\n blocksMap[row._path].push(row)\n\n delete row._path\n }\n })\n\n delete data[key]\n }\n })\n\n Object.entries(blocksMap).reduce((sortedBlocksMap, [path, blocks]) => {\n sortedBlocksMap[path] = blocks.sort((a, b) => {\n if (typeof a._order === 'number' && typeof b._order === 'number') {\n return a._order - b._order\n }\n\n return 0\n })\n\n return sortedBlocksMap\n }, {})\n\n return blocksMap\n}\n"],"names":["createBlocksMap","data","blocksMap","Object","entries","forEach","key","rows","startsWith","Array","isArray","blockType","replace","row","_path","push","reduce","sortedBlocksMap","path","blocks","sort","a","b","_order"],"mappings":"AAAA,oCAAoC,GAKpC,OAAO,MAAMA,kBAAkB,CAACC;IAC9B,MAAMC,YAAuB,CAAC;IAE9BC,OAAOC,OAAO,CAACH,MAAMI,OAAO,CAAC,CAAC,CAACC,KAAKC,KAAK;QACvC,IAAID,IAAIE,UAAU,CAAC,eAAeC,MAAMC,OAAO,CAACH,OAAO;YACrD,MAAMI,YAAYL,IAAIM,OAAO,CAAC,YAAY;YAE1CL,KAAKF,OAAO,CAAC,CAACQ;gBACZ,IAAI,WAAWA,KAAK;oBAClB,IAAI,CAAEA,CAAAA,IAAIC,KAAK,IAAIZ,SAAQ,GAAIA,SAAS,CAACW,IAAIC,KAAK,CAAC,GAAG,EAAE;oBAExDD,IAAIF,SAAS,GAAGA;oBAChBT,SAAS,CAACW,IAAIC,KAAK,CAAC,CAACC,IAAI,CAACF;oBAE1B,OAAOA,IAAIC,KAAK;gBAClB;YACF;YAEA,OAAOb,IAAI,CAACK,IAAI;QAClB;IACF;IAEAH,OAAOC,OAAO,CAACF,WAAWc,MAAM,CAAC,CAACC,iBAAiB,CAACC,MAAMC,OAAO;QAC/DF,eAAe,CAACC,KAAK,GAAGC,OAAOC,IAAI,CAAC,CAACC,GAAGC;YACtC,IAAI,OAAOD,EAAEE,MAAM,KAAK,YAAY,OAAOD,EAAEC,MAAM,KAAK,UAAU;gBAChE,OAAOF,EAAEE,MAAM,GAAGD,EAAEC,MAAM;YAC5B;YAEA,OAAO;QACT;QAEA,OAAON;IACT,GAAG,CAAC;IAEJ,OAAOf;AACT,EAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const createPathMap: (rows: unknown) => Record<string, Record<string, unknown>[]>;
2
+ //# sourceMappingURL=createRelationshipMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createRelationshipMap.d.ts","sourceRoot":"","sources":["../../src/utilities/createRelationshipMap.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,SAAU,OAAO,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAmBrF,CAAA"}