@payloadcms/db-postgres 3.0.0-canary.2e925f4 → 3.0.0-canary.3926e86

Sign up to get free protection for your applications and to get access to all the features.
Files changed (350) hide show
  1. package/dist/connect.d.ts.map +1 -1
  2. package/dist/connect.js +35 -12
  3. package/dist/connect.js.map +1 -1
  4. package/dist/index.d.ts +2 -2
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +57 -69
  7. package/dist/index.js.map +1 -1
  8. package/dist/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts +3 -2
  9. package/dist/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts.map +1 -1
  10. package/dist/predefinedMigrations/v2-v3/fetchAndResave/index.js +1 -1
  11. package/dist/predefinedMigrations/v2-v3/fetchAndResave/index.js.map +1 -1
  12. package/dist/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.d.ts.map +1 -1
  13. package/dist/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.js +72 -67
  14. package/dist/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.js.map +1 -1
  15. package/dist/predefinedMigrations/v2-v3/index.d.ts.map +1 -1
  16. package/dist/predefinedMigrations/v2-v3/index.js +4 -4
  17. package/dist/predefinedMigrations/v2-v3/index.js.map +1 -1
  18. package/dist/predefinedMigrations/v2-v3/migrateRelationships.d.ts +3 -2
  19. package/dist/predefinedMigrations/v2-v3/migrateRelationships.d.ts.map +1 -1
  20. package/dist/predefinedMigrations/v2-v3/migrateRelationships.js +9 -3
  21. package/dist/predefinedMigrations/v2-v3/migrateRelationships.js.map +1 -1
  22. package/dist/predefinedMigrations/v2-v3/traverseFields.d.ts +3 -2
  23. package/dist/predefinedMigrations/v2-v3/traverseFields.d.ts.map +1 -1
  24. package/dist/predefinedMigrations/v2-v3/traverseFields.js +32 -32
  25. package/dist/predefinedMigrations/v2-v3/traverseFields.js.map +1 -1
  26. package/dist/types.d.ts +65 -78
  27. package/dist/types.d.ts.map +1 -1
  28. package/dist/types.js.map +1 -1
  29. package/license.md +22 -0
  30. package/package.json +21 -12
  31. package/dist/count.d.ts +0 -3
  32. package/dist/count.d.ts.map +0 -1
  33. package/dist/count.js +0 -41
  34. package/dist/count.js.map +0 -1
  35. package/dist/create.d.ts +0 -3
  36. package/dist/create.d.ts.map +0 -1
  37. package/dist/create.js +0 -19
  38. package/dist/create.js.map +0 -1
  39. package/dist/createGlobal.d.ts +0 -4
  40. package/dist/createGlobal.d.ts.map +0 -1
  41. package/dist/createGlobal.js +0 -19
  42. package/dist/createGlobal.js.map +0 -1
  43. package/dist/createGlobalVersion.d.ts +0 -4
  44. package/dist/createGlobalVersion.d.ts.map +0 -1
  45. package/dist/createGlobalVersion.js +0 -33
  46. package/dist/createGlobalVersion.js.map +0 -1
  47. package/dist/createMigration.d.ts +0 -3
  48. package/dist/createMigration.d.ts.map +0 -1
  49. package/dist/createMigration.js +0 -102
  50. package/dist/createMigration.js.map +0 -1
  51. package/dist/createVersion.d.ts +0 -4
  52. package/dist/createVersion.d.ts.map +0 -1
  53. package/dist/createVersion.js +0 -40
  54. package/dist/createVersion.js.map +0 -1
  55. package/dist/deleteMany.d.ts +0 -3
  56. package/dist/deleteMany.d.ts.map +0 -1
  57. package/dist/deleteMany.js +0 -28
  58. package/dist/deleteMany.js.map +0 -1
  59. package/dist/deleteOne.d.ts +0 -3
  60. package/dist/deleteOne.d.ts.map +0 -1
  61. package/dist/deleteOne.js +0 -59
  62. package/dist/deleteOne.js.map +0 -1
  63. package/dist/deleteVersions.d.ts +0 -3
  64. package/dist/deleteVersions.d.ts.map +0 -1
  65. package/dist/deleteVersions.js +0 -31
  66. package/dist/deleteVersions.js.map +0 -1
  67. package/dist/destroy.d.ts +0 -3
  68. package/dist/destroy.d.ts.map +0 -1
  69. package/dist/destroy.js +0 -15
  70. package/dist/destroy.js.map +0 -1
  71. package/dist/find/buildFindManyArgs.d.ts +0 -17
  72. package/dist/find/buildFindManyArgs.d.ts.map +0 -1
  73. package/dist/find/buildFindManyArgs.js +0 -65
  74. package/dist/find/buildFindManyArgs.js.map +0 -1
  75. package/dist/find/chainMethods.d.ts +0 -16
  76. package/dist/find/chainMethods.d.ts.map +0 -1
  77. package/dist/find/chainMethods.js +0 -12
  78. package/dist/find/chainMethods.js.map +0 -1
  79. package/dist/find/findMany.d.ts +0 -21
  80. package/dist/find/findMany.d.ts.map +0 -1
  81. package/dist/find/findMany.js +0 -152
  82. package/dist/find/findMany.js.map +0 -1
  83. package/dist/find/traverseFields.d.ts +0 -17
  84. package/dist/find/traverseFields.d.ts.map +0 -1
  85. package/dist/find/traverseFields.js +0 -156
  86. package/dist/find/traverseFields.js.map +0 -1
  87. package/dist/find.d.ts +0 -3
  88. package/dist/find.d.ts.map +0 -1
  89. package/dist/find.js +0 -21
  90. package/dist/find.js.map +0 -1
  91. package/dist/findGlobal.d.ts +0 -3
  92. package/dist/findGlobal.d.ts.map +0 -1
  93. package/dist/findGlobal.js +0 -23
  94. package/dist/findGlobal.js.map +0 -1
  95. package/dist/findGlobalVersions.d.ts +0 -3
  96. package/dist/findGlobalVersions.d.ts.map +0 -1
  97. package/dist/findGlobalVersions.js +0 -24
  98. package/dist/findGlobalVersions.js.map +0 -1
  99. package/dist/findOne.d.ts +0 -4
  100. package/dist/findOne.d.ts.map +0 -1
  101. package/dist/findOne.js +0 -21
  102. package/dist/findOne.js.map +0 -1
  103. package/dist/findVersions.d.ts +0 -3
  104. package/dist/findVersions.d.ts.map +0 -1
  105. package/dist/findVersions.js +0 -24
  106. package/dist/findVersions.js.map +0 -1
  107. package/dist/init.d.ts +0 -3
  108. package/dist/init.d.ts.map +0 -1
  109. package/dist/init.js +0 -91
  110. package/dist/init.js.map +0 -1
  111. package/dist/migrate.d.ts +0 -3
  112. package/dist/migrate.d.ts.map +0 -1
  113. package/dist/migrate.js +0 -99
  114. package/dist/migrate.js.map +0 -1
  115. package/dist/migrateDown.d.ts +0 -3
  116. package/dist/migrateDown.d.ts.map +0 -1
  117. package/dist/migrateDown.js +0 -63
  118. package/dist/migrateDown.js.map +0 -1
  119. package/dist/migrateFresh.d.ts +0 -8
  120. package/dist/migrateFresh.d.ts.map +0 -1
  121. package/dist/migrateFresh.js +0 -72
  122. package/dist/migrateFresh.js.map +0 -1
  123. package/dist/migrateRefresh.d.ts +0 -6
  124. package/dist/migrateRefresh.d.ts.map +0 -1
  125. package/dist/migrateRefresh.js +0 -102
  126. package/dist/migrateRefresh.js.map +0 -1
  127. package/dist/migrateReset.d.ts +0 -6
  128. package/dist/migrateReset.d.ts.map +0 -1
  129. package/dist/migrateReset.js +0 -82
  130. package/dist/migrateReset.js.map +0 -1
  131. package/dist/migrateStatus.d.ts +0 -3
  132. package/dist/migrateStatus.d.ts.map +0 -1
  133. package/dist/migrateStatus.js +0 -44
  134. package/dist/migrateStatus.js.map +0 -1
  135. package/dist/queries/buildAndOrConditions.d.ts +0 -16
  136. package/dist/queries/buildAndOrConditions.d.ts.map +0 -1
  137. package/dist/queries/buildAndOrConditions.js +0 -28
  138. package/dist/queries/buildAndOrConditions.js.map +0 -1
  139. package/dist/queries/buildQuery.d.ts +0 -30
  140. package/dist/queries/buildQuery.d.ts.map +0 -1
  141. package/dist/queries/buildQuery.js +0 -72
  142. package/dist/queries/buildQuery.js.map +0 -1
  143. package/dist/queries/createJSONQuery/convertPathToJSONTraversal.d.ts +0 -2
  144. package/dist/queries/createJSONQuery/convertPathToJSONTraversal.d.ts.map +0 -1
  145. package/dist/queries/createJSONQuery/convertPathToJSONTraversal.js +0 -14
  146. package/dist/queries/createJSONQuery/convertPathToJSONTraversal.js.map +0 -1
  147. package/dist/queries/createJSONQuery/formatJSONPathSegment.d.ts +0 -2
  148. package/dist/queries/createJSONQuery/formatJSONPathSegment.d.ts.map +0 -1
  149. package/dist/queries/createJSONQuery/formatJSONPathSegment.js +0 -5
  150. package/dist/queries/createJSONQuery/formatJSONPathSegment.js.map +0 -1
  151. package/dist/queries/createJSONQuery/index.d.ts +0 -10
  152. package/dist/queries/createJSONQuery/index.d.ts.map +0 -1
  153. package/dist/queries/createJSONQuery/index.js +0 -54
  154. package/dist/queries/createJSONQuery/index.js.map +0 -1
  155. package/dist/queries/getTableColumnFromPath.d.ts +0 -50
  156. package/dist/queries/getTableColumnFromPath.d.ts.map +0 -1
  157. package/dist/queries/getTableColumnFromPath.js +0 -516
  158. package/dist/queries/getTableColumnFromPath.js.map +0 -1
  159. package/dist/queries/operatorMap.d.ts +0 -18
  160. package/dist/queries/operatorMap.d.ts.map +0 -1
  161. package/dist/queries/operatorMap.js +0 -24
  162. package/dist/queries/operatorMap.js.map +0 -1
  163. package/dist/queries/parseParams.d.ts +0 -16
  164. package/dist/queries/parseParams.d.ts.map +0 -1
  165. package/dist/queries/parseParams.js +0 -183
  166. package/dist/queries/parseParams.js.map +0 -1
  167. package/dist/queries/sanitizeQueryValue.d.ts +0 -15
  168. package/dist/queries/sanitizeQueryValue.d.ts.map +0 -1
  169. package/dist/queries/sanitizeQueryValue.js +0 -89
  170. package/dist/queries/sanitizeQueryValue.js.map +0 -1
  171. package/dist/queries/selectDistinct.d.ts +0 -22
  172. package/dist/queries/selectDistinct.d.ts.map +0 -1
  173. package/dist/queries/selectDistinct.js +0 -30
  174. package/dist/queries/selectDistinct.js.map +0 -1
  175. package/dist/queryDrafts.d.ts +0 -3
  176. package/dist/queryDrafts.d.ts.map +0 -1
  177. package/dist/queryDrafts.js +0 -40
  178. package/dist/queryDrafts.js.map +0 -1
  179. package/dist/schema/build.d.ts +0 -34
  180. package/dist/schema/build.d.ts.map +0 -1
  181. package/dist/schema/build.js +0 -369
  182. package/dist/schema/build.js.map +0 -1
  183. package/dist/schema/createIndex.d.ts +0 -12
  184. package/dist/schema/createIndex.d.ts.map +0 -1
  185. package/dist/schema/createIndex.js +0 -18
  186. package/dist/schema/createIndex.js.map +0 -1
  187. package/dist/schema/createTableName.d.ts +0 -30
  188. package/dist/schema/createTableName.d.ts.map +0 -1
  189. package/dist/schema/createTableName.js +0 -31
  190. package/dist/schema/createTableName.js.map +0 -1
  191. package/dist/schema/idToUUID.d.ts +0 -3
  192. package/dist/schema/idToUUID.d.ts.map +0 -1
  193. package/dist/schema/idToUUID.js +0 -11
  194. package/dist/schema/idToUUID.js.map +0 -1
  195. package/dist/schema/parentIDColumnMap.d.ts +0 -4
  196. package/dist/schema/parentIDColumnMap.d.ts.map +0 -1
  197. package/dist/schema/parentIDColumnMap.js +0 -9
  198. package/dist/schema/parentIDColumnMap.js.map +0 -1
  199. package/dist/schema/setColumnID.d.ts +0 -11
  200. package/dist/schema/setColumnID.d.ts.map +0 -1
  201. package/dist/schema/setColumnID.js +0 -24
  202. package/dist/schema/setColumnID.js.map +0 -1
  203. package/dist/schema/traverseFields.d.ts +0 -36
  204. package/dist/schema/traverseFields.d.ts.map +0 -1
  205. package/dist/schema/traverseFields.js +0 -614
  206. package/dist/schema/traverseFields.js.map +0 -1
  207. package/dist/schema/validateExistingBlockIsIdentical.d.ts +0 -12
  208. package/dist/schema/validateExistingBlockIsIdentical.d.ts.map +0 -1
  209. package/dist/schema/validateExistingBlockIsIdentical.js +0 -76
  210. package/dist/schema/validateExistingBlockIsIdentical.js.map +0 -1
  211. package/dist/transactions/beginTransaction.d.ts +0 -3
  212. package/dist/transactions/beginTransaction.d.ts.map +0 -1
  213. package/dist/transactions/beginTransaction.js +0 -51
  214. package/dist/transactions/beginTransaction.js.map +0 -1
  215. package/dist/transactions/commitTransaction.d.ts +0 -3
  216. package/dist/transactions/commitTransaction.d.ts.map +0 -1
  217. package/dist/transactions/commitTransaction.js +0 -15
  218. package/dist/transactions/commitTransaction.js.map +0 -1
  219. package/dist/transactions/rollbackTransaction.d.ts +0 -3
  220. package/dist/transactions/rollbackTransaction.d.ts.map +0 -1
  221. package/dist/transactions/rollbackTransaction.js +0 -14
  222. package/dist/transactions/rollbackTransaction.js.map +0 -1
  223. package/dist/transform/read/hasManyNumber.d.ts +0 -10
  224. package/dist/transform/read/hasManyNumber.d.ts.map +0 -1
  225. package/dist/transform/read/hasManyNumber.js +0 -10
  226. package/dist/transform/read/hasManyNumber.js.map +0 -1
  227. package/dist/transform/read/hasManyText.d.ts +0 -10
  228. package/dist/transform/read/hasManyText.d.ts.map +0 -1
  229. package/dist/transform/read/hasManyText.js +0 -10
  230. package/dist/transform/read/hasManyText.js.map +0 -1
  231. package/dist/transform/read/index.d.ts +0 -13
  232. package/dist/transform/read/index.d.ts.map +0 -1
  233. package/dist/transform/read/index.js +0 -44
  234. package/dist/transform/read/index.js.map +0 -1
  235. package/dist/transform/read/relationship.d.ts +0 -10
  236. package/dist/transform/read/relationship.d.ts.map +0 -1
  237. package/dist/transform/read/relationship.js +0 -60
  238. package/dist/transform/read/relationship.js.map +0 -1
  239. package/dist/transform/read/traverseFields.d.ts +0 -57
  240. package/dist/transform/read/traverseFields.d.ts.map +0 -1
  241. package/dist/transform/read/traverseFields.js +0 -435
  242. package/dist/transform/read/traverseFields.js.map +0 -1
  243. package/dist/transform/write/array.d.ts +0 -26
  244. package/dist/transform/write/array.d.ts.map +0 -1
  245. package/dist/transform/write/array.js +0 -58
  246. package/dist/transform/write/array.js.map +0 -1
  247. package/dist/transform/write/blocks.d.ts +0 -25
  248. package/dist/transform/write/blocks.d.ts.map +0 -1
  249. package/dist/transform/write/blocks.js +0 -54
  250. package/dist/transform/write/blocks.js.map +0 -1
  251. package/dist/transform/write/index.d.ts +0 -13
  252. package/dist/transform/write/index.d.ts.map +0 -1
  253. package/dist/transform/write/index.js +0 -41
  254. package/dist/transform/write/index.js.map +0 -1
  255. package/dist/transform/write/numbers.d.ts +0 -8
  256. package/dist/transform/write/numbers.d.ts.map +0 -1
  257. package/dist/transform/write/numbers.js +0 -11
  258. package/dist/transform/write/numbers.js.map +0 -1
  259. package/dist/transform/write/relationships.d.ts +0 -10
  260. package/dist/transform/write/relationships.d.ts.map +0 -1
  261. package/dist/transform/write/relationships.js +0 -23
  262. package/dist/transform/write/relationships.js.map +0 -1
  263. package/dist/transform/write/selects.d.ts +0 -8
  264. package/dist/transform/write/selects.d.ts.map +0 -1
  265. package/dist/transform/write/selects.js +0 -20
  266. package/dist/transform/write/selects.js.map +0 -1
  267. package/dist/transform/write/texts.d.ts +0 -8
  268. package/dist/transform/write/texts.d.ts.map +0 -1
  269. package/dist/transform/write/texts.js +0 -11
  270. package/dist/transform/write/texts.js.map +0 -1
  271. package/dist/transform/write/traverseFields.d.ts +0 -50
  272. package/dist/transform/write/traverseFields.d.ts.map +0 -1
  273. package/dist/transform/write/traverseFields.js +0 -445
  274. package/dist/transform/write/traverseFields.js.map +0 -1
  275. package/dist/transform/write/types.d.ts +0 -43
  276. package/dist/transform/write/types.d.ts.map +0 -1
  277. package/dist/transform/write/types.js +0 -3
  278. package/dist/transform/write/types.js.map +0 -1
  279. package/dist/update.d.ts +0 -3
  280. package/dist/update.d.ts.map +0 -1
  281. package/dist/update.js +0 -54
  282. package/dist/update.js.map +0 -1
  283. package/dist/updateGlobal.d.ts +0 -4
  284. package/dist/updateGlobal.d.ts.map +0 -1
  285. package/dist/updateGlobal.js +0 -25
  286. package/dist/updateGlobal.js.map +0 -1
  287. package/dist/updateGlobalVersion.d.ts +0 -4
  288. package/dist/updateGlobalVersion.d.ts.map +0 -1
  289. package/dist/updateGlobalVersion.js +0 -36
  290. package/dist/updateGlobalVersion.js.map +0 -1
  291. package/dist/updateVersion.d.ts +0 -4
  292. package/dist/updateVersion.d.ts.map +0 -1
  293. package/dist/updateVersion.js +0 -36
  294. package/dist/updateVersion.js.map +0 -1
  295. package/dist/upsertRow/deleteExistingArrayRows.d.ts +0 -10
  296. package/dist/upsertRow/deleteExistingArrayRows.d.ts.map +0 -1
  297. package/dist/upsertRow/deleteExistingArrayRows.js +0 -10
  298. package/dist/upsertRow/deleteExistingArrayRows.js.map +0 -1
  299. package/dist/upsertRow/deleteExistingRowsByPath.d.ts +0 -14
  300. package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +0 -1
  301. package/dist/upsertRow/deleteExistingRowsByPath.js +0 -33
  302. package/dist/upsertRow/deleteExistingRowsByPath.js.map +0 -1
  303. package/dist/upsertRow/index.d.ts +0 -4
  304. package/dist/upsertRow/index.d.ts.map +0 -1
  305. package/dist/upsertRow/index.js +0 -281
  306. package/dist/upsertRow/index.js.map +0 -1
  307. package/dist/upsertRow/insertArrays.d.ts +0 -13
  308. package/dist/upsertRow/insertArrays.d.ts.map +0 -1
  309. package/dist/upsertRow/insertArrays.js +0 -68
  310. package/dist/upsertRow/insertArrays.js.map +0 -1
  311. package/dist/upsertRow/types.d.ts +0 -32
  312. package/dist/upsertRow/types.d.ts.map +0 -1
  313. package/dist/upsertRow/types.js +0 -3
  314. package/dist/upsertRow/types.js.map +0 -1
  315. package/dist/utilities/appendPrefixToKeys.d.ts +0 -2
  316. package/dist/utilities/appendPrefixToKeys.d.ts.map +0 -1
  317. package/dist/utilities/appendPrefixToKeys.js +0 -6
  318. package/dist/utilities/appendPrefixToKeys.js.map +0 -1
  319. package/dist/utilities/createBlocksMap.d.ts +0 -5
  320. package/dist/utilities/createBlocksMap.d.ts.map +0 -1
  321. package/dist/utilities/createBlocksMap.js +0 -29
  322. package/dist/utilities/createBlocksMap.js.map +0 -1
  323. package/dist/utilities/createMigrationTable.d.ts +0 -3
  324. package/dist/utilities/createMigrationTable.d.ts.map +0 -1
  325. package/dist/utilities/createMigrationTable.js +0 -13
  326. package/dist/utilities/createMigrationTable.js.map +0 -1
  327. package/dist/utilities/createRelationshipMap.d.ts +0 -2
  328. package/dist/utilities/createRelationshipMap.d.ts.map +0 -1
  329. package/dist/utilities/createRelationshipMap.js +0 -19
  330. package/dist/utilities/createRelationshipMap.js.map +0 -1
  331. package/dist/utilities/hasLocalesTable.d.ts +0 -3
  332. package/dist/utilities/hasLocalesTable.d.ts.map +0 -1
  333. package/dist/utilities/hasLocalesTable.js +0 -11
  334. package/dist/utilities/hasLocalesTable.js.map +0 -1
  335. package/dist/utilities/isArrayOfRows.d.ts +0 -2
  336. package/dist/utilities/isArrayOfRows.d.ts.map +0 -1
  337. package/dist/utilities/isArrayOfRows.js +0 -5
  338. package/dist/utilities/isArrayOfRows.js.map +0 -1
  339. package/dist/utilities/migrationTableExists.d.ts +0 -3
  340. package/dist/utilities/migrationTableExists.d.ts.map +0 -1
  341. package/dist/utilities/migrationTableExists.js +0 -9
  342. package/dist/utilities/migrationTableExists.js.map +0 -1
  343. package/dist/utilities/parseError.d.ts +0 -5
  344. package/dist/utilities/parseError.d.ts.map +0 -1
  345. package/dist/utilities/parseError.js +0 -17
  346. package/dist/utilities/parseError.js.map +0 -1
  347. package/dist/utilities/pushDevSchema.d.ts +0 -9
  348. package/dist/utilities/pushDevSchema.d.ts.map +0 -1
  349. package/dist/utilities/pushDevSchema.js +0 -58
  350. package/dist/utilities/pushDevSchema.js.map +0 -1
@@ -2,42 +2,6 @@ import { tabHasName } from 'payload/shared';
2
2
  export const traverseFields = ({ doc, fields, locale, path, rows })=>{
3
3
  fields.forEach((field)=>{
4
4
  switch(field.type){
5
- case 'group':
6
- {
7
- const newPath = `${path ? `${path}.` : ''}${field.name}`;
8
- const newDoc = doc?.[field.name];
9
- if (typeof newDoc === 'object' && newDoc !== null) {
10
- if (field.localized) {
11
- Object.entries(newDoc).forEach(([locale, localeDoc])=>{
12
- return traverseFields({
13
- doc: localeDoc,
14
- fields: field.fields,
15
- locale,
16
- path: newPath,
17
- rows
18
- });
19
- });
20
- } else {
21
- return traverseFields({
22
- doc: newDoc,
23
- fields: field.fields,
24
- path: newPath,
25
- rows
26
- });
27
- }
28
- }
29
- break;
30
- }
31
- case 'row':
32
- case 'collapsible':
33
- {
34
- return traverseFields({
35
- doc,
36
- fields: field.fields,
37
- path,
38
- rows
39
- });
40
- }
41
5
  case 'array':
42
6
  {
43
7
  const rowData = doc?.[field.name];
@@ -104,43 +68,45 @@ export const traverseFields = ({ doc, fields, locale, path, rows })=>{
104
68
  }
105
69
  break;
106
70
  }
107
- case 'tabs':
71
+ case 'collapsible':
72
+ // falls through
73
+ case 'row':
108
74
  {
109
- return field.tabs.forEach((tab)=>{
110
- if (tabHasName(tab)) {
111
- const newDoc = doc?.[tab.name];
112
- const newPath = `${path ? `${path}.` : ''}${tab.name}`;
113
- if (typeof newDoc === 'object' && newDoc !== null) {
114
- if (tab.localized) {
115
- Object.entries(newDoc).forEach(([locale, localeDoc])=>{
116
- return traverseFields({
117
- doc: localeDoc,
118
- fields: tab.fields,
119
- locale,
120
- path: newPath,
121
- rows
122
- });
123
- });
124
- } else {
125
- return traverseFields({
126
- doc: newDoc,
127
- fields: tab.fields,
128
- path: newPath,
129
- rows
130
- });
131
- }
132
- }
75
+ return traverseFields({
76
+ doc,
77
+ fields: field.fields,
78
+ path,
79
+ rows
80
+ });
81
+ }
82
+ case 'group':
83
+ {
84
+ const newPath = `${path ? `${path}.` : ''}${field.name}`;
85
+ const newDoc = doc?.[field.name];
86
+ if (typeof newDoc === 'object' && newDoc !== null) {
87
+ if (field.localized) {
88
+ Object.entries(newDoc).forEach(([locale, localeDoc])=>{
89
+ return traverseFields({
90
+ doc: localeDoc,
91
+ fields: field.fields,
92
+ locale,
93
+ path: newPath,
94
+ rows
95
+ });
96
+ });
133
97
  } else {
134
- traverseFields({
135
- doc,
136
- fields: tab.fields,
137
- path,
98
+ return traverseFields({
99
+ doc: newDoc,
100
+ fields: field.fields,
101
+ path: newPath,
138
102
  rows
139
103
  });
140
104
  }
141
- });
105
+ }
106
+ break;
142
107
  }
143
108
  case 'relationship':
109
+ // falls through
144
110
  case 'upload':
145
111
  {
146
112
  if (typeof field.relationTo === 'string') {
@@ -167,7 +133,9 @@ export const traverseFields = ({ doc, fields, locale, path, rows })=>{
167
133
  } else {
168
134
  const matchedRelationship = rows.find((row)=>{
169
135
  const matchesPath = row.path === relationshipPath;
170
- if (locale) return matchesPath && locale === row.locale;
136
+ if (locale) {
137
+ return matchesPath && locale === row.locale;
138
+ }
171
139
  return row.path === relationshipPath;
172
140
  });
173
141
  if (matchedRelationship) {
@@ -183,6 +151,43 @@ export const traverseFields = ({ doc, fields, locale, path, rows })=>{
183
151
  }
184
152
  }
185
153
  }
154
+ break;
155
+ }
156
+ case 'tabs':
157
+ {
158
+ return field.tabs.forEach((tab)=>{
159
+ if (tabHasName(tab)) {
160
+ const newDoc = doc?.[tab.name];
161
+ const newPath = `${path ? `${path}.` : ''}${tab.name}`;
162
+ if (typeof newDoc === 'object' && newDoc !== null) {
163
+ if (tab.localized) {
164
+ Object.entries(newDoc).forEach(([locale, localeDoc])=>{
165
+ return traverseFields({
166
+ doc: localeDoc,
167
+ fields: tab.fields,
168
+ locale,
169
+ path: newPath,
170
+ rows
171
+ });
172
+ });
173
+ } else {
174
+ return traverseFields({
175
+ doc: newDoc,
176
+ fields: tab.fields,
177
+ path: newPath,
178
+ rows
179
+ });
180
+ }
181
+ }
182
+ } else {
183
+ traverseFields({
184
+ doc,
185
+ fields: tab.fields,
186
+ path,
187
+ rows
188
+ });
189
+ }
190
+ });
186
191
  }
187
192
  }
188
193
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.ts"],"sourcesContent":["import type { Field } from 'payload'\n\nimport { tabHasName } from 'payload/shared'\n\ntype Args = {\n doc: Record<string, unknown>\n fields: Field[]\n locale?: string\n path: string\n rows: Record<string, unknown>[]\n}\n\nexport const traverseFields = ({ doc, fields, locale, path, rows }: Args) => {\n fields.forEach((field) => {\n switch (field.type) {\n case 'group': {\n const newPath = `${path ? `${path}.` : ''}${field.name}`\n const newDoc = doc?.[field.name]\n\n if (typeof newDoc === 'object' && newDoc !== null) {\n if (field.localized) {\n Object.entries(newDoc).forEach(([locale, localeDoc]) => {\n return traverseFields({\n doc: localeDoc,\n fields: field.fields,\n locale,\n path: newPath,\n rows,\n })\n })\n } else {\n return traverseFields({\n doc: newDoc as Record<string, unknown>,\n fields: field.fields,\n path: newPath,\n rows,\n })\n }\n }\n\n break\n }\n\n case 'row':\n case 'collapsible': {\n return traverseFields({\n doc,\n fields: field.fields,\n path,\n rows,\n })\n }\n\n case 'array': {\n const rowData = doc?.[field.name]\n\n if (field.localized && typeof rowData === 'object' && rowData !== null) {\n Object.entries(rowData).forEach(([locale, localeRows]) => {\n if (Array.isArray(localeRows)) {\n localeRows.forEach((row, i) => {\n return traverseFields({\n doc: row as Record<string, unknown>,\n fields: field.fields,\n locale,\n path: `${path ? `${path}.` : ''}${field.name}.${i}`,\n rows,\n })\n })\n }\n })\n }\n\n if (Array.isArray(rowData)) {\n rowData.forEach((row, i) => {\n return traverseFields({\n doc: row as Record<string, unknown>,\n fields: field.fields,\n path: `${path ? `${path}.` : ''}${field.name}.${i}`,\n rows,\n })\n })\n }\n\n break\n }\n\n case 'blocks': {\n const rowData = doc?.[field.name]\n\n if (field.localized && typeof rowData === 'object' && rowData !== null) {\n Object.entries(rowData).forEach(([locale, localeRows]) => {\n if (Array.isArray(localeRows)) {\n localeRows.forEach((row, i) => {\n const matchedBlock = field.blocks.find((block) => block.slug === row.blockType)\n\n if (matchedBlock) {\n return traverseFields({\n doc: row as Record<string, unknown>,\n fields: matchedBlock.fields,\n locale,\n path: `${path ? `${path}.` : ''}${field.name}.${i}`,\n rows,\n })\n }\n })\n }\n })\n }\n\n if (Array.isArray(rowData)) {\n rowData.forEach((row, i) => {\n const matchedBlock = field.blocks.find((block) => block.slug === row.blockType)\n\n if (matchedBlock) {\n return traverseFields({\n doc: row as Record<string, unknown>,\n fields: matchedBlock.fields,\n path: `${path ? `${path}.` : ''}${field.name}.${i}`,\n rows,\n })\n }\n })\n }\n\n break\n }\n\n case 'tabs': {\n return field.tabs.forEach((tab) => {\n if (tabHasName(tab)) {\n const newDoc = doc?.[tab.name]\n const newPath = `${path ? `${path}.` : ''}${tab.name}`\n\n if (typeof newDoc === 'object' && newDoc !== null) {\n if (tab.localized) {\n Object.entries(newDoc).forEach(([locale, localeDoc]) => {\n return traverseFields({\n doc: localeDoc,\n fields: tab.fields,\n locale,\n path: newPath,\n rows,\n })\n })\n } else {\n return traverseFields({\n doc: newDoc as Record<string, unknown>,\n fields: tab.fields,\n path: newPath,\n rows,\n })\n }\n }\n } else {\n traverseFields({\n doc,\n fields: tab.fields,\n path,\n rows,\n })\n }\n })\n }\n\n case 'relationship':\n case 'upload': {\n if (typeof field.relationTo === 'string') {\n if (field.type === 'upload' || !field.hasMany) {\n const relationshipPath = `${path ? `${path}.` : ''}${field.name}`\n\n if (field.localized) {\n const matchedRelationshipsWithLocales = rows.filter(\n (row) => row.path === relationshipPath,\n )\n\n if (matchedRelationshipsWithLocales.length && !doc[field.name]) {\n doc[field.name] = {}\n }\n\n const newDoc = doc[field.name] as Record<string, unknown>\n\n matchedRelationshipsWithLocales.forEach((localeRow) => {\n if (typeof localeRow.locale === 'string') {\n const [, id] = Object.entries(localeRow).find(\n ([key, val]) =>\n val !== null && !['id', 'locale', 'order', 'parent_id', 'path'].includes(key),\n )\n\n newDoc[localeRow.locale] = id\n }\n })\n } else {\n const matchedRelationship = rows.find((row) => {\n const matchesPath = row.path === relationshipPath\n\n if (locale) return matchesPath && locale === row.locale\n\n return row.path === relationshipPath\n })\n\n if (matchedRelationship) {\n const [, id] = Object.entries(matchedRelationship).find(\n ([key, val]) =>\n val !== null && !['id', 'locale', 'order', 'parent_id', 'path'].includes(key),\n )\n\n doc[field.name] = id\n }\n }\n }\n }\n }\n }\n })\n}\n"],"names":["tabHasName","traverseFields","doc","fields","locale","path","rows","forEach","field","type","newPath","name","newDoc","localized","Object","entries","localeDoc","rowData","localeRows","Array","isArray","row","i","matchedBlock","blocks","find","block","slug","blockType","tabs","tab","relationTo","hasMany","relationshipPath","matchedRelationshipsWithLocales","filter","length","localeRow","id","key","val","includes","matchedRelationship","matchesPath"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.ts"],"sourcesContent":["import type { Field } from 'payload'\n\nimport { tabHasName } from 'payload/shared'\n\ntype Args = {\n doc: Record<string, unknown>\n fields: Field[]\n locale?: string\n path: string\n rows: Record<string, unknown>[]\n}\n\nexport const traverseFields = ({ doc, fields, locale, path, rows }: Args) => {\n fields.forEach((field) => {\n switch (field.type) {\n case 'array': {\n const rowData = doc?.[field.name]\n\n if (field.localized && typeof rowData === 'object' && rowData !== null) {\n Object.entries(rowData).forEach(([locale, localeRows]) => {\n if (Array.isArray(localeRows)) {\n localeRows.forEach((row, i) => {\n return traverseFields({\n doc: row as Record<string, unknown>,\n fields: field.fields,\n locale,\n path: `${path ? `${path}.` : ''}${field.name}.${i}`,\n rows,\n })\n })\n }\n })\n }\n\n if (Array.isArray(rowData)) {\n rowData.forEach((row, i) => {\n return traverseFields({\n doc: row as Record<string, unknown>,\n fields: field.fields,\n path: `${path ? `${path}.` : ''}${field.name}.${i}`,\n rows,\n })\n })\n }\n\n break\n }\n\n case 'blocks': {\n const rowData = doc?.[field.name]\n\n if (field.localized && typeof rowData === 'object' && rowData !== null) {\n Object.entries(rowData).forEach(([locale, localeRows]) => {\n if (Array.isArray(localeRows)) {\n localeRows.forEach((row, i) => {\n const matchedBlock = field.blocks.find((block) => block.slug === row.blockType)\n\n if (matchedBlock) {\n return traverseFields({\n doc: row as Record<string, unknown>,\n fields: matchedBlock.fields,\n locale,\n path: `${path ? `${path}.` : ''}${field.name}.${i}`,\n rows,\n })\n }\n })\n }\n })\n }\n\n if (Array.isArray(rowData)) {\n rowData.forEach((row, i) => {\n const matchedBlock = field.blocks.find((block) => block.slug === row.blockType)\n\n if (matchedBlock) {\n return traverseFields({\n doc: row as Record<string, unknown>,\n fields: matchedBlock.fields,\n path: `${path ? `${path}.` : ''}${field.name}.${i}`,\n rows,\n })\n }\n })\n }\n\n break\n }\n case 'collapsible':\n // falls through\n case 'row': {\n return traverseFields({\n doc,\n fields: field.fields,\n path,\n rows,\n })\n }\n\n case 'group': {\n const newPath = `${path ? `${path}.` : ''}${field.name}`\n const newDoc = doc?.[field.name]\n\n if (typeof newDoc === 'object' && newDoc !== null) {\n if (field.localized) {\n Object.entries(newDoc).forEach(([locale, localeDoc]) => {\n return traverseFields({\n doc: localeDoc,\n fields: field.fields,\n locale,\n path: newPath,\n rows,\n })\n })\n } else {\n return traverseFields({\n doc: newDoc as Record<string, unknown>,\n fields: field.fields,\n path: newPath,\n rows,\n })\n }\n }\n\n break\n }\n\n case 'relationship':\n // falls through\n case 'upload': {\n if (typeof field.relationTo === 'string') {\n if (field.type === 'upload' || !field.hasMany) {\n const relationshipPath = `${path ? `${path}.` : ''}${field.name}`\n\n if (field.localized) {\n const matchedRelationshipsWithLocales = rows.filter(\n (row) => row.path === relationshipPath,\n )\n\n if (matchedRelationshipsWithLocales.length && !doc[field.name]) {\n doc[field.name] = {}\n }\n\n const newDoc = doc[field.name] as Record<string, unknown>\n\n matchedRelationshipsWithLocales.forEach((localeRow) => {\n if (typeof localeRow.locale === 'string') {\n const [, id] = Object.entries(localeRow).find(\n ([key, val]) =>\n val !== null && !['id', 'locale', 'order', 'parent_id', 'path'].includes(key),\n )\n\n newDoc[localeRow.locale] = id\n }\n })\n } else {\n const matchedRelationship = rows.find((row) => {\n const matchesPath = row.path === relationshipPath\n\n if (locale) {\n return matchesPath && locale === row.locale\n }\n\n return row.path === relationshipPath\n })\n\n if (matchedRelationship) {\n const [, id] = Object.entries(matchedRelationship).find(\n ([key, val]) =>\n val !== null && !['id', 'locale', 'order', 'parent_id', 'path'].includes(key),\n )\n\n doc[field.name] = id\n }\n }\n }\n }\n break\n }\n case 'tabs': {\n return field.tabs.forEach((tab) => {\n if (tabHasName(tab)) {\n const newDoc = doc?.[tab.name]\n const newPath = `${path ? `${path}.` : ''}${tab.name}`\n\n if (typeof newDoc === 'object' && newDoc !== null) {\n if (tab.localized) {\n Object.entries(newDoc).forEach(([locale, localeDoc]) => {\n return traverseFields({\n doc: localeDoc,\n fields: tab.fields,\n locale,\n path: newPath,\n rows,\n })\n })\n } else {\n return traverseFields({\n doc: newDoc as Record<string, unknown>,\n fields: tab.fields,\n path: newPath,\n rows,\n })\n }\n }\n } else {\n traverseFields({\n doc,\n fields: tab.fields,\n path,\n rows,\n })\n }\n })\n }\n }\n })\n}\n"],"names":["tabHasName","traverseFields","doc","fields","locale","path","rows","forEach","field","type","rowData","name","localized","Object","entries","localeRows","Array","isArray","row","i","matchedBlock","blocks","find","block","slug","blockType","newPath","newDoc","localeDoc","relationTo","hasMany","relationshipPath","matchedRelationshipsWithLocales","filter","length","localeRow","id","key","val","includes","matchedRelationship","matchesPath","tabs","tab"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/predefinedMigrations/v2-v3/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAiBtD,KAAK,IAAI,GAAG;IACV,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;CAC9B,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,4BAAmC,IAAI,kBA8OxE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/predefinedMigrations/v2-v3/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAiBtD,KAAK,IAAI,GAAG;IACV,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;CAC9B,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,4BAAmC,IAAI,kBA8OxE,CAAA"}
@@ -22,10 +22,10 @@ const require = createRequire(import.meta.url);
22
22
  * @param req
23
23
  */ export const migratePostgresV2toV3 = async ({ debug, payload, req })=>{
24
24
  const adapter = payload.db;
25
- const db = adapter.sessions[await req.transactionID]?.db;
25
+ const db = adapter.sessions[await req.transactionID].db;
26
26
  const dir = payload.db.migrationDir;
27
27
  // get the drizzle migrateUpSQL from drizzle using the last schema
28
- const { generateDrizzleJson, generateMigration } = require('drizzle-kit/payload');
28
+ const { generateDrizzleJson, generateMigration } = require('drizzle-kit/api');
29
29
  const drizzleJsonAfter = generateDrizzleJson(adapter.schema);
30
30
  // Get the previous migration snapshot
31
31
  const previousSnapshot = fs.readdirSync(dir).filter((file)=>file.endsWith('.json') && !file.endsWith('relationships_v2_v3.json')).sort().reverse()?.[0];
@@ -77,7 +77,7 @@ const require = createRequire(import.meta.url);
77
77
  });
78
78
  if (collection.versions) {
79
79
  const versionsTableName = adapter.tableNameMap.get(`_${toSnakeCase(collection.slug)}${adapter.versionsSuffix}`);
80
- const versionFields = buildVersionCollectionFields(collection);
80
+ const versionFields = buildVersionCollectionFields(payload.config, collection);
81
81
  const versionPathsToQuery = new Set();
82
82
  traverseFields({
83
83
  adapter,
@@ -140,7 +140,7 @@ const require = createRequire(import.meta.url);
140
140
  });
141
141
  if (global.versions) {
142
142
  const versionsTableName = adapter.tableNameMap.get(`_${toSnakeCase(global.slug)}${adapter.versionsSuffix}`);
143
- const versionFields = buildVersionGlobalFields(global);
143
+ const versionFields = buildVersionGlobalFields(payload.config, global);
144
144
  const versionPathsToQuery = new Set();
145
145
  traverseFields({
146
146
  adapter,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/predefinedMigrations/v2-v3/index.ts"],"sourcesContent":["import type { DrizzleSnapshotJSON } from 'drizzle-kit/payload'\nimport type { Payload, PayloadRequest } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport fs from 'fs'\nimport { createRequire } from 'module'\nimport { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { PostgresAdapter } from '../../types.js'\nimport type { PathsToQuery } from './types.js'\n\nimport { groupUpSQLStatements } from './groupUpSQLStatements.js'\nimport { migrateRelationships } from './migrateRelationships.js'\nimport { traverseFields } from './traverseFields.js'\n\nconst require = createRequire(import.meta.url)\n\ntype Args = {\n debug?: boolean\n payload: Payload\n req?: Partial<PayloadRequest>\n}\n\n/**\n * Moves upload and relationship columns from the join table and into the tables while moving data\n * This is done in the following order:\n * ADD COLUMNs\n * -- manipulate data to move relationships to new columns\n * ADD CONSTRAINTs\n * NOT NULLs\n * DROP TABLEs\n * DROP CONSTRAINTs\n * DROP COLUMNs\n * @param debug\n * @param payload\n * @param req\n */\nexport const migratePostgresV2toV3 = async ({ debug, payload, req }: Args) => {\n const adapter = payload.db as PostgresAdapter\n const db = adapter.sessions[await req.transactionID]?.db\n const dir = payload.db.migrationDir\n\n // get the drizzle migrateUpSQL from drizzle using the last schema\n const { generateDrizzleJson, generateMigration } = require('drizzle-kit/payload')\n const drizzleJsonAfter = generateDrizzleJson(adapter.schema)\n\n // Get the previous migration snapshot\n const previousSnapshot = fs\n .readdirSync(dir)\n .filter((file) => file.endsWith('.json') && !file.endsWith('relationships_v2_v3.json'))\n .sort()\n .reverse()?.[0]\n\n if (!previousSnapshot) {\n throw new Error(\n `No previous migration schema file found! A prior migration from v2 is required to migrate to v3.`,\n )\n }\n\n const drizzleJsonBefore = JSON.parse(\n fs.readFileSync(`${dir}/${previousSnapshot}`, 'utf8'),\n ) as DrizzleSnapshotJSON\n\n const generatedSQL = await generateMigration(drizzleJsonBefore, drizzleJsonAfter)\n\n if (!generatedSQL.length) {\n payload.logger.info(`No schema changes needed.`)\n process.exit(0)\n }\n\n const sqlUpStatements = groupUpSQLStatements(generatedSQL)\n\n const addColumnsStatement = sqlUpStatements.addColumn.join('\\n')\n\n if (debug) {\n payload.logger.info('CREATING NEW RELATIONSHIP COLUMNS')\n payload.logger.info(addColumnsStatement)\n }\n\n await db.execute(sql.raw(addColumnsStatement))\n\n for (const collection of payload.config.collections) {\n const tableName = adapter.tableNameMap.get(toSnakeCase(collection.slug))\n const pathsToQuery: PathsToQuery = new Set()\n\n traverseFields({\n adapter,\n collectionSlug: collection.slug,\n columnPrefix: '',\n db,\n disableNotNull: false,\n fields: collection.fields,\n isVersions: false,\n newTableName: tableName,\n parentTableName: tableName,\n path: '',\n pathsToQuery,\n payload,\n rootTableName: tableName,\n })\n\n await migrateRelationships({\n adapter,\n collectionSlug: collection.slug,\n db,\n debug,\n fields: collection.fields,\n isVersions: false,\n pathsToQuery,\n payload,\n req,\n tableName,\n })\n\n if (collection.versions) {\n const versionsTableName = adapter.tableNameMap.get(\n `_${toSnakeCase(collection.slug)}${adapter.versionsSuffix}`,\n )\n const versionFields = buildVersionCollectionFields(collection)\n const versionPathsToQuery: PathsToQuery = new Set()\n\n traverseFields({\n adapter,\n collectionSlug: collection.slug,\n columnPrefix: '',\n db,\n disableNotNull: true,\n fields: versionFields,\n isVersions: true,\n newTableName: versionsTableName,\n parentTableName: versionsTableName,\n path: '',\n pathsToQuery: versionPathsToQuery,\n payload,\n rootTableName: versionsTableName,\n })\n\n await migrateRelationships({\n adapter,\n collectionSlug: collection.slug,\n db,\n debug,\n fields: versionFields,\n isVersions: true,\n pathsToQuery: versionPathsToQuery,\n payload,\n req,\n tableName: versionsTableName,\n })\n }\n }\n\n for (const global of payload.config.globals) {\n const tableName = adapter.tableNameMap.get(toSnakeCase(global.slug))\n\n const pathsToQuery: PathsToQuery = new Set()\n\n traverseFields({\n adapter,\n columnPrefix: '',\n db,\n disableNotNull: false,\n fields: global.fields,\n globalSlug: global.slug,\n isVersions: false,\n newTableName: tableName,\n parentTableName: tableName,\n path: '',\n pathsToQuery,\n payload,\n rootTableName: tableName,\n })\n\n await migrateRelationships({\n adapter,\n db,\n debug,\n fields: global.fields,\n globalSlug: global.slug,\n isVersions: false,\n pathsToQuery,\n payload,\n req,\n tableName,\n })\n\n if (global.versions) {\n const versionsTableName = adapter.tableNameMap.get(\n `_${toSnakeCase(global.slug)}${adapter.versionsSuffix}`,\n )\n\n const versionFields = buildVersionGlobalFields(global)\n\n const versionPathsToQuery: PathsToQuery = new Set()\n\n traverseFields({\n adapter,\n columnPrefix: '',\n db,\n disableNotNull: true,\n fields: versionFields,\n globalSlug: global.slug,\n isVersions: true,\n newTableName: versionsTableName,\n parentTableName: versionsTableName,\n path: '',\n pathsToQuery: versionPathsToQuery,\n payload,\n rootTableName: versionsTableName,\n })\n\n await migrateRelationships({\n adapter,\n db,\n debug,\n fields: versionFields,\n globalSlug: global.slug,\n isVersions: true,\n pathsToQuery: versionPathsToQuery,\n payload,\n req,\n tableName: versionsTableName,\n })\n }\n }\n\n // ADD CONSTRAINT\n const addConstraintsStatement = sqlUpStatements.addConstraint.join('\\n')\n\n if (debug) {\n payload.logger.info('ADDING CONSTRAINTS')\n payload.logger.info(addConstraintsStatement)\n }\n\n await db.execute(sql.raw(addConstraintsStatement))\n\n // NOT NULL\n const notNullStatements = sqlUpStatements.notNull.join('\\n')\n\n if (debug) {\n payload.logger.info('NOT NULL CONSTRAINTS')\n payload.logger.info(notNullStatements)\n }\n\n await db.execute(sql.raw(notNullStatements))\n\n // DROP TABLE\n const dropTablesStatement = sqlUpStatements.dropTable.join('\\n')\n\n if (debug) {\n payload.logger.info('DROPPING TABLES')\n payload.logger.info(dropTablesStatement)\n }\n\n await db.execute(sql.raw(dropTablesStatement))\n\n // DROP CONSTRAINT\n const dropConstraintsStatement = sqlUpStatements.dropConstraint.join('\\n')\n\n if (debug) {\n payload.logger.info('DROPPING CONSTRAINTS')\n payload.logger.info(dropConstraintsStatement)\n }\n\n await db.execute(sql.raw(dropConstraintsStatement))\n\n // DROP COLUMN\n const dropColumnsStatement = sqlUpStatements.dropColumn.join('\\n')\n\n if (debug) {\n payload.logger.info('DROPPING COLUMNS')\n payload.logger.info(dropColumnsStatement)\n }\n\n await db.execute(sql.raw(dropColumnsStatement))\n}\n"],"names":["sql","fs","createRequire","buildVersionCollectionFields","buildVersionGlobalFields","toSnakeCase","groupUpSQLStatements","migrateRelationships","traverseFields","require","url","migratePostgresV2toV3","debug","payload","req","adapter","db","sessions","transactionID","dir","migrationDir","generateDrizzleJson","generateMigration","drizzleJsonAfter","schema","previousSnapshot","readdirSync","filter","file","endsWith","sort","reverse","Error","drizzleJsonBefore","JSON","parse","readFileSync","generatedSQL","length","logger","info","process","exit","sqlUpStatements","addColumnsStatement","addColumn","join","execute","raw","collection","config","collections","tableName","tableNameMap","get","slug","pathsToQuery","Set","collectionSlug","columnPrefix","disableNotNull","fields","isVersions","newTableName","parentTableName","path","rootTableName","versions","versionsTableName","versionsSuffix","versionFields","versionPathsToQuery","global","globals","globalSlug","addConstraintsStatement","addConstraint","notNullStatements","notNull","dropTablesStatement","dropTable","dropConstraintsStatement","dropConstraint","dropColumnsStatement","dropColumn"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/predefinedMigrations/v2-v3/index.ts"],"sourcesContent":["import type { TransactionPg } from '@payloadcms/drizzle/types'\nimport type { DrizzleSnapshotJSON } from 'drizzle-kit/api'\nimport type { Payload, PayloadRequest } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport fs from 'fs'\nimport { createRequire } from 'module'\nimport { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { PostgresAdapter } from '../../types.js'\nimport type { PathsToQuery } from './types.js'\n\nimport { groupUpSQLStatements } from './groupUpSQLStatements.js'\nimport { migrateRelationships } from './migrateRelationships.js'\nimport { traverseFields } from './traverseFields.js'\n\nconst require = createRequire(import.meta.url)\n\ntype Args = {\n debug?: boolean\n payload: Payload\n req?: Partial<PayloadRequest>\n}\n\n/**\n * Moves upload and relationship columns from the join table and into the tables while moving data\n * This is done in the following order:\n * ADD COLUMNs\n * -- manipulate data to move relationships to new columns\n * ADD CONSTRAINTs\n * NOT NULLs\n * DROP TABLEs\n * DROP CONSTRAINTs\n * DROP COLUMNs\n * @param debug\n * @param payload\n * @param req\n */\nexport const migratePostgresV2toV3 = async ({ debug, payload, req }: Args) => {\n const adapter = payload.db as unknown as PostgresAdapter\n const db = adapter.sessions[await req.transactionID].db as TransactionPg\n const dir = payload.db.migrationDir\n\n // get the drizzle migrateUpSQL from drizzle using the last schema\n const { generateDrizzleJson, generateMigration } = require('drizzle-kit/api')\n const drizzleJsonAfter = generateDrizzleJson(adapter.schema)\n\n // Get the previous migration snapshot\n const previousSnapshot = fs\n .readdirSync(dir)\n .filter((file) => file.endsWith('.json') && !file.endsWith('relationships_v2_v3.json'))\n .sort()\n .reverse()?.[0]\n\n if (!previousSnapshot) {\n throw new Error(\n `No previous migration schema file found! A prior migration from v2 is required to migrate to v3.`,\n )\n }\n\n const drizzleJsonBefore = JSON.parse(\n fs.readFileSync(`${dir}/${previousSnapshot}`, 'utf8'),\n ) as DrizzleSnapshotJSON\n\n const generatedSQL = await generateMigration(drizzleJsonBefore, drizzleJsonAfter)\n\n if (!generatedSQL.length) {\n payload.logger.info(`No schema changes needed.`)\n process.exit(0)\n }\n\n const sqlUpStatements = groupUpSQLStatements(generatedSQL)\n\n const addColumnsStatement = sqlUpStatements.addColumn.join('\\n')\n\n if (debug) {\n payload.logger.info('CREATING NEW RELATIONSHIP COLUMNS')\n payload.logger.info(addColumnsStatement)\n }\n\n await db.execute(sql.raw(addColumnsStatement))\n\n for (const collection of payload.config.collections) {\n const tableName = adapter.tableNameMap.get(toSnakeCase(collection.slug))\n const pathsToQuery: PathsToQuery = new Set()\n\n traverseFields({\n adapter,\n collectionSlug: collection.slug,\n columnPrefix: '',\n db,\n disableNotNull: false,\n fields: collection.fields,\n isVersions: false,\n newTableName: tableName,\n parentTableName: tableName,\n path: '',\n pathsToQuery,\n payload,\n rootTableName: tableName,\n })\n\n await migrateRelationships({\n adapter,\n collectionSlug: collection.slug,\n db,\n debug,\n fields: collection.fields,\n isVersions: false,\n pathsToQuery,\n payload,\n req,\n tableName,\n })\n\n if (collection.versions) {\n const versionsTableName = adapter.tableNameMap.get(\n `_${toSnakeCase(collection.slug)}${adapter.versionsSuffix}`,\n )\n const versionFields = buildVersionCollectionFields(payload.config, collection)\n const versionPathsToQuery: PathsToQuery = new Set()\n\n traverseFields({\n adapter,\n collectionSlug: collection.slug,\n columnPrefix: '',\n db,\n disableNotNull: true,\n fields: versionFields,\n isVersions: true,\n newTableName: versionsTableName,\n parentTableName: versionsTableName,\n path: '',\n pathsToQuery: versionPathsToQuery,\n payload,\n rootTableName: versionsTableName,\n })\n\n await migrateRelationships({\n adapter,\n collectionSlug: collection.slug,\n db,\n debug,\n fields: versionFields,\n isVersions: true,\n pathsToQuery: versionPathsToQuery,\n payload,\n req,\n tableName: versionsTableName,\n })\n }\n }\n\n for (const global of payload.config.globals) {\n const tableName = adapter.tableNameMap.get(toSnakeCase(global.slug))\n\n const pathsToQuery: PathsToQuery = new Set()\n\n traverseFields({\n adapter,\n columnPrefix: '',\n db,\n disableNotNull: false,\n fields: global.fields,\n globalSlug: global.slug,\n isVersions: false,\n newTableName: tableName,\n parentTableName: tableName,\n path: '',\n pathsToQuery,\n payload,\n rootTableName: tableName,\n })\n\n await migrateRelationships({\n adapter,\n db,\n debug,\n fields: global.fields,\n globalSlug: global.slug,\n isVersions: false,\n pathsToQuery,\n payload,\n req,\n tableName,\n })\n\n if (global.versions) {\n const versionsTableName = adapter.tableNameMap.get(\n `_${toSnakeCase(global.slug)}${adapter.versionsSuffix}`,\n )\n\n const versionFields = buildVersionGlobalFields(payload.config, global)\n\n const versionPathsToQuery: PathsToQuery = new Set()\n\n traverseFields({\n adapter,\n columnPrefix: '',\n db,\n disableNotNull: true,\n fields: versionFields,\n globalSlug: global.slug,\n isVersions: true,\n newTableName: versionsTableName,\n parentTableName: versionsTableName,\n path: '',\n pathsToQuery: versionPathsToQuery,\n payload,\n rootTableName: versionsTableName,\n })\n\n await migrateRelationships({\n adapter,\n db,\n debug,\n fields: versionFields,\n globalSlug: global.slug,\n isVersions: true,\n pathsToQuery: versionPathsToQuery,\n payload,\n req,\n tableName: versionsTableName,\n })\n }\n }\n\n // ADD CONSTRAINT\n const addConstraintsStatement = sqlUpStatements.addConstraint.join('\\n')\n\n if (debug) {\n payload.logger.info('ADDING CONSTRAINTS')\n payload.logger.info(addConstraintsStatement)\n }\n\n await db.execute(sql.raw(addConstraintsStatement))\n\n // NOT NULL\n const notNullStatements = sqlUpStatements.notNull.join('\\n')\n\n if (debug) {\n payload.logger.info('NOT NULL CONSTRAINTS')\n payload.logger.info(notNullStatements)\n }\n\n await db.execute(sql.raw(notNullStatements))\n\n // DROP TABLE\n const dropTablesStatement = sqlUpStatements.dropTable.join('\\n')\n\n if (debug) {\n payload.logger.info('DROPPING TABLES')\n payload.logger.info(dropTablesStatement)\n }\n\n await db.execute(sql.raw(dropTablesStatement))\n\n // DROP CONSTRAINT\n const dropConstraintsStatement = sqlUpStatements.dropConstraint.join('\\n')\n\n if (debug) {\n payload.logger.info('DROPPING CONSTRAINTS')\n payload.logger.info(dropConstraintsStatement)\n }\n\n await db.execute(sql.raw(dropConstraintsStatement))\n\n // DROP COLUMN\n const dropColumnsStatement = sqlUpStatements.dropColumn.join('\\n')\n\n if (debug) {\n payload.logger.info('DROPPING COLUMNS')\n payload.logger.info(dropColumnsStatement)\n }\n\n await db.execute(sql.raw(dropColumnsStatement))\n}\n"],"names":["sql","fs","createRequire","buildVersionCollectionFields","buildVersionGlobalFields","toSnakeCase","groupUpSQLStatements","migrateRelationships","traverseFields","require","url","migratePostgresV2toV3","debug","payload","req","adapter","db","sessions","transactionID","dir","migrationDir","generateDrizzleJson","generateMigration","drizzleJsonAfter","schema","previousSnapshot","readdirSync","filter","file","endsWith","sort","reverse","Error","drizzleJsonBefore","JSON","parse","readFileSync","generatedSQL","length","logger","info","process","exit","sqlUpStatements","addColumnsStatement","addColumn","join","execute","raw","collection","config","collections","tableName","tableNameMap","get","slug","pathsToQuery","Set","collectionSlug","columnPrefix","disableNotNull","fields","isVersions","newTableName","parentTableName","path","rootTableName","versions","versionsTableName","versionsSuffix","versionFields","versionPathsToQuery","global","globals","globalSlug","addConstraintsStatement","addConstraint","notNullStatements","notNull","dropTablesStatement","dropTable","dropConstraintsStatement","dropConstraint","dropColumnsStatement","dropColumn"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
+ import type { TransactionPg } from '@payloadcms/drizzle/types';
1
2
  import type { Field, Payload, PayloadRequest } from 'payload';
2
- import type { DrizzleTransaction, PostgresAdapter } from '../../types.js';
3
+ import type { PostgresAdapter } from '../../types.js';
3
4
  import type { PathsToQuery } from './types.js';
4
5
  type Args = {
5
6
  adapter: PostgresAdapter;
6
7
  collectionSlug?: string;
7
- db: DrizzleTransaction;
8
+ db: TransactionPg;
8
9
  debug: boolean;
9
10
  fields: Field[];
10
11
  globalSlug?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"migrateRelationships.d.ts","sourceRoot":"","sources":["../../../src/predefinedMigrations/v2-v3/migrateRelationships.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACzE,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,YAAY,CAAA;AAI5D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,EAAE,EAAE,kBAAkB,CAAA;IACtB,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,oBAAoB,mHAY9B,IAAI,kBAkEN,CAAA"}
1
+ {"version":3,"file":"migrateRelationships.d.ts","sourceRoot":"","sources":["../../../src/predefinedMigrations/v2-v3/migrateRelationships.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,YAAY,CAAA;AAI5D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,EAAE,EAAE,aAAa,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,oBAAoB,mHAY9B,IAAI,kBAwEN,CAAA"}
@@ -1,7 +1,9 @@
1
1
  import { sql } from 'drizzle-orm';
2
2
  import { fetchAndResave } from './fetchAndResave/index.js';
3
3
  export const migrateRelationships = async ({ adapter, collectionSlug, db, debug, fields, globalSlug, isVersions, pathsToQuery, payload, req, tableName })=>{
4
- if (pathsToQuery.size === 0) return;
4
+ if (pathsToQuery.size === 0) {
5
+ return;
6
+ }
5
7
  let offset = 0;
6
8
  let paginationResult;
7
9
  const where = Array.from(pathsToQuery).reduce((statement, path, i)=>{
@@ -14,7 +16,9 @@ export const migrateRelationships = async ({ adapter, collectionSlug, db, debug,
14
16
  ${where} ORDER BY parent_id LIMIT 500 OFFSET ${offset * 500};
15
17
  `;
16
18
  paginationResult = await adapter.drizzle.execute(sql.raw(`${paginationStatement}`));
17
- if (paginationResult.rows.length === 0) return;
19
+ if (paginationResult.rows.length === 0) {
20
+ return;
21
+ }
18
22
  offset += 1;
19
23
  const statement = `SELECT * FROM ${tableName}${adapter.relationshipsSuffix} WHERE
20
24
  (${where}) AND parent_id IN (${paginationResult.rows.map((row)=>row.parent_id).join(', ')});
@@ -28,7 +32,9 @@ export const migrateRelationships = async ({ adapter, collectionSlug, db, debug,
28
32
  result.rows.forEach((row)=>{
29
33
  const parentID = row.parent_id;
30
34
  if (typeof parentID === 'string' || typeof parentID === 'number') {
31
- if (!docsToResave[parentID]) docsToResave[parentID] = [];
35
+ if (!docsToResave[parentID]) {
36
+ docsToResave[parentID] = [];
37
+ }
32
38
  docsToResave[parentID].push(row);
33
39
  }
34
40
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/predefinedMigrations/v2-v3/migrateRelationships.ts"],"sourcesContent":["import type { Field, Payload, PayloadRequest } from 'payload'\n\nimport { sql } from 'drizzle-orm'\n\nimport type { DrizzleTransaction, PostgresAdapter } from '../../types.js'\nimport type { DocsToResave, PathsToQuery } from './types.js'\n\nimport { fetchAndResave } from './fetchAndResave/index.js'\n\ntype Args = {\n adapter: PostgresAdapter\n collectionSlug?: string\n db: DrizzleTransaction\n debug: boolean\n fields: Field[]\n globalSlug?: string\n isVersions: boolean\n pathsToQuery: PathsToQuery\n payload: Payload\n req?: Partial<PayloadRequest>\n tableName: string\n}\n\nexport const migrateRelationships = async ({\n adapter,\n collectionSlug,\n db,\n debug,\n fields,\n globalSlug,\n isVersions,\n pathsToQuery,\n payload,\n req,\n tableName,\n}: Args) => {\n if (pathsToQuery.size === 0) return\n\n let offset = 0\n\n let paginationResult\n\n const where = Array.from(pathsToQuery).reduce((statement, path, i) => {\n return (statement += `\n\"${tableName}${adapter.relationshipsSuffix}\".\"path\" LIKE '${path}'${pathsToQuery.size !== i + 1 ? ' OR' : ''}\n`)\n }, '')\n\n while (typeof paginationResult === 'undefined' || paginationResult.rows.length > 0) {\n const paginationStatement = `SELECT DISTINCT parent_id FROM ${tableName}${adapter.relationshipsSuffix} WHERE\n ${where} ORDER BY parent_id LIMIT 500 OFFSET ${offset * 500};\n `\n\n paginationResult = await adapter.drizzle.execute(sql.raw(`${paginationStatement}`))\n\n if (paginationResult.rows.length === 0) return\n\n offset += 1\n\n const statement = `SELECT * FROM ${tableName}${adapter.relationshipsSuffix} WHERE\n (${where}) AND parent_id IN (${paginationResult.rows.map((row) => row.parent_id).join(', ')});\n`\n if (debug) {\n payload.logger.info('FINDING ROWS TO MIGRATE')\n payload.logger.info(statement)\n }\n\n const result = await adapter.drizzle.execute(sql.raw(`${statement}`))\n\n const docsToResave: DocsToResave = {}\n\n result.rows.forEach((row) => {\n const parentID = row.parent_id\n\n if (typeof parentID === 'string' || typeof parentID === 'number') {\n if (!docsToResave[parentID]) docsToResave[parentID] = []\n docsToResave[parentID].push(row)\n }\n })\n\n await fetchAndResave({\n adapter,\n collectionSlug,\n db,\n debug,\n docsToResave,\n fields,\n globalSlug,\n isVersions,\n payload,\n req: req as unknown as PayloadRequest,\n tableName,\n })\n }\n\n const deleteStatement = `DELETE FROM ${tableName}${adapter.relationshipsSuffix} WHERE ${where}`\n if (debug) {\n payload.logger.info('DELETING ROWS')\n payload.logger.info(deleteStatement)\n }\n await db.execute(sql.raw(`${deleteStatement}`))\n}\n"],"names":["sql","fetchAndResave","migrateRelationships","adapter","collectionSlug","db","debug","fields","globalSlug","isVersions","pathsToQuery","payload","req","tableName","size","offset","paginationResult","where","Array","from","reduce","statement","path","i","relationshipsSuffix","rows","length","paginationStatement","drizzle","execute","raw","map","row","parent_id","join","logger","info","result","docsToResave","forEach","parentID","push","deleteStatement"],"mappings":"AAEA,SAASA,GAAG,QAAQ,cAAa;AAKjC,SAASC,cAAc,QAAQ,4BAA2B;AAgB1D,OAAO,MAAMC,uBAAuB,OAAO,EACzCC,OAAO,EACPC,cAAc,EACdC,EAAE,EACFC,KAAK,EACLC,MAAM,EACNC,UAAU,EACVC,UAAU,EACVC,YAAY,EACZC,OAAO,EACPC,GAAG,EACHC,SAAS,EACJ;IACL,IAAIH,aAAaI,IAAI,KAAK,GAAG;IAE7B,IAAIC,SAAS;IAEb,IAAIC;IAEJ,MAAMC,QAAQC,MAAMC,IAAI,CAACT,cAAcU,MAAM,CAAC,CAACC,WAAWC,MAAMC;QAC9D,OAAQF,aAAa,CAAC;CACzB,EAAER,UAAU,EAAEV,QAAQqB,mBAAmB,CAAC,eAAe,EAAEF,KAAK,CAAC,EAAEZ,aAAaI,IAAI,KAAKS,IAAI,IAAI,QAAQ,GAAG;AAC7G,CAAC;IACC,GAAG;IAEH,MAAO,OAAOP,qBAAqB,eAAeA,iBAAiBS,IAAI,CAACC,MAAM,GAAG,EAAG;QAClF,MAAMC,sBAAsB,CAAC,+BAA+B,EAAEd,UAAU,EAAEV,QAAQqB,mBAAmB,CAAC;IACtG,EAAEP,MAAM,qCAAqC,EAAEF,SAAS,IAAI;EAC9D,CAAC;QAECC,mBAAmB,MAAMb,QAAQyB,OAAO,CAACC,OAAO,CAAC7B,IAAI8B,GAAG,CAAC,CAAC,EAAEH,oBAAoB,CAAC;QAEjF,IAAIX,iBAAiBS,IAAI,CAACC,MAAM,KAAK,GAAG;QAExCX,UAAU;QAEV,MAAMM,YAAY,CAAC,cAAc,EAAER,UAAU,EAAEV,QAAQqB,mBAAmB,CAAC;KAC1E,EAAEP,MAAM,oBAAoB,EAAED,iBAAiBS,IAAI,CAACM,GAAG,CAAC,CAACC,MAAQA,IAAIC,SAAS,EAAEC,IAAI,CAAC,MAAM;AAChG,CAAC;QACG,IAAI5B,OAAO;YACTK,QAAQwB,MAAM,CAACC,IAAI,CAAC;YACpBzB,QAAQwB,MAAM,CAACC,IAAI,CAACf;QACtB;QAEA,MAAMgB,SAAS,MAAMlC,QAAQyB,OAAO,CAACC,OAAO,CAAC7B,IAAI8B,GAAG,CAAC,CAAC,EAAET,UAAU,CAAC;QAEnE,MAAMiB,eAA6B,CAAC;QAEpCD,OAAOZ,IAAI,CAACc,OAAO,CAAC,CAACP;YACnB,MAAMQ,WAAWR,IAAIC,SAAS;YAE9B,IAAI,OAAOO,aAAa,YAAY,OAAOA,aAAa,UAAU;gBAChE,IAAI,CAACF,YAAY,CAACE,SAAS,EAAEF,YAAY,CAACE,SAAS,GAAG,EAAE;gBACxDF,YAAY,CAACE,SAAS,CAACC,IAAI,CAACT;YAC9B;QACF;QAEA,MAAM/B,eAAe;YACnBE;YACAC;YACAC;YACAC;YACAgC;YACA/B;YACAC;YACAC;YACAE;YACAC,KAAKA;YACLC;QACF;IACF;IAEA,MAAM6B,kBAAkB,CAAC,YAAY,EAAE7B,UAAU,EAAEV,QAAQqB,mBAAmB,CAAC,OAAO,EAAEP,MAAM,CAAC;IAC/F,IAAIX,OAAO;QACTK,QAAQwB,MAAM,CAACC,IAAI,CAAC;QACpBzB,QAAQwB,MAAM,CAACC,IAAI,CAACM;IACtB;IACA,MAAMrC,GAAGwB,OAAO,CAAC7B,IAAI8B,GAAG,CAAC,CAAC,EAAEY,gBAAgB,CAAC;AAC/C,EAAC"}
1
+ {"version":3,"sources":["../../../src/predefinedMigrations/v2-v3/migrateRelationships.ts"],"sourcesContent":["import type { TransactionPg } from '@payloadcms/drizzle/types'\nimport type { Field, Payload, PayloadRequest } from 'payload'\n\nimport { sql } from 'drizzle-orm'\n\nimport type { PostgresAdapter } from '../../types.js'\nimport type { DocsToResave, PathsToQuery } from './types.js'\n\nimport { fetchAndResave } from './fetchAndResave/index.js'\n\ntype Args = {\n adapter: PostgresAdapter\n collectionSlug?: string\n db: TransactionPg\n debug: boolean\n fields: Field[]\n globalSlug?: string\n isVersions: boolean\n pathsToQuery: PathsToQuery\n payload: Payload\n req?: Partial<PayloadRequest>\n tableName: string\n}\n\nexport const migrateRelationships = async ({\n adapter,\n collectionSlug,\n db,\n debug,\n fields,\n globalSlug,\n isVersions,\n pathsToQuery,\n payload,\n req,\n tableName,\n}: Args) => {\n if (pathsToQuery.size === 0) {\n return\n }\n\n let offset = 0\n\n let paginationResult\n\n const where = Array.from(pathsToQuery).reduce((statement, path, i) => {\n return (statement += `\n\"${tableName}${adapter.relationshipsSuffix}\".\"path\" LIKE '${path}'${pathsToQuery.size !== i + 1 ? ' OR' : ''}\n`)\n }, '')\n\n while (typeof paginationResult === 'undefined' || paginationResult.rows.length > 0) {\n const paginationStatement = `SELECT DISTINCT parent_id FROM ${tableName}${adapter.relationshipsSuffix} WHERE\n ${where} ORDER BY parent_id LIMIT 500 OFFSET ${offset * 500};\n `\n\n paginationResult = await adapter.drizzle.execute(sql.raw(`${paginationStatement}`))\n\n if (paginationResult.rows.length === 0) {\n return\n }\n\n offset += 1\n\n const statement = `SELECT * FROM ${tableName}${adapter.relationshipsSuffix} WHERE\n (${where}) AND parent_id IN (${paginationResult.rows.map((row) => row.parent_id).join(', ')});\n`\n if (debug) {\n payload.logger.info('FINDING ROWS TO MIGRATE')\n payload.logger.info(statement)\n }\n\n const result = await adapter.drizzle.execute(sql.raw(`${statement}`))\n\n const docsToResave: DocsToResave = {}\n\n result.rows.forEach((row) => {\n const parentID = row.parent_id\n\n if (typeof parentID === 'string' || typeof parentID === 'number') {\n if (!docsToResave[parentID]) {\n docsToResave[parentID] = []\n }\n docsToResave[parentID].push(row)\n }\n })\n\n await fetchAndResave({\n adapter,\n collectionSlug,\n db,\n debug,\n docsToResave,\n fields,\n globalSlug,\n isVersions,\n payload,\n req: req as unknown as PayloadRequest,\n tableName,\n })\n }\n\n const deleteStatement = `DELETE FROM ${tableName}${adapter.relationshipsSuffix} WHERE ${where}`\n if (debug) {\n payload.logger.info('DELETING ROWS')\n payload.logger.info(deleteStatement)\n }\n await db.execute(sql.raw(`${deleteStatement}`))\n}\n"],"names":["sql","fetchAndResave","migrateRelationships","adapter","collectionSlug","db","debug","fields","globalSlug","isVersions","pathsToQuery","payload","req","tableName","size","offset","paginationResult","where","Array","from","reduce","statement","path","i","relationshipsSuffix","rows","length","paginationStatement","drizzle","execute","raw","map","row","parent_id","join","logger","info","result","docsToResave","forEach","parentID","push","deleteStatement"],"mappings":"AAGA,SAASA,GAAG,QAAQ,cAAa;AAKjC,SAASC,cAAc,QAAQ,4BAA2B;AAgB1D,OAAO,MAAMC,uBAAuB,OAAO,EACzCC,OAAO,EACPC,cAAc,EACdC,EAAE,EACFC,KAAK,EACLC,MAAM,EACNC,UAAU,EACVC,UAAU,EACVC,YAAY,EACZC,OAAO,EACPC,GAAG,EACHC,SAAS,EACJ;IACL,IAAIH,aAAaI,IAAI,KAAK,GAAG;QAC3B;IACF;IAEA,IAAIC,SAAS;IAEb,IAAIC;IAEJ,MAAMC,QAAQC,MAAMC,IAAI,CAACT,cAAcU,MAAM,CAAC,CAACC,WAAWC,MAAMC;QAC9D,OAAQF,aAAa,CAAC;CACzB,EAAER,UAAU,EAAEV,QAAQqB,mBAAmB,CAAC,eAAe,EAAEF,KAAK,CAAC,EAAEZ,aAAaI,IAAI,KAAKS,IAAI,IAAI,QAAQ,GAAG;AAC7G,CAAC;IACC,GAAG;IAEH,MAAO,OAAOP,qBAAqB,eAAeA,iBAAiBS,IAAI,CAACC,MAAM,GAAG,EAAG;QAClF,MAAMC,sBAAsB,CAAC,+BAA+B,EAAEd,UAAU,EAAEV,QAAQqB,mBAAmB,CAAC;IACtG,EAAEP,MAAM,qCAAqC,EAAEF,SAAS,IAAI;EAC9D,CAAC;QAECC,mBAAmB,MAAMb,QAAQyB,OAAO,CAACC,OAAO,CAAC7B,IAAI8B,GAAG,CAAC,CAAC,EAAEH,oBAAoB,CAAC;QAEjF,IAAIX,iBAAiBS,IAAI,CAACC,MAAM,KAAK,GAAG;YACtC;QACF;QAEAX,UAAU;QAEV,MAAMM,YAAY,CAAC,cAAc,EAAER,UAAU,EAAEV,QAAQqB,mBAAmB,CAAC;KAC1E,EAAEP,MAAM,oBAAoB,EAAED,iBAAiBS,IAAI,CAACM,GAAG,CAAC,CAACC,MAAQA,IAAIC,SAAS,EAAEC,IAAI,CAAC,MAAM;AAChG,CAAC;QACG,IAAI5B,OAAO;YACTK,QAAQwB,MAAM,CAACC,IAAI,CAAC;YACpBzB,QAAQwB,MAAM,CAACC,IAAI,CAACf;QACtB;QAEA,MAAMgB,SAAS,MAAMlC,QAAQyB,OAAO,CAACC,OAAO,CAAC7B,IAAI8B,GAAG,CAAC,CAAC,EAAET,UAAU,CAAC;QAEnE,MAAMiB,eAA6B,CAAC;QAEpCD,OAAOZ,IAAI,CAACc,OAAO,CAAC,CAACP;YACnB,MAAMQ,WAAWR,IAAIC,SAAS;YAE9B,IAAI,OAAOO,aAAa,YAAY,OAAOA,aAAa,UAAU;gBAChE,IAAI,CAACF,YAAY,CAACE,SAAS,EAAE;oBAC3BF,YAAY,CAACE,SAAS,GAAG,EAAE;gBAC7B;gBACAF,YAAY,CAACE,SAAS,CAACC,IAAI,CAACT;YAC9B;QACF;QAEA,MAAM/B,eAAe;YACnBE;YACAC;YACAC;YACAC;YACAgC;YACA/B;YACAC;YACAC;YACAE;YACAC,KAAKA;YACLC;QACF;IACF;IAEA,MAAM6B,kBAAkB,CAAC,YAAY,EAAE7B,UAAU,EAAEV,QAAQqB,mBAAmB,CAAC,OAAO,EAAEP,MAAM,CAAC;IAC/F,IAAIX,OAAO;QACTK,QAAQwB,MAAM,CAACC,IAAI,CAAC;QACpBzB,QAAQwB,MAAM,CAACC,IAAI,CAACM;IACtB;IACA,MAAMrC,GAAGwB,OAAO,CAAC7B,IAAI8B,GAAG,CAAC,CAAC,EAAEY,gBAAgB,CAAC;AAC/C,EAAC"}
@@ -1,11 +1,12 @@
1
+ import type { TransactionPg } from '@payloadcms/drizzle/types';
1
2
  import type { Field, Payload } from 'payload';
2
- import type { DrizzleTransaction, PostgresAdapter } from '../../types.js';
3
+ import type { PostgresAdapter } from '../../types.js';
3
4
  import type { PathsToQuery } from './types.js';
4
5
  type Args = {
5
6
  adapter: PostgresAdapter;
6
7
  collectionSlug?: string;
7
8
  columnPrefix: string;
8
- db: DrizzleTransaction;
9
+ db: TransactionPg;
9
10
  disableNotNull: boolean;
10
11
  fields: Field[];
11
12
  globalSlug?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/predefinedMigrations/v2-v3/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAK7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,EAAE,EAAE,kBAAkB,CAAA;IACtB,cAAc,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,cAAc,SAAU,IAAI,SA0FxC,CAAA"}
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/predefinedMigrations/v2-v3/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAK7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,EAAE,EAAE,aAAa,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,cAAc,SAAU,IAAI,SA0FxC,CAAA"}
@@ -3,28 +3,6 @@ import toSnakeCase from 'to-snake-case';
3
3
  export const traverseFields = (args)=>{
4
4
  args.fields.forEach((field)=>{
5
5
  switch(field.type){
6
- case 'group':
7
- {
8
- let newTableName = `${args.newTableName}_${toSnakeCase(field.name)}`;
9
- if (field.localized && args.payload.config.localization) {
10
- newTableName += args.adapter.localesSuffix;
11
- }
12
- return traverseFields({
13
- ...args,
14
- columnPrefix: `${args.columnPrefix}${toSnakeCase(field.name)}_`,
15
- fields: field.fields,
16
- newTableName,
17
- path: `${args.path ? `${args.path}.` : ''}${field.name}`
18
- });
19
- }
20
- case 'row':
21
- case 'collapsible':
22
- {
23
- return traverseFields({
24
- ...args,
25
- fields: field.fields
26
- });
27
- }
28
6
  case 'array':
29
7
  {
30
8
  const newTableName = args.adapter.tableNameMap.get(`${args.newTableName}_${toSnakeCase(field.name)}`);
@@ -51,6 +29,38 @@ export const traverseFields = (args)=>{
51
29
  });
52
30
  });
53
31
  }
32
+ case 'collapsible':
33
+ case 'row':
34
+ {
35
+ return traverseFields({
36
+ ...args,
37
+ fields: field.fields
38
+ });
39
+ }
40
+ case 'group':
41
+ {
42
+ let newTableName = `${args.newTableName}_${toSnakeCase(field.name)}`;
43
+ if (field.localized && args.payload.config.localization) {
44
+ newTableName += args.adapter.localesSuffix;
45
+ }
46
+ return traverseFields({
47
+ ...args,
48
+ columnPrefix: `${args.columnPrefix}${toSnakeCase(field.name)}_`,
49
+ fields: field.fields,
50
+ newTableName,
51
+ path: `${args.path ? `${args.path}.` : ''}${field.name}`
52
+ });
53
+ }
54
+ case 'relationship':
55
+ case 'upload':
56
+ {
57
+ if (typeof field.relationTo === 'string') {
58
+ if (field.type === 'upload' || !field.hasMany) {
59
+ args.pathsToQuery.add(`${args.path ? `${args.path}.` : ''}${field.name}`);
60
+ }
61
+ }
62
+ return null;
63
+ }
54
64
  case 'tabs':
55
65
  {
56
66
  return field.tabs.forEach((tab)=>{
@@ -68,16 +78,6 @@ export const traverseFields = (args)=>{
68
78
  });
69
79
  });
70
80
  }
71
- case 'relationship':
72
- case 'upload':
73
- {
74
- if (typeof field.relationTo === 'string') {
75
- if (field.type === 'upload' || !field.hasMany) {
76
- args.pathsToQuery.add(`${args.path ? `${args.path}.` : ''}${field.name}`);
77
- }
78
- }
79
- return null;
80
- }
81
81
  }
82
82
  });
83
83
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/predefinedMigrations/v2-v3/traverseFields.ts"],"sourcesContent":["import type { Field, Payload } from 'payload'\n\nimport { tabHasName } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleTransaction, PostgresAdapter } from '../../types.js'\nimport type { PathsToQuery } from './types.js'\n\ntype Args = {\n adapter: PostgresAdapter\n collectionSlug?: string\n columnPrefix: string\n db: DrizzleTransaction\n disableNotNull: boolean\n fields: Field[]\n globalSlug?: string\n isVersions: boolean\n newTableName: string\n parentTableName: string\n path: string\n pathsToQuery: PathsToQuery\n payload: Payload\n rootTableName: string\n}\n\nexport const traverseFields = (args: Args) => {\n args.fields.forEach((field) => {\n switch (field.type) {\n case 'group': {\n let newTableName = `${args.newTableName}_${toSnakeCase(field.name)}`\n\n if (field.localized && args.payload.config.localization) {\n newTableName += args.adapter.localesSuffix\n }\n\n return traverseFields({\n ...args,\n columnPrefix: `${args.columnPrefix}${toSnakeCase(field.name)}_`,\n fields: field.fields,\n newTableName,\n path: `${args.path ? `${args.path}.` : ''}${field.name}`,\n })\n }\n\n case 'row':\n case 'collapsible': {\n return traverseFields({\n ...args,\n fields: field.fields,\n })\n }\n\n case 'array': {\n const newTableName = args.adapter.tableNameMap.get(\n `${args.newTableName}_${toSnakeCase(field.name)}`,\n )\n\n return traverseFields({\n ...args,\n columnPrefix: '',\n fields: field.fields,\n newTableName,\n parentTableName: newTableName,\n path: `${args.path ? `${args.path}.` : ''}${field.name}.%`,\n })\n }\n\n case 'blocks': {\n return field.blocks.forEach((block) => {\n const newTableName = args.adapter.tableNameMap.get(\n `${args.rootTableName}_blocks_${toSnakeCase(block.slug)}`,\n )\n\n traverseFields({\n ...args,\n columnPrefix: '',\n fields: block.fields,\n newTableName,\n parentTableName: newTableName,\n path: `${args.path ? `${args.path}.` : ''}${field.name}.%`,\n })\n })\n }\n\n case 'tabs': {\n return field.tabs.forEach((tab) => {\n if (tabHasName(tab)) {\n args.columnPrefix = `${args.columnPrefix}_${toSnakeCase(tab.name)}_`\n args.path = `${args.path ? `${args.path}.` : ''}${tab.name}`\n args.newTableName = `${args.newTableName}_${toSnakeCase(tab.name)}`\n\n if (tab.localized && args.payload.config.localization) {\n args.newTableName += args.adapter.localesSuffix\n }\n }\n\n traverseFields({\n ...args,\n fields: tab.fields,\n })\n })\n }\n\n case 'relationship':\n case 'upload': {\n if (typeof field.relationTo === 'string') {\n if (field.type === 'upload' || !field.hasMany) {\n args.pathsToQuery.add(`${args.path ? `${args.path}.` : ''}${field.name}`)\n }\n }\n\n return null\n }\n }\n })\n}\n"],"names":["tabHasName","toSnakeCase","traverseFields","args","fields","forEach","field","type","newTableName","name","localized","payload","config","localization","adapter","localesSuffix","columnPrefix","path","tableNameMap","get","parentTableName","blocks","block","rootTableName","slug","tabs","tab","relationTo","hasMany","pathsToQuery","add"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/predefinedMigrations/v2-v3/traverseFields.ts"],"sourcesContent":["import type { TransactionPg } from '@payloadcms/drizzle/types'\nimport type { Field, Payload } from 'payload'\n\nimport { tabHasName } from 'payload/shared'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { PostgresAdapter } from '../../types.js'\nimport type { PathsToQuery } from './types.js'\n\ntype Args = {\n adapter: PostgresAdapter\n collectionSlug?: string\n columnPrefix: string\n db: TransactionPg\n disableNotNull: boolean\n fields: Field[]\n globalSlug?: string\n isVersions: boolean\n newTableName: string\n parentTableName: string\n path: string\n pathsToQuery: PathsToQuery\n payload: Payload\n rootTableName: string\n}\n\nexport const traverseFields = (args: Args) => {\n args.fields.forEach((field) => {\n switch (field.type) {\n case 'array': {\n const newTableName = args.adapter.tableNameMap.get(\n `${args.newTableName}_${toSnakeCase(field.name)}`,\n )\n\n return traverseFields({\n ...args,\n columnPrefix: '',\n fields: field.fields,\n newTableName,\n parentTableName: newTableName,\n path: `${args.path ? `${args.path}.` : ''}${field.name}.%`,\n })\n }\n\n case 'blocks': {\n return field.blocks.forEach((block) => {\n const newTableName = args.adapter.tableNameMap.get(\n `${args.rootTableName}_blocks_${toSnakeCase(block.slug)}`,\n )\n\n traverseFields({\n ...args,\n columnPrefix: '',\n fields: block.fields,\n newTableName,\n parentTableName: newTableName,\n path: `${args.path ? `${args.path}.` : ''}${field.name}.%`,\n })\n })\n }\n case 'collapsible':\n\n case 'row': {\n return traverseFields({\n ...args,\n fields: field.fields,\n })\n }\n\n case 'group': {\n let newTableName = `${args.newTableName}_${toSnakeCase(field.name)}`\n\n if (field.localized && args.payload.config.localization) {\n newTableName += args.adapter.localesSuffix\n }\n\n return traverseFields({\n ...args,\n columnPrefix: `${args.columnPrefix}${toSnakeCase(field.name)}_`,\n fields: field.fields,\n newTableName,\n path: `${args.path ? `${args.path}.` : ''}${field.name}`,\n })\n }\n\n case 'relationship':\n\n case 'upload': {\n if (typeof field.relationTo === 'string') {\n if (field.type === 'upload' || !field.hasMany) {\n args.pathsToQuery.add(`${args.path ? `${args.path}.` : ''}${field.name}`)\n }\n }\n\n return null\n }\n case 'tabs': {\n return field.tabs.forEach((tab) => {\n if (tabHasName(tab)) {\n args.columnPrefix = `${args.columnPrefix}_${toSnakeCase(tab.name)}_`\n args.path = `${args.path ? `${args.path}.` : ''}${tab.name}`\n args.newTableName = `${args.newTableName}_${toSnakeCase(tab.name)}`\n\n if (tab.localized && args.payload.config.localization) {\n args.newTableName += args.adapter.localesSuffix\n }\n }\n\n traverseFields({\n ...args,\n fields: tab.fields,\n })\n })\n }\n }\n })\n}\n"],"names":["tabHasName","toSnakeCase","traverseFields","args","fields","forEach","field","type","newTableName","adapter","tableNameMap","get","name","columnPrefix","parentTableName","path","blocks","block","rootTableName","slug","localized","payload","config","localization","localesSuffix","relationTo","hasMany","pathsToQuery","add","tabs","tab"],"mappings":"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"}