@payloadcms/drizzle 4.0.0-internal.38b7f1d → 4.0.0-internal.3b50481

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 (228) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/createTableName.d.ts.map +1 -1
  3. package/dist/createTableName.js +2 -7
  4. package/dist/createTableName.js.map +1 -1
  5. package/dist/exports/postgres.d.ts +4 -0
  6. package/dist/exports/postgres.d.ts.map +1 -1
  7. package/dist/exports/postgres.js +4 -0
  8. package/dist/exports/postgres.js.map +1 -1
  9. package/dist/exports/sqlite.d.ts +2 -0
  10. package/dist/exports/sqlite.d.ts.map +1 -1
  11. package/dist/exports/sqlite.js +2 -0
  12. package/dist/exports/sqlite.js.map +1 -1
  13. package/dist/find/buildPolymorphicJoinQuery.d.ts +38 -0
  14. package/dist/find/buildPolymorphicJoinQuery.d.ts.map +1 -0
  15. package/dist/find/buildPolymorphicJoinQuery.js +135 -0
  16. package/dist/find/buildPolymorphicJoinQuery.js.map +1 -0
  17. package/dist/find/buildPolymorphicJoinWhere.d.ts +20 -0
  18. package/dist/find/buildPolymorphicJoinWhere.d.ts.map +1 -0
  19. package/dist/find/buildPolymorphicJoinWhere.js +301 -0
  20. package/dist/find/buildPolymorphicJoinWhere.js.map +1 -0
  21. package/dist/find/createPolymorphicJoinWherePlan.d.ts +37 -0
  22. package/dist/find/createPolymorphicJoinWherePlan.d.ts.map +1 -0
  23. package/dist/find/createPolymorphicJoinWherePlan.js +191 -0
  24. package/dist/find/createPolymorphicJoinWherePlan.js.map +1 -0
  25. package/dist/find/traverseFields.d.ts.map +1 -1
  26. package/dist/find/traverseFields.js +20 -193
  27. package/dist/find/traverseFields.js.map +1 -1
  28. package/dist/index.d.ts +4 -12
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +2 -10
  31. package/dist/index.js.map +1 -1
  32. package/dist/migrate.d.ts.map +1 -1
  33. package/dist/migrate.js +41 -17
  34. package/dist/migrate.js.map +1 -1
  35. package/dist/migrateDown.d.ts +2 -1
  36. package/dist/migrateDown.d.ts.map +1 -1
  37. package/dist/migrateDown.js +17 -4
  38. package/dist/migrateDown.js.map +1 -1
  39. package/dist/migrateFresh.d.ts +4 -2
  40. package/dist/migrateFresh.d.ts.map +1 -1
  41. package/dist/migrateFresh.js +26 -9
  42. package/dist/migrateFresh.js.map +1 -1
  43. package/dist/migrateRefresh.d.ts +2 -1
  44. package/dist/migrateRefresh.d.ts.map +1 -1
  45. package/dist/migrateRefresh.js +20 -5
  46. package/dist/migrateRefresh.js.map +1 -1
  47. package/dist/migrateReset.d.ts +2 -1
  48. package/dist/migrateReset.d.ts.map +1 -1
  49. package/dist/migrateReset.js +18 -4
  50. package/dist/migrateReset.js.map +1 -1
  51. package/dist/migrateStatus.d.ts +2 -1
  52. package/dist/migrateStatus.d.ts.map +1 -1
  53. package/dist/migrateStatus.js +11 -6
  54. package/dist/migrateStatus.js.map +1 -1
  55. package/dist/postgres/createJSONQuery/index.js +3 -3
  56. package/dist/postgres/createJSONQuery/index.js.map +1 -1
  57. package/dist/postgres/init.d.ts.map +1 -1
  58. package/dist/postgres/init.js +6 -0
  59. package/dist/postgres/init.js.map +1 -1
  60. package/dist/postgres/predefinedMigrations/localize-status/index.d.ts +11 -0
  61. package/dist/postgres/predefinedMigrations/localize-status/index.d.ts.map +1 -0
  62. package/dist/postgres/predefinedMigrations/localize-status/index.js +296 -0
  63. package/dist/postgres/predefinedMigrations/localize-status/index.js.map +1 -0
  64. package/dist/postgres/predefinedMigrations/localize-status/migrateMainCollection.d.ts +13 -0
  65. package/dist/postgres/predefinedMigrations/localize-status/migrateMainCollection.d.ts.map +1 -0
  66. package/dist/postgres/predefinedMigrations/localize-status/migrateMainCollection.js +51 -0
  67. package/dist/postgres/predefinedMigrations/localize-status/migrateMainCollection.js.map +1 -0
  68. package/dist/postgres/predefinedMigrations/localize-status/migrateMainGlobal.d.ts +13 -0
  69. package/dist/postgres/predefinedMigrations/localize-status/migrateMainGlobal.d.ts.map +1 -0
  70. package/dist/postgres/predefinedMigrations/localize-status/migrateMainGlobal.js +54 -0
  71. package/dist/postgres/predefinedMigrations/localize-status/migrateMainGlobal.js.map +1 -0
  72. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.d.ts +35 -0
  73. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.d.ts.map +1 -0
  74. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.js +185 -0
  75. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.js.map +1 -0
  76. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts.map +1 -1
  77. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js +8 -4
  78. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js.map +1 -1
  79. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.d.ts.map +1 -1
  80. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.js.map +1 -1
  81. package/dist/postgres/predefinedMigrations/v2-v3/index.js +1 -1
  82. package/dist/postgres/predefinedMigrations/v2-v3/index.js.map +1 -1
  83. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts +15 -0
  84. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts.map +1 -0
  85. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js +25 -0
  86. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js.map +1 -0
  87. package/dist/postgres/query/postgresUnaccent.d.ts +13 -0
  88. package/dist/postgres/query/postgresUnaccent.d.ts.map +1 -0
  89. package/dist/postgres/query/postgresUnaccent.js +40 -0
  90. package/dist/postgres/query/postgresUnaccent.js.map +1 -0
  91. package/dist/postgres/schema/geometryColumn.d.ts +2 -2
  92. package/dist/postgres/types.d.ts +13 -2
  93. package/dist/postgres/types.d.ts.map +1 -1
  94. package/dist/postgres/types.js.map +1 -1
  95. package/dist/queries/addJoinTable.d.ts +1 -1
  96. package/dist/queries/buildOperatorConstraint.d.ts +22 -0
  97. package/dist/queries/buildOperatorConstraint.d.ts.map +1 -0
  98. package/dist/queries/buildOperatorConstraint.js +63 -0
  99. package/dist/queries/buildOperatorConstraint.js.map +1 -0
  100. package/dist/queries/buildOrderBy.d.ts +1 -1
  101. package/dist/queries/getTableColumnFromPath.d.ts +12 -3
  102. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  103. package/dist/queries/getTableColumnFromPath.js +61 -29
  104. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  105. package/dist/queries/operatorMap.d.ts +7 -3
  106. package/dist/queries/operatorMap.d.ts.map +1 -1
  107. package/dist/queries/operatorMap.js.map +1 -1
  108. package/dist/queries/parseParams.d.ts.map +1 -1
  109. package/dist/queries/parseParams.js +262 -10
  110. package/dist/queries/parseParams.js.map +1 -1
  111. package/dist/queries/resolveRelationshipPath.d.ts +36 -0
  112. package/dist/queries/resolveRelationshipPath.d.ts.map +1 -0
  113. package/dist/queries/resolveRelationshipPath.js +66 -0
  114. package/dist/queries/resolveRelationshipPath.js.map +1 -0
  115. package/dist/queries/validateOperatorHandlers.d.ts +8 -0
  116. package/dist/queries/validateOperatorHandlers.d.ts.map +1 -0
  117. package/dist/queries/validateOperatorHandlers.js +30 -0
  118. package/dist/queries/validateOperatorHandlers.js.map +1 -0
  119. package/dist/schema/traverseFields.d.ts.map +1 -1
  120. package/dist/schema/traverseFields.js +7 -6
  121. package/dist/schema/traverseFields.js.map +1 -1
  122. package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js +3 -2
  123. package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js.map +1 -1
  124. package/dist/sqlite/createJSONQuery/index.d.ts.map +1 -1
  125. package/dist/sqlite/createJSONQuery/index.js +6 -5
  126. package/dist/sqlite/createJSONQuery/index.js.map +1 -1
  127. package/dist/sqlite/insert.d.ts.map +1 -1
  128. package/dist/sqlite/insert.js +4 -1
  129. package/dist/sqlite/insert.js.map +1 -1
  130. package/dist/sqlite/predefinedMigrations/localize-status/index.d.ts +28 -0
  131. package/dist/sqlite/predefinedMigrations/localize-status/index.d.ts.map +1 -0
  132. package/dist/sqlite/predefinedMigrations/localize-status/index.js +198 -0
  133. package/dist/sqlite/predefinedMigrations/localize-status/index.js.map +1 -0
  134. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainCollection.d.ts +12 -0
  135. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainCollection.d.ts.map +1 -0
  136. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainCollection.js +24 -0
  137. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainCollection.js.map +1 -0
  138. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.d.ts +12 -0
  139. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.d.ts.map +1 -0
  140. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.js +28 -0
  141. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.js.map +1 -0
  142. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.d.ts +15 -0
  143. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.d.ts.map +1 -0
  144. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.js +114 -0
  145. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.js.map +1 -0
  146. package/dist/transform/read/traverseFields.js +2 -2
  147. package/dist/transform/read/traverseFields.js.map +1 -1
  148. package/dist/transform/write/blocks.js +1 -1
  149. package/dist/transform/write/blocks.js.map +1 -1
  150. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  151. package/dist/transform/write/traverseFields.js +9 -16
  152. package/dist/transform/write/traverseFields.js.map +1 -1
  153. package/dist/types.d.ts +50 -6
  154. package/dist/types.d.ts.map +1 -1
  155. package/dist/types.js +1 -3
  156. package/dist/types.js.map +1 -1
  157. package/dist/updateJobs.d.ts.map +1 -1
  158. package/dist/updateJobs.js +37 -0
  159. package/dist/updateJobs.js.map +1 -1
  160. package/dist/updateOne.d.ts.map +1 -1
  161. package/dist/updateOne.js +41 -1
  162. package/dist/updateOne.js.map +1 -1
  163. package/dist/upsertRow/handleUpsertError.d.ts.map +1 -1
  164. package/dist/upsertRow/handleUpsertError.js +2 -1
  165. package/dist/upsertRow/handleUpsertError.js.map +1 -1
  166. package/dist/upsertRow/index.d.ts +1 -1
  167. package/dist/upsertRow/index.d.ts.map +1 -1
  168. package/dist/upsertRow/index.js +30 -7
  169. package/dist/upsertRow/index.js.map +1 -1
  170. package/dist/upsertRow/insertArrays.d.ts.map +1 -1
  171. package/dist/upsertRow/insertArrays.js +2 -1
  172. package/dist/upsertRow/insertArrays.js.map +1 -1
  173. package/dist/utilities/buildCreateMigration.d.ts.map +1 -1
  174. package/dist/utilities/buildCreateMigration.js +14 -38
  175. package/dist/utilities/buildCreateMigration.js.map +1 -1
  176. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.d.ts +15 -0
  177. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.d.ts.map +1 -0
  178. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js +110 -0
  179. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js.map +1 -0
  180. package/dist/utilities/buildForeignKeyName.d.ts.map +1 -1
  181. package/dist/utilities/buildForeignKeyName.js +3 -2
  182. package/dist/utilities/buildForeignKeyName.js.map +1 -1
  183. package/dist/utilities/buildIndexName.d.ts.map +1 -1
  184. package/dist/utilities/buildIndexName.js +3 -2
  185. package/dist/utilities/buildIndexName.js.map +1 -1
  186. package/dist/utilities/checkTruncatedIdentifiers.d.ts +13 -0
  187. package/dist/utilities/checkTruncatedIdentifiers.d.ts.map +1 -0
  188. package/dist/utilities/checkTruncatedIdentifiers.js +56 -0
  189. package/dist/utilities/checkTruncatedIdentifiers.js.map +1 -0
  190. package/dist/utilities/createSchemaGenerator.d.ts.map +1 -1
  191. package/dist/utilities/createSchemaGenerator.js +3 -0
  192. package/dist/utilities/createSchemaGenerator.js.map +1 -1
  193. package/dist/utilities/getPrimaryDb.d.ts +1 -1
  194. package/dist/utilities/getSizesToVariantsRenames.d.ts +54 -0
  195. package/dist/utilities/getSizesToVariantsRenames.d.ts.map +1 -0
  196. package/dist/utilities/getSizesToVariantsRenames.js +251 -0
  197. package/dist/utilities/getSizesToVariantsRenames.js.map +1 -0
  198. package/dist/utilities/getTransaction.d.ts +1 -1
  199. package/dist/utilities/getTransaction.d.ts.map +1 -1
  200. package/dist/utilities/parseJSONPathSegment.d.ts +9 -0
  201. package/dist/utilities/parseJSONPathSegment.d.ts.map +1 -0
  202. package/dist/utilities/parseJSONPathSegment.js +17 -0
  203. package/dist/utilities/parseJSONPathSegment.js.map +1 -0
  204. package/dist/utilities/pushDevSchema.d.ts.map +1 -1
  205. package/dist/utilities/pushDevSchema.js +0 -14
  206. package/dist/utilities/pushDevSchema.js.map +1 -1
  207. package/dist/utilities/validateExistingBlockIsIdentical.d.ts +1 -5
  208. package/dist/utilities/validateExistingBlockIsIdentical.d.ts.map +1 -1
  209. package/dist/utilities/validateExistingBlockIsIdentical.js.map +1 -1
  210. package/dist/utilities/validateIdentifierLength.d.ts +12 -0
  211. package/dist/utilities/validateIdentifierLength.d.ts.map +1 -0
  212. package/dist/utilities/validateIdentifierLength.js +18 -0
  213. package/dist/utilities/validateIdentifierLength.js.map +1 -0
  214. package/package.json +4 -9
  215. package/dist/exports/types-deprecated.d.ts +0 -150
  216. package/dist/exports/types-deprecated.d.ts.map +0 -1
  217. package/dist/exports/types-deprecated.js +0 -5
  218. package/dist/exports/types-deprecated.js.map +0 -1
  219. package/dist/find/chainMethods.d.ts +0 -20
  220. package/dist/find/chainMethods.d.ts.map +0 -1
  221. package/dist/find/chainMethods.js +0 -16
  222. package/dist/find/chainMethods.js.map +0 -1
  223. package/dist/migrateVersionsEnabled.d.ts +0 -9
  224. package/dist/migrateVersionsEnabled.d.ts.map +0 -1
  225. package/dist/migrateVersionsEnabled.js +0 -52
  226. package/dist/migrateVersionsEnabled.js.map +0 -1
  227. package/dist/utilities/isValidStringID.spec.js +0 -15
  228. package/dist/utilities/isValidStringID.spec.js.map +0 -1
@@ -0,0 +1,51 @@
1
+ import toSnakeCase from 'to-snake-case';
2
+ /**
3
+ * Migrates main collection documents from _status to per-locale status object
4
+ */ export async function migrateMainCollectionStatus({ collectionSlug, db, locales, payload, sql, versionsTable }) {
5
+ const mainTable = toSnakeCase(collectionSlug);
6
+ const mainLocalesTable = `${mainTable}_locales`;
7
+ payload.logger.info({
8
+ msg: `Migrating main collection locales for: ${mainLocalesTable}`
9
+ });
10
+ // Get all documents
11
+ const documents = await db.execute({
12
+ drizzle: db.drizzle,
13
+ sql: sql`
14
+ SELECT DISTINCT id
15
+ FROM ${sql.identifier(mainTable)}
16
+ `
17
+ });
18
+ for (const doc of documents.rows){
19
+ // For each locale, get the latest version status
20
+ for (const locale of locales){
21
+ const latestVersionStatus = await db.execute({
22
+ drizzle: db.drizzle,
23
+ sql: sql`
24
+ SELECT l.version__status as _status
25
+ FROM ${sql.identifier(versionsTable)} v
26
+ JOIN ${sql.raw(`${versionsTable}_locales`)} l ON l._parent_id = v.id
27
+ WHERE v.parent_id = ${doc.id}
28
+ AND l._locale = ${locale}
29
+ ORDER BY v.created_at DESC
30
+ LIMIT 1
31
+ `
32
+ });
33
+ const status = latestVersionStatus.rows[0]?._status || 'draft';
34
+ // Update the main collection's locales table with this status
35
+ await db.execute({
36
+ drizzle: db.drizzle,
37
+ sql: sql`
38
+ UPDATE ${sql.identifier(mainLocalesTable)}
39
+ SET _status = ${status}
40
+ WHERE _parent_id = ${doc.id}
41
+ AND _locale = ${locale}
42
+ `
43
+ });
44
+ }
45
+ }
46
+ payload.logger.info({
47
+ msg: `Migrated ${documents.rows.length} collection documents`
48
+ });
49
+ }
50
+
51
+ //# sourceMappingURL=migrateMainCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/postgres/predefinedMigrations/localize-status/migrateMainCollection.ts"],"sourcesContent":["import type { Payload } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\n/**\n * Migrates main collection documents from _status to per-locale status object\n */\nexport async function migrateMainCollectionStatus({\n collectionSlug,\n db,\n locales,\n payload,\n sql,\n versionsTable,\n}: {\n collectionSlug: string\n db: any\n locales: string[]\n payload: Payload\n sql: any\n versionsTable: string\n}): Promise<void> {\n const mainTable = toSnakeCase(collectionSlug)\n const mainLocalesTable = `${mainTable}_locales`\n\n payload.logger.info({ msg: `Migrating main collection locales for: ${mainLocalesTable}` })\n\n // Get all documents\n const documents = await db.execute({\n drizzle: db.drizzle,\n sql: sql`\n SELECT DISTINCT id\n FROM ${sql.identifier(mainTable)}\n `,\n })\n\n for (const doc of documents.rows) {\n // For each locale, get the latest version status\n for (const locale of locales) {\n const latestVersionStatus = await db.execute({\n drizzle: db.drizzle,\n sql: sql`\n SELECT l.version__status as _status\n FROM ${sql.identifier(versionsTable)} v\n JOIN ${sql.raw(`${versionsTable}_locales`)} l ON l._parent_id = v.id\n WHERE v.parent_id = ${doc.id}\n AND l._locale = ${locale}\n ORDER BY v.created_at DESC\n LIMIT 1\n `,\n })\n\n const status = latestVersionStatus.rows[0]?._status || 'draft'\n\n // Update the main collection's locales table with this status\n await db.execute({\n drizzle: db.drizzle,\n sql: sql`\n UPDATE ${sql.identifier(mainLocalesTable)}\n SET _status = ${status}\n WHERE _parent_id = ${doc.id}\n AND _locale = ${locale}\n `,\n })\n }\n }\n\n payload.logger.info({ msg: `Migrated ${documents.rows.length} collection documents` })\n}\n"],"names":["toSnakeCase","migrateMainCollectionStatus","collectionSlug","db","locales","payload","sql","versionsTable","mainTable","mainLocalesTable","logger","info","msg","documents","execute","drizzle","identifier","doc","rows","locale","latestVersionStatus","raw","id","status","_status","length"],"mappings":"AAEA,OAAOA,iBAAiB,gBAAe;AAEvC;;CAEC,GACD,OAAO,eAAeC,4BAA4B,EAChDC,cAAc,EACdC,EAAE,EACFC,OAAO,EACPC,OAAO,EACPC,GAAG,EACHC,aAAa,EAQd;IACC,MAAMC,YAAYR,YAAYE;IAC9B,MAAMO,mBAAmB,GAAGD,UAAU,QAAQ,CAAC;IAE/CH,QAAQK,MAAM,CAACC,IAAI,CAAC;QAAEC,KAAK,CAAC,uCAAuC,EAAEH,kBAAkB;IAAC;IAExF,oBAAoB;IACpB,MAAMI,YAAY,MAAMV,GAAGW,OAAO,CAAC;QACjCC,SAASZ,GAAGY,OAAO;QACnBT,KAAKA,GAAG,CAAC;;WAEF,EAAEA,IAAIU,UAAU,CAACR,WAAW;IACnC,CAAC;IACH;IAEA,KAAK,MAAMS,OAAOJ,UAAUK,IAAI,CAAE;QAChC,iDAAiD;QACjD,KAAK,MAAMC,UAAUf,QAAS;YAC5B,MAAMgB,sBAAsB,MAAMjB,GAAGW,OAAO,CAAC;gBAC3CC,SAASZ,GAAGY,OAAO;gBACnBT,KAAKA,GAAG,CAAC;;eAEF,EAAEA,IAAIU,UAAU,CAACT,eAAe;eAChC,EAAED,IAAIe,GAAG,CAAC,GAAGd,cAAc,QAAQ,CAAC,EAAE;8BACvB,EAAEU,IAAIK,EAAE,CAAC;0BACb,EAAEH,OAAO;;;QAG3B,CAAC;YACH;YAEA,MAAMI,SAASH,oBAAoBF,IAAI,CAAC,EAAE,EAAEM,WAAW;YAEvD,8DAA8D;YAC9D,MAAMrB,GAAGW,OAAO,CAAC;gBACfC,SAASZ,GAAGY,OAAO;gBACnBT,KAAKA,GAAG,CAAC;iBACA,EAAEA,IAAIU,UAAU,CAACP,kBAAkB;wBAC5B,EAAEc,OAAO;6BACJ,EAAEN,IAAIK,EAAE,CAAC;wBACd,EAAEH,OAAO;QACzB,CAAC;YACH;QACF;IACF;IAEAd,QAAQK,MAAM,CAACC,IAAI,CAAC;QAAEC,KAAK,CAAC,SAAS,EAAEC,UAAUK,IAAI,CAACO,MAAM,CAAC,qBAAqB,CAAC;IAAC;AACtF"}
@@ -0,0 +1,13 @@
1
+ import type { Payload } from 'payload';
2
+ /**
3
+ * Migrates main global document from _status to per-locale status object
4
+ */
5
+ export declare function migrateMainGlobalStatus({ db, globalSlug, locales, payload, sql, versionsTable, }: {
6
+ db: any;
7
+ globalSlug: string;
8
+ locales: string[];
9
+ payload: Payload;
10
+ sql: any;
11
+ versionsTable: string;
12
+ }): Promise<void>;
13
+ //# sourceMappingURL=migrateMainGlobal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrateMainGlobal.d.ts","sourceRoot":"","sources":["../../../../src/postgres/predefinedMigrations/localize-status/migrateMainGlobal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAItC;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,EAC5C,EAAE,EACF,UAAU,EACV,OAAO,EACP,OAAO,EACP,GAAG,EACH,aAAa,GACd,EAAE;IACD,EAAE,EAAE,GAAG,CAAA;IACP,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,GAAG,CAAA;IACR,aAAa,EAAE,MAAM,CAAA;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDhB"}
@@ -0,0 +1,54 @@
1
+ import toSnakeCase from 'to-snake-case';
2
+ /**
3
+ * Migrates main global document from _status to per-locale status object
4
+ */ export async function migrateMainGlobalStatus({ db, globalSlug, locales, payload, sql, versionsTable }) {
5
+ const globalTable = toSnakeCase(globalSlug);
6
+ const globalLocalesTable = `${globalTable}_locales`;
7
+ payload.logger.info({
8
+ msg: `Migrating main global locales for: ${globalLocalesTable}`
9
+ });
10
+ // For each locale, get the latest version status
11
+ for (const locale of locales){
12
+ const latestVersionStatus = await db.execute({
13
+ drizzle: db.drizzle,
14
+ sql: sql`
15
+ SELECT l.version__status as _status
16
+ FROM ${sql.identifier(versionsTable)} v
17
+ JOIN ${sql.raw(`${versionsTable}_locales`)} l ON l._parent_id = v.id
18
+ WHERE l._locale = ${locale}
19
+ ORDER BY v.created_at DESC
20
+ LIMIT 1
21
+ `
22
+ });
23
+ const status = latestVersionStatus.rows[0]?._status || 'draft';
24
+ // Get the global document ID from the globals table
25
+ const globalDoc = await db.execute({
26
+ drizzle: db.drizzle,
27
+ sql: sql`
28
+ SELECT id FROM ${sql.identifier(globalTable)} LIMIT 1
29
+ `
30
+ });
31
+ if (globalDoc.rows.length === 0) {
32
+ payload.logger.warn({
33
+ msg: `No global document found for ${globalSlug}, skipping`
34
+ });
35
+ continue;
36
+ }
37
+ const globalId = globalDoc.rows[0].id;
38
+ // Update the global's locales table with this status
39
+ await db.execute({
40
+ drizzle: db.drizzle,
41
+ sql: sql`
42
+ UPDATE ${sql.identifier(globalLocalesTable)}
43
+ SET _status = ${status}
44
+ WHERE _parent_id = ${globalId}
45
+ AND _locale = ${locale}
46
+ `
47
+ });
48
+ }
49
+ payload.logger.info({
50
+ msg: 'Migrated global document'
51
+ });
52
+ }
53
+
54
+ //# sourceMappingURL=migrateMainGlobal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/postgres/predefinedMigrations/localize-status/migrateMainGlobal.ts"],"sourcesContent":["import type { Payload } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\n/**\n * Migrates main global document from _status to per-locale status object\n */\nexport async function migrateMainGlobalStatus({\n db,\n globalSlug,\n locales,\n payload,\n sql,\n versionsTable,\n}: {\n db: any\n globalSlug: string\n locales: string[]\n payload: Payload\n sql: any\n versionsTable: string\n}): Promise<void> {\n const globalTable = toSnakeCase(globalSlug)\n const globalLocalesTable = `${globalTable}_locales`\n\n payload.logger.info({ msg: `Migrating main global locales for: ${globalLocalesTable}` })\n\n // For each locale, get the latest version status\n for (const locale of locales) {\n const latestVersionStatus = await db.execute({\n drizzle: db.drizzle,\n sql: sql`\n SELECT l.version__status as _status\n FROM ${sql.identifier(versionsTable)} v\n JOIN ${sql.raw(`${versionsTable}_locales`)} l ON l._parent_id = v.id\n WHERE l._locale = ${locale}\n ORDER BY v.created_at DESC\n LIMIT 1\n `,\n })\n\n const status = latestVersionStatus.rows[0]?._status || 'draft'\n\n // Get the global document ID from the globals table\n const globalDoc = await db.execute({\n drizzle: db.drizzle,\n sql: sql`\n SELECT id FROM ${sql.identifier(globalTable)} LIMIT 1\n `,\n })\n\n if (globalDoc.rows.length === 0) {\n payload.logger.warn({ msg: `No global document found for ${globalSlug}, skipping` })\n continue\n }\n\n const globalId = globalDoc.rows[0].id\n\n // Update the global's locales table with this status\n await db.execute({\n drizzle: db.drizzle,\n sql: sql`\n UPDATE ${sql.identifier(globalLocalesTable)}\n SET _status = ${status}\n WHERE _parent_id = ${globalId}\n AND _locale = ${locale}\n `,\n })\n }\n\n payload.logger.info({ msg: 'Migrated global document' })\n}\n"],"names":["toSnakeCase","migrateMainGlobalStatus","db","globalSlug","locales","payload","sql","versionsTable","globalTable","globalLocalesTable","logger","info","msg","locale","latestVersionStatus","execute","drizzle","identifier","raw","status","rows","_status","globalDoc","length","warn","globalId","id"],"mappings":"AAEA,OAAOA,iBAAiB,gBAAe;AAEvC;;CAEC,GACD,OAAO,eAAeC,wBAAwB,EAC5CC,EAAE,EACFC,UAAU,EACVC,OAAO,EACPC,OAAO,EACPC,GAAG,EACHC,aAAa,EAQd;IACC,MAAMC,cAAcR,YAAYG;IAChC,MAAMM,qBAAqB,GAAGD,YAAY,QAAQ,CAAC;IAEnDH,QAAQK,MAAM,CAACC,IAAI,CAAC;QAAEC,KAAK,CAAC,mCAAmC,EAAEH,oBAAoB;IAAC;IAEtF,iDAAiD;IACjD,KAAK,MAAMI,UAAUT,QAAS;QAC5B,MAAMU,sBAAsB,MAAMZ,GAAGa,OAAO,CAAC;YAC3CC,SAASd,GAAGc,OAAO;YACnBV,KAAKA,GAAG,CAAC;;aAEF,EAAEA,IAAIW,UAAU,CAACV,eAAe;aAChC,EAAED,IAAIY,GAAG,CAAC,GAAGX,cAAc,QAAQ,CAAC,EAAE;0BACzB,EAAEM,OAAO;;;MAG7B,CAAC;QACH;QAEA,MAAMM,SAASL,oBAAoBM,IAAI,CAAC,EAAE,EAAEC,WAAW;QAEvD,oDAAoD;QACpD,MAAMC,YAAY,MAAMpB,GAAGa,OAAO,CAAC;YACjCC,SAASd,GAAGc,OAAO;YACnBV,KAAKA,GAAG,CAAC;uBACQ,EAAEA,IAAIW,UAAU,CAACT,aAAa;MAC/C,CAAC;QACH;QAEA,IAAIc,UAAUF,IAAI,CAACG,MAAM,KAAK,GAAG;YAC/BlB,QAAQK,MAAM,CAACc,IAAI,CAAC;gBAAEZ,KAAK,CAAC,6BAA6B,EAAET,WAAW,UAAU,CAAC;YAAC;YAClF;QACF;QAEA,MAAMsB,WAAWH,UAAUF,IAAI,CAAC,EAAE,CAACM,EAAE;QAErC,qDAAqD;QACrD,MAAMxB,GAAGa,OAAO,CAAC;YACfC,SAASd,GAAGc,OAAO;YACnBV,KAAKA,GAAG,CAAC;eACA,EAAEA,IAAIW,UAAU,CAACR,oBAAoB;sBAC9B,EAAEU,OAAO;2BACJ,EAAEM,SAAS;sBAChB,EAAEZ,OAAO;MACzB,CAAC;QACH;IACF;IAEAR,QAAQK,MAAM,CAACC,IAAI,CAAC;QAAEC,KAAK;IAA2B;AACxD"}
@@ -0,0 +1,35 @@
1
+ import type { Payload } from 'payload';
2
+ import type { SizesToVariantsDirection, SizesToVariantsIndexRename } from '../../../utilities/getSizesToVariantsRenames.js';
3
+ type ExistingPostgresIndex = {
4
+ columns: string[];
5
+ isPartial: boolean;
6
+ name: string;
7
+ unique: boolean;
8
+ };
9
+ /**
10
+ * Moves every upload collection's stored image sizes between the legacy `sizes_*` columns and
11
+ * `variants_*` (main and versions tables), renaming each column in place so no data is copied,
12
+ * then renames the indexes on those columns to what the current schema expects. Skips columns
13
+ * that are already renamed, so it's safe to re-run.
14
+ */
15
+ export declare function migratePostgresSizesToVariants({ db, direction, payload, }: {
16
+ db: any;
17
+ direction?: SizesToVariantsDirection;
18
+ payload: Payload;
19
+ }): Promise<void>;
20
+ export declare function reservePostgresLegacyIndexName({ existingIndexes, index, reservedRelationNames, }: {
21
+ existingIndexes: ExistingPostgresIndex[];
22
+ index: SizesToVariantsIndexRename;
23
+ reservedRelationNames: Set<string>;
24
+ }): string;
25
+ export declare function resolvePostgresIndexRename({ existingIndexes, index, tableName, }: {
26
+ existingIndexes: ExistingPostgresIndex[];
27
+ index: SizesToVariantsIndexRename;
28
+ tableName: string;
29
+ }): string | undefined;
30
+ export declare function getPostgresSchemaRelationNames({ db, schemaName, }: {
31
+ db: any;
32
+ schemaName: string;
33
+ }): Promise<Set<string>>;
34
+ export {};
35
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/postgres/predefinedMigrations/sizes-to-variants/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAItC,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC3B,MAAM,iDAAiD,CAAA;AAUxD,KAAK,qBAAqB,GAAG;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;CAChB,CAAA;AAED;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAAC,EACnD,EAAE,EACF,SAAgB,EAChB,OAAO,GACR,EAAE;IACD,EAAE,EAAE,GAAG,CAAA;IACP,SAAS,CAAC,EAAE,wBAAwB,CAAA;IACpC,OAAO,EAAE,OAAO,CAAA;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8EhB;AAED,wBAAgB,8BAA8B,CAAC,EAC7C,eAAe,EACf,KAAK,EACL,qBAAqB,GACtB,EAAE;IACD,eAAe,EAAE,qBAAqB,EAAE,CAAA;IACxC,KAAK,EAAE,0BAA0B,CAAA;IACjC,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACnC,GAAG,MAAM,CAgCT;AAED,wBAAgB,0BAA0B,CAAC,EACzC,eAAe,EACf,KAAK,EACL,SAAS,GACV,EAAE;IACD,eAAe,EAAE,qBAAqB,EAAE,CAAA;IACxC,KAAK,EAAE,0BAA0B,CAAA;IACjC,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,MAAM,GAAG,SAAS,CA2CrB;AAoED,wBAAsB,8BAA8B,CAAC,EACnD,EAAE,EACF,UAAU,GACX,EAAE;IACD,EAAE,EAAE,GAAG,CAAA;IACP,UAAU,EAAE,MAAM,CAAA;CACnB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CASvB"}
@@ -0,0 +1,185 @@
1
+ import { sql } from 'drizzle-orm';
2
+ import { assertNoSizesToVariantsColumnCollisions, buildGeneratedLegacyIndexName, getSizesToVariantsRenames, isGeneratedLegacyIndexName } from '../../../utilities/getSizesToVariantsRenames.js';
3
+ /**
4
+ * Moves every upload collection's stored image sizes between the legacy `sizes_*` columns and
5
+ * `variants_*` (main and versions tables), renaming each column in place so no data is copied,
6
+ * then renames the indexes on those columns to what the current schema expects. Skips columns
7
+ * that are already renamed, so it's safe to re-run.
8
+ */ export async function migratePostgresSizesToVariants({ db, direction = 'up', payload }) {
9
+ const adapter = payload.db;
10
+ const schemaName = adapter.schemaName || 'public';
11
+ const plan = getSizesToVariantsRenames({
12
+ adapter,
13
+ direction
14
+ });
15
+ const plannedTables = [];
16
+ for (const tablePlan of plan){
17
+ const existingColumns = await getColumnNames({
18
+ db,
19
+ schemaName,
20
+ tableName: tablePlan.tableName
21
+ });
22
+ assertNoSizesToVariantsColumnCollisions({
23
+ columns: tablePlan.columns,
24
+ existingColumns,
25
+ tableName: tablePlan.tableName
26
+ });
27
+ plannedTables.push({
28
+ ...tablePlan,
29
+ existingColumns
30
+ });
31
+ }
32
+ const reservedRelationNames = direction === 'down' ? await getPostgresSchemaRelationNames({
33
+ db,
34
+ schemaName
35
+ }) : undefined;
36
+ for (const { columns, existingColumns, indexes, tableName } of plannedTables){
37
+ let renamedCount = 0;
38
+ for (const { from, to } of columns){
39
+ if (!existingColumns.has(from) || existingColumns.has(to)) {
40
+ continue;
41
+ }
42
+ await db.execute(sql`
43
+ ALTER TABLE ${sql.identifier(schemaName)}.${sql.identifier(tableName)}
44
+ RENAME COLUMN ${sql.identifier(from)} TO ${sql.identifier(to)}
45
+ `);
46
+ renamedCount++;
47
+ }
48
+ const existingIndexes = await getIndexes({
49
+ db,
50
+ schemaName,
51
+ tableName
52
+ });
53
+ for (const plannedIndex of indexes){
54
+ const index = reservedRelationNames && plannedIndex.legacyNameBase ? {
55
+ ...plannedIndex,
56
+ to: reservePostgresLegacyIndexName({
57
+ existingIndexes,
58
+ index: plannedIndex,
59
+ reservedRelationNames
60
+ })
61
+ } : plannedIndex;
62
+ const existingName = resolvePostgresIndexRename({
63
+ existingIndexes,
64
+ index,
65
+ tableName
66
+ });
67
+ if (!existingName) {
68
+ continue;
69
+ }
70
+ await db.execute(sql`
71
+ ALTER INDEX ${sql.identifier(schemaName)}.${sql.identifier(existingName)}
72
+ RENAME TO ${sql.identifier(index.to)}
73
+ `);
74
+ }
75
+ payload.logger.info({
76
+ msg: `sizes-to-variants (${direction}): renamed ${renamedCount} column(s) on "${tableName}"`
77
+ });
78
+ }
79
+ }
80
+ export function reservePostgresLegacyIndexName({ existingIndexes, index, reservedRelationNames }) {
81
+ const { legacyNameBase } = index;
82
+ if (!legacyNameBase) {
83
+ reservedRelationNames.add(index.to);
84
+ return index.to;
85
+ }
86
+ const existingDestination = existingIndexes.find((existingIndex)=>isCompatiblePostgresIndex({
87
+ existingIndex,
88
+ index
89
+ }) && isGeneratedLegacyIndexName({
90
+ indexName: existingIndex.name,
91
+ legacyNameBase
92
+ }));
93
+ if (existingDestination) {
94
+ reservedRelationNames.add(existingDestination.name);
95
+ return existingDestination.name;
96
+ }
97
+ let number = 0;
98
+ let indexName = buildGeneratedLegacyIndexName(legacyNameBase);
99
+ while(reservedRelationNames.has(indexName)){
100
+ number++;
101
+ indexName = buildGeneratedLegacyIndexName(legacyNameBase, number);
102
+ }
103
+ reservedRelationNames.add(indexName);
104
+ return indexName;
105
+ }
106
+ export function resolvePostgresIndexRename({ existingIndexes, index, tableName }) {
107
+ const destinationIndex = existingIndexes.find(({ name })=>name === index.to);
108
+ if (destinationIndex) {
109
+ if (!isCompatiblePostgresIndex({
110
+ existingIndex: destinationIndex,
111
+ index
112
+ })) {
113
+ throw new Error(`Cannot run the sizes-to-variants migration because index "${index.to}" on table "${tableName}" does not match the expected columns, uniqueness, or predicate.`);
114
+ }
115
+ return undefined;
116
+ }
117
+ let sourceIndex;
118
+ const { legacyNameBase } = index;
119
+ if (index.from) {
120
+ sourceIndex = existingIndexes.find(({ name })=>name === index.from);
121
+ } else if (legacyNameBase) {
122
+ const legacyCandidates = existingIndexes.filter((existingIndex)=>isGeneratedLegacyIndexName({
123
+ indexName: existingIndex.name,
124
+ legacyNameBase
125
+ }));
126
+ sourceIndex = legacyCandidates.find((existingIndex)=>isCompatiblePostgresIndex({
127
+ existingIndex,
128
+ index
129
+ })) ?? legacyCandidates[0];
130
+ }
131
+ if (!sourceIndex) {
132
+ return undefined;
133
+ }
134
+ if (!isCompatiblePostgresIndex({
135
+ existingIndex: sourceIndex,
136
+ index
137
+ })) {
138
+ throw new Error(`Cannot run the sizes-to-variants migration because index "${sourceIndex.name}" on table "${tableName}" does not match the expected columns, uniqueness, or predicate.`);
139
+ }
140
+ return sourceIndex.name === index.to ? undefined : sourceIndex.name;
141
+ }
142
+ function isCompatiblePostgresIndex({ existingIndex, index }) {
143
+ return existingIndex.columns.join(',') === index.columns.join(',') && existingIndex.unique === index.unique && !existingIndex.isPartial;
144
+ }
145
+ async function getColumnNames({ db, schemaName, tableName }) {
146
+ const result = await db.execute(sql`
147
+ SELECT column_name FROM information_schema.columns
148
+ WHERE table_schema = ${schemaName} AND table_name = ${tableName}
149
+ `);
150
+ return new Set(result.rows.map((row)=>row.column_name));
151
+ }
152
+ async function getIndexes({ db, schemaName, tableName }) {
153
+ const result = await db.execute(sql`
154
+ SELECT
155
+ i.relname AS name,
156
+ array_agg(a.attname::text ORDER BY k.ord) AS columns,
157
+ ix.indisunique AS is_unique,
158
+ ix.indpred IS NOT NULL AS is_partial
159
+ FROM pg_index ix
160
+ JOIN pg_class t ON t.oid = ix.indrelid
161
+ JOIN pg_namespace n ON n.oid = t.relnamespace
162
+ JOIN pg_class i ON i.oid = ix.indexrelid
163
+ CROSS JOIN LATERAL unnest(ix.indkey) WITH ORDINALITY AS k(attnum, ord)
164
+ JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = k.attnum
165
+ WHERE n.nspname = ${schemaName} AND t.relname = ${tableName}
166
+ GROUP BY i.relname, ix.indisunique, (ix.indpred IS NOT NULL)
167
+ `);
168
+ return result.rows.map((row)=>({
169
+ name: row.name,
170
+ columns: row.columns,
171
+ isPartial: row.is_partial,
172
+ unique: row.is_unique
173
+ }));
174
+ }
175
+ export async function getPostgresSchemaRelationNames({ db, schemaName }) {
176
+ const result = await db.execute(sql`
177
+ SELECT c.relname AS name
178
+ FROM pg_class c
179
+ JOIN pg_namespace n ON n.oid = c.relnamespace
180
+ WHERE n.nspname = ${schemaName}
181
+ `);
182
+ return new Set(result.rows.map((row)=>row.name));
183
+ }
184
+
185
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/postgres/predefinedMigrations/sizes-to-variants/index.ts"],"sourcesContent":["import type { Payload } from 'payload'\n\nimport { sql } from 'drizzle-orm'\n\nimport type {\n SizesToVariantsDirection,\n SizesToVariantsIndexRename,\n} from '../../../utilities/getSizesToVariantsRenames.js'\nimport type { BasePostgresAdapter } from '../../types.js'\n\nimport {\n assertNoSizesToVariantsColumnCollisions,\n buildGeneratedLegacyIndexName,\n getSizesToVariantsRenames,\n isGeneratedLegacyIndexName,\n} from '../../../utilities/getSizesToVariantsRenames.js'\n\ntype ExistingPostgresIndex = {\n columns: string[]\n isPartial: boolean\n name: string\n unique: boolean\n}\n\n/**\n * Moves every upload collection's stored image sizes between the legacy `sizes_*` columns and\n * `variants_*` (main and versions tables), renaming each column in place so no data is copied,\n * then renames the indexes on those columns to what the current schema expects. Skips columns\n * that are already renamed, so it's safe to re-run.\n */\nexport async function migratePostgresSizesToVariants({\n db,\n direction = 'up',\n payload,\n}: {\n db: any\n direction?: SizesToVariantsDirection\n payload: Payload\n}): Promise<void> {\n const adapter = payload.db as unknown as BasePostgresAdapter\n const schemaName = adapter.schemaName || 'public'\n const plan = getSizesToVariantsRenames({ adapter, direction })\n const plannedTables: Array<\n (typeof plan)[number] & {\n existingColumns: Set<string>\n }\n > = []\n\n for (const tablePlan of plan) {\n const existingColumns = await getColumnNames({\n db,\n schemaName,\n tableName: tablePlan.tableName,\n })\n\n assertNoSizesToVariantsColumnCollisions({\n columns: tablePlan.columns,\n existingColumns,\n tableName: tablePlan.tableName,\n })\n\n plannedTables.push({ ...tablePlan, existingColumns })\n }\n\n const reservedRelationNames =\n direction === 'down' ? await getPostgresSchemaRelationNames({ db, schemaName }) : undefined\n\n for (const { columns, existingColumns, indexes, tableName } of plannedTables) {\n let renamedCount = 0\n\n for (const { from, to } of columns) {\n if (!existingColumns.has(from) || existingColumns.has(to)) {\n continue\n }\n\n await db.execute(sql`\n ALTER TABLE ${sql.identifier(schemaName)}.${sql.identifier(tableName)}\n RENAME COLUMN ${sql.identifier(from)} TO ${sql.identifier(to)}\n `)\n renamedCount++\n }\n\n const existingIndexes = await getIndexes({ db, schemaName, tableName })\n\n for (const plannedIndex of indexes) {\n const index =\n reservedRelationNames && plannedIndex.legacyNameBase\n ? {\n ...plannedIndex,\n to: reservePostgresLegacyIndexName({\n existingIndexes,\n index: plannedIndex,\n reservedRelationNames,\n }),\n }\n : plannedIndex\n const existingName = resolvePostgresIndexRename({\n existingIndexes,\n index,\n tableName,\n })\n\n if (!existingName) {\n continue\n }\n\n await db.execute(sql`\n ALTER INDEX ${sql.identifier(schemaName)}.${sql.identifier(existingName)}\n RENAME TO ${sql.identifier(index.to)}\n `)\n }\n\n payload.logger.info({\n msg: `sizes-to-variants (${direction}): renamed ${renamedCount} column(s) on \"${tableName}\"`,\n })\n }\n}\n\nexport function reservePostgresLegacyIndexName({\n existingIndexes,\n index,\n reservedRelationNames,\n}: {\n existingIndexes: ExistingPostgresIndex[]\n index: SizesToVariantsIndexRename\n reservedRelationNames: Set<string>\n}): string {\n const { legacyNameBase } = index\n\n if (!legacyNameBase) {\n reservedRelationNames.add(index.to)\n return index.to\n }\n\n const existingDestination = existingIndexes.find(\n (existingIndex) =>\n isCompatiblePostgresIndex({ existingIndex, index }) &&\n isGeneratedLegacyIndexName({\n indexName: existingIndex.name,\n legacyNameBase,\n }),\n )\n\n if (existingDestination) {\n reservedRelationNames.add(existingDestination.name)\n return existingDestination.name\n }\n\n let number = 0\n let indexName = buildGeneratedLegacyIndexName(legacyNameBase)\n\n while (reservedRelationNames.has(indexName)) {\n number++\n indexName = buildGeneratedLegacyIndexName(legacyNameBase, number)\n }\n\n reservedRelationNames.add(indexName)\n return indexName\n}\n\nexport function resolvePostgresIndexRename({\n existingIndexes,\n index,\n tableName,\n}: {\n existingIndexes: ExistingPostgresIndex[]\n index: SizesToVariantsIndexRename\n tableName: string\n}): string | undefined {\n const destinationIndex = existingIndexes.find(({ name }) => name === index.to)\n\n if (destinationIndex) {\n if (!isCompatiblePostgresIndex({ existingIndex: destinationIndex, index })) {\n throw new Error(\n `Cannot run the sizes-to-variants migration because index \"${index.to}\" on table \"${tableName}\" does not match the expected columns, uniqueness, or predicate.`,\n )\n }\n\n return undefined\n }\n\n let sourceIndex: ExistingPostgresIndex | undefined\n const { legacyNameBase } = index\n\n if (index.from) {\n sourceIndex = existingIndexes.find(({ name }) => name === index.from)\n } else if (legacyNameBase) {\n const legacyCandidates = existingIndexes.filter((existingIndex) =>\n isGeneratedLegacyIndexName({\n indexName: existingIndex.name,\n legacyNameBase,\n }),\n )\n\n sourceIndex =\n legacyCandidates.find((existingIndex) =>\n isCompatiblePostgresIndex({ existingIndex, index }),\n ) ?? legacyCandidates[0]\n }\n\n if (!sourceIndex) {\n return undefined\n }\n\n if (!isCompatiblePostgresIndex({ existingIndex: sourceIndex, index })) {\n throw new Error(\n `Cannot run the sizes-to-variants migration because index \"${sourceIndex.name}\" on table \"${tableName}\" does not match the expected columns, uniqueness, or predicate.`,\n )\n }\n\n return sourceIndex.name === index.to ? undefined : sourceIndex.name\n}\n\nfunction isCompatiblePostgresIndex({\n existingIndex,\n index,\n}: {\n existingIndex: ExistingPostgresIndex\n index: SizesToVariantsIndexRename\n}): boolean {\n return (\n existingIndex.columns.join(',') === index.columns.join(',') &&\n existingIndex.unique === index.unique &&\n !existingIndex.isPartial\n )\n}\n\nasync function getColumnNames({\n db,\n schemaName,\n tableName,\n}: {\n db: any\n schemaName: string\n tableName: string\n}): Promise<Set<string>> {\n const result = await db.execute(sql`\n SELECT column_name FROM information_schema.columns\n WHERE table_schema = ${schemaName} AND table_name = ${tableName}\n `)\n\n return new Set(result.rows.map((row: { column_name: string }) => row.column_name))\n}\n\nasync function getIndexes({\n db,\n schemaName,\n tableName,\n}: {\n db: any\n schemaName: string\n tableName: string\n}): Promise<ExistingPostgresIndex[]> {\n const result = await db.execute(sql`\n SELECT\n i.relname AS name,\n array_agg(a.attname::text ORDER BY k.ord) AS columns,\n ix.indisunique AS is_unique,\n ix.indpred IS NOT NULL AS is_partial\n FROM pg_index ix\n JOIN pg_class t ON t.oid = ix.indrelid\n JOIN pg_namespace n ON n.oid = t.relnamespace\n JOIN pg_class i ON i.oid = ix.indexrelid\n CROSS JOIN LATERAL unnest(ix.indkey) WITH ORDINALITY AS k(attnum, ord)\n JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = k.attnum\n WHERE n.nspname = ${schemaName} AND t.relname = ${tableName}\n GROUP BY i.relname, ix.indisunique, (ix.indpred IS NOT NULL)\n `)\n\n return result.rows.map(\n (row: { columns: string[]; is_partial: boolean; is_unique: boolean; name: string }) => ({\n name: row.name,\n columns: row.columns,\n isPartial: row.is_partial,\n unique: row.is_unique,\n }),\n )\n}\n\nexport async function getPostgresSchemaRelationNames({\n db,\n schemaName,\n}: {\n db: any\n schemaName: string\n}): Promise<Set<string>> {\n const result = await db.execute(sql`\n SELECT c.relname AS name\n FROM pg_class c\n JOIN pg_namespace n ON n.oid = c.relnamespace\n WHERE n.nspname = ${schemaName}\n `)\n\n return new Set(result.rows.map((row: { name: string }) => row.name))\n}\n"],"names":["sql","assertNoSizesToVariantsColumnCollisions","buildGeneratedLegacyIndexName","getSizesToVariantsRenames","isGeneratedLegacyIndexName","migratePostgresSizesToVariants","db","direction","payload","adapter","schemaName","plan","plannedTables","tablePlan","existingColumns","getColumnNames","tableName","columns","push","reservedRelationNames","getPostgresSchemaRelationNames","undefined","indexes","renamedCount","from","to","has","execute","identifier","existingIndexes","getIndexes","plannedIndex","index","legacyNameBase","reservePostgresLegacyIndexName","existingName","resolvePostgresIndexRename","logger","info","msg","add","existingDestination","find","existingIndex","isCompatiblePostgresIndex","indexName","name","number","destinationIndex","Error","sourceIndex","legacyCandidates","filter","join","unique","isPartial","result","Set","rows","map","row","column_name","is_partial","is_unique"],"mappings":"AAEA,SAASA,GAAG,QAAQ,cAAa;AAQjC,SACEC,uCAAuC,EACvCC,6BAA6B,EAC7BC,yBAAyB,EACzBC,0BAA0B,QACrB,kDAAiD;AASxD;;;;;CAKC,GACD,OAAO,eAAeC,+BAA+B,EACnDC,EAAE,EACFC,YAAY,IAAI,EAChBC,OAAO,EAKR;IACC,MAAMC,UAAUD,QAAQF,EAAE;IAC1B,MAAMI,aAAaD,QAAQC,UAAU,IAAI;IACzC,MAAMC,OAAOR,0BAA0B;QAAEM;QAASF;IAAU;IAC5D,MAAMK,gBAIF,EAAE;IAEN,KAAK,MAAMC,aAAaF,KAAM;QAC5B,MAAMG,kBAAkB,MAAMC,eAAe;YAC3CT;YACAI;YACAM,WAAWH,UAAUG,SAAS;QAChC;QAEAf,wCAAwC;YACtCgB,SAASJ,UAAUI,OAAO;YAC1BH;YACAE,WAAWH,UAAUG,SAAS;QAChC;QAEAJ,cAAcM,IAAI,CAAC;YAAE,GAAGL,SAAS;YAAEC;QAAgB;IACrD;IAEA,MAAMK,wBACJZ,cAAc,SAAS,MAAMa,+BAA+B;QAAEd;QAAII;IAAW,KAAKW;IAEpF,KAAK,MAAM,EAAEJ,OAAO,EAAEH,eAAe,EAAEQ,OAAO,EAAEN,SAAS,EAAE,IAAIJ,cAAe;QAC5E,IAAIW,eAAe;QAEnB,KAAK,MAAM,EAAEC,IAAI,EAAEC,EAAE,EAAE,IAAIR,QAAS;YAClC,IAAI,CAACH,gBAAgBY,GAAG,CAACF,SAASV,gBAAgBY,GAAG,CAACD,KAAK;gBACzD;YACF;YAEA,MAAMnB,GAAGqB,OAAO,CAAC3B,GAAG,CAAC;oBACP,EAAEA,IAAI4B,UAAU,CAAClB,YAAY,CAAC,EAAEV,IAAI4B,UAAU,CAACZ,WAAW;sBACxD,EAAEhB,IAAI4B,UAAU,CAACJ,MAAM,IAAI,EAAExB,IAAI4B,UAAU,CAACH,IAAI;MAChE,CAAC;YACDF;QACF;QAEA,MAAMM,kBAAkB,MAAMC,WAAW;YAAExB;YAAII;YAAYM;QAAU;QAErE,KAAK,MAAMe,gBAAgBT,QAAS;YAClC,MAAMU,QACJb,yBAAyBY,aAAaE,cAAc,GAChD;gBACE,GAAGF,YAAY;gBACfN,IAAIS,+BAA+B;oBACjCL;oBACAG,OAAOD;oBACPZ;gBACF;YACF,IACAY;YACN,MAAMI,eAAeC,2BAA2B;gBAC9CP;gBACAG;gBACAhB;YACF;YAEA,IAAI,CAACmB,cAAc;gBACjB;YACF;YAEA,MAAM7B,GAAGqB,OAAO,CAAC3B,GAAG,CAAC;oBACP,EAAEA,IAAI4B,UAAU,CAAClB,YAAY,CAAC,EAAEV,IAAI4B,UAAU,CAACO,cAAc;kBAC/D,EAAEnC,IAAI4B,UAAU,CAACI,MAAMP,EAAE,EAAE;MACvC,CAAC;QACH;QAEAjB,QAAQ6B,MAAM,CAACC,IAAI,CAAC;YAClBC,KAAK,CAAC,mBAAmB,EAAEhC,UAAU,WAAW,EAAEgB,aAAa,eAAe,EAAEP,UAAU,CAAC,CAAC;QAC9F;IACF;AACF;AAEA,OAAO,SAASkB,+BAA+B,EAC7CL,eAAe,EACfG,KAAK,EACLb,qBAAqB,EAKtB;IACC,MAAM,EAAEc,cAAc,EAAE,GAAGD;IAE3B,IAAI,CAACC,gBAAgB;QACnBd,sBAAsBqB,GAAG,CAACR,MAAMP,EAAE;QAClC,OAAOO,MAAMP,EAAE;IACjB;IAEA,MAAMgB,sBAAsBZ,gBAAgBa,IAAI,CAC9C,CAACC,gBACCC,0BAA0B;YAAED;YAAeX;QAAM,MACjD5B,2BAA2B;YACzByC,WAAWF,cAAcG,IAAI;YAC7Bb;QACF;IAGJ,IAAIQ,qBAAqB;QACvBtB,sBAAsBqB,GAAG,CAACC,oBAAoBK,IAAI;QAClD,OAAOL,oBAAoBK,IAAI;IACjC;IAEA,IAAIC,SAAS;IACb,IAAIF,YAAY3C,8BAA8B+B;IAE9C,MAAOd,sBAAsBO,GAAG,CAACmB,WAAY;QAC3CE;QACAF,YAAY3C,8BAA8B+B,gBAAgBc;IAC5D;IAEA5B,sBAAsBqB,GAAG,CAACK;IAC1B,OAAOA;AACT;AAEA,OAAO,SAAST,2BAA2B,EACzCP,eAAe,EACfG,KAAK,EACLhB,SAAS,EAKV;IACC,MAAMgC,mBAAmBnB,gBAAgBa,IAAI,CAAC,CAAC,EAAEI,IAAI,EAAE,GAAKA,SAASd,MAAMP,EAAE;IAE7E,IAAIuB,kBAAkB;QACpB,IAAI,CAACJ,0BAA0B;YAAED,eAAeK;YAAkBhB;QAAM,IAAI;YAC1E,MAAM,IAAIiB,MACR,CAAC,0DAA0D,EAAEjB,MAAMP,EAAE,CAAC,YAAY,EAAET,UAAU,gEAAgE,CAAC;QAEnK;QAEA,OAAOK;IACT;IAEA,IAAI6B;IACJ,MAAM,EAAEjB,cAAc,EAAE,GAAGD;IAE3B,IAAIA,MAAMR,IAAI,EAAE;QACd0B,cAAcrB,gBAAgBa,IAAI,CAAC,CAAC,EAAEI,IAAI,EAAE,GAAKA,SAASd,MAAMR,IAAI;IACtE,OAAO,IAAIS,gBAAgB;QACzB,MAAMkB,mBAAmBtB,gBAAgBuB,MAAM,CAAC,CAACT,gBAC/CvC,2BAA2B;gBACzByC,WAAWF,cAAcG,IAAI;gBAC7Bb;YACF;QAGFiB,cACEC,iBAAiBT,IAAI,CAAC,CAACC,gBACrBC,0BAA0B;gBAAED;gBAAeX;YAAM,OAC9CmB,gBAAgB,CAAC,EAAE;IAC5B;IAEA,IAAI,CAACD,aAAa;QAChB,OAAO7B;IACT;IAEA,IAAI,CAACuB,0BAA0B;QAAED,eAAeO;QAAalB;IAAM,IAAI;QACrE,MAAM,IAAIiB,MACR,CAAC,0DAA0D,EAAEC,YAAYJ,IAAI,CAAC,YAAY,EAAE9B,UAAU,gEAAgE,CAAC;IAE3K;IAEA,OAAOkC,YAAYJ,IAAI,KAAKd,MAAMP,EAAE,GAAGJ,YAAY6B,YAAYJ,IAAI;AACrE;AAEA,SAASF,0BAA0B,EACjCD,aAAa,EACbX,KAAK,EAIN;IACC,OACEW,cAAc1B,OAAO,CAACoC,IAAI,CAAC,SAASrB,MAAMf,OAAO,CAACoC,IAAI,CAAC,QACvDV,cAAcW,MAAM,KAAKtB,MAAMsB,MAAM,IACrC,CAACX,cAAcY,SAAS;AAE5B;AAEA,eAAexC,eAAe,EAC5BT,EAAE,EACFI,UAAU,EACVM,SAAS,EAKV;IACC,MAAMwC,SAAS,MAAMlD,GAAGqB,OAAO,CAAC3B,GAAG,CAAC;;yBAEb,EAAEU,WAAW,kBAAkB,EAAEM,UAAU;EAClE,CAAC;IAED,OAAO,IAAIyC,IAAID,OAAOE,IAAI,CAACC,GAAG,CAAC,CAACC,MAAiCA,IAAIC,WAAW;AAClF;AAEA,eAAe/B,WAAW,EACxBxB,EAAE,EACFI,UAAU,EACVM,SAAS,EAKV;IACC,MAAMwC,SAAS,MAAMlD,GAAGqB,OAAO,CAAC3B,GAAG,CAAC;;;;;;;;;;;;sBAYhB,EAAEU,WAAW,iBAAiB,EAAEM,UAAU;;EAE9D,CAAC;IAED,OAAOwC,OAAOE,IAAI,CAACC,GAAG,CACpB,CAACC,MAAuF,CAAA;YACtFd,MAAMc,IAAId,IAAI;YACd7B,SAAS2C,IAAI3C,OAAO;YACpBsC,WAAWK,IAAIE,UAAU;YACzBR,QAAQM,IAAIG,SAAS;QACvB,CAAA;AAEJ;AAEA,OAAO,eAAe3C,+BAA+B,EACnDd,EAAE,EACFI,UAAU,EAIX;IACC,MAAM8C,SAAS,MAAMlD,GAAGqB,OAAO,CAAC3B,GAAG,CAAC;;;;sBAIhB,EAAEU,WAAW;EACjC,CAAC;IAED,OAAO,IAAI+C,IAAID,OAAOE,IAAI,CAACC,GAAG,CAAC,CAACC,MAA0BA,IAAId,IAAI;AACpE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAEtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAK/C,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,mBAAmB,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,EAAE,EAAE,UAAU,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;IACd,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,cAAc,mHAYxB,IAAI,kBA4MN,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAEtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAK/C,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,mBAAmB,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,EAAE,EAAE,UAAU,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;IACd,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,cAAc,mHAYxB,IAAI,kBAgNN,CAAA"}
@@ -13,7 +13,8 @@ export const fetchAndResave = async ({ adapter, collectionSlug, db, debug, docsT
13
13
  fallbackLocale: null,
14
14
  locale: 'all',
15
15
  req,
16
- showHiddenFields: true
16
+ showHiddenFields: true,
17
+ overrideAccess: true
17
18
  });
18
19
  if (debug) {
19
20
  payload.logger.info(`The collection "${collectionConfig.slug}" version with ID ${id} will be migrated`);
@@ -52,7 +53,8 @@ export const fetchAndResave = async ({ adapter, collectionSlug, db, debug, docsT
52
53
  fallbackLocale: null,
53
54
  locale: 'all',
54
55
  req,
55
- showHiddenFields: true
56
+ showHiddenFields: true,
57
+ overrideAccess: true
56
58
  });
57
59
  if (debug) {
58
60
  payload.logger.info(`The collection "${collectionConfig.slug}" with ID ${doc.id} will be migrated`);
@@ -97,7 +99,8 @@ export const fetchAndResave = async ({ adapter, collectionSlug, db, debug, docsT
97
99
  limit: 0,
98
100
  locale: 'all',
99
101
  req,
100
- showHiddenFields: true
102
+ showHiddenFields: true,
103
+ overrideAccess: true
101
104
  });
102
105
  if (debug) {
103
106
  payload.logger.info(`${docs.length} global "${globalSlug}" versions will be migrated`);
@@ -137,7 +140,8 @@ export const fetchAndResave = async ({ adapter, collectionSlug, db, debug, docsT
137
140
  fallbackLocale: null,
138
141
  locale: 'all',
139
142
  req,
140
- showHiddenFields: true
143
+ showHiddenFields: true,
144
+ overrideAccess: true
141
145
  });
142
146
  traverseFields({
143
147
  doc,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.ts"],"sourcesContent":["import type { FlattenedField, Payload, PayloadRequest } from 'payload'\n\nimport type { BasePostgresAdapter, PostgresDB } from '../../../types.js'\nimport type { DocsToResave } from '../types.js'\n\nimport { upsertRow } from '../../../../upsertRow/index.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n adapter: BasePostgresAdapter\n collectionSlug?: string\n db: PostgresDB\n debug: boolean\n docsToResave: DocsToResave\n fields: FlattenedField[]\n globalSlug?: string\n isVersions: boolean\n payload: Payload\n req?: Partial<PayloadRequest>\n tableName: string\n}\n\nexport const fetchAndResave = async ({\n adapter,\n collectionSlug,\n db,\n debug,\n docsToResave,\n fields,\n globalSlug,\n isVersions,\n payload,\n req,\n tableName,\n}: Args) => {\n for (const [id, rows] of Object.entries(docsToResave)) {\n if (collectionSlug) {\n const collectionConfig = payload.collections[collectionSlug].config\n\n if (collectionConfig) {\n if (isVersions) {\n const doc = await payload.findVersionByID({\n id,\n collection: collectionSlug,\n depth: 0,\n fallbackLocale: null,\n locale: 'all',\n req,\n showHiddenFields: true,\n })\n\n if (debug) {\n payload.logger.info(\n `The collection \"${collectionConfig.slug}\" version with ID ${id} will be migrated`,\n )\n }\n\n traverseFields({\n doc,\n fields,\n path: '',\n rows,\n })\n\n try {\n await upsertRow({\n id: doc.id,\n adapter,\n collectionSlug,\n data: doc,\n db,\n fields,\n ignoreResult: true,\n operation: 'update',\n req,\n tableName,\n })\n } catch (err) {\n payload.logger.error(\n `\"${collectionConfig.slug}\" version with ID ${doc.id} FAILED TO MIGRATE`,\n )\n\n throw err\n }\n\n if (debug) {\n payload.logger.info(\n `\"${collectionConfig.slug}\" version with ID ${doc.id} migrated successfully!`,\n )\n }\n } else {\n const doc = await payload.findByID({\n id,\n collection: collectionSlug,\n depth: 0,\n fallbackLocale: null,\n locale: 'all',\n req,\n showHiddenFields: true,\n })\n\n if (debug) {\n payload.logger.info(\n `The collection \"${collectionConfig.slug}\" with ID ${doc.id} will be migrated`,\n )\n }\n\n traverseFields({\n doc,\n fields,\n path: '',\n rows,\n })\n\n try {\n await upsertRow({\n id: doc.id,\n adapter,\n collectionSlug,\n data: doc,\n db,\n fields,\n ignoreResult: true,\n operation: 'update',\n req,\n tableName,\n })\n } catch (err) {\n payload.logger.error(\n `The collection \"${collectionConfig.slug}\" with ID ${doc.id} has FAILED TO MIGRATE`,\n )\n\n throw err\n }\n\n if (debug) {\n payload.logger.info(\n `The collection \"${collectionConfig.slug}\" with ID ${doc.id} has migrated successfully!`,\n )\n }\n }\n }\n }\n\n if (globalSlug) {\n const globalConfig = payload.config.globals?.find((global) => global.slug === globalSlug)\n\n if (globalConfig) {\n if (isVersions) {\n const { docs } = await payload.findGlobalVersions({\n slug: globalSlug,\n depth: 0,\n fallbackLocale: null,\n limit: 0,\n locale: 'all',\n req,\n showHiddenFields: true,\n })\n\n if (debug) {\n payload.logger.info(`${docs.length} global \"${globalSlug}\" versions will be migrated`)\n }\n\n for (const doc of docs) {\n traverseFields({\n doc,\n fields,\n path: '',\n rows,\n })\n\n try {\n await upsertRow({\n id: doc.id,\n adapter,\n data: doc,\n db,\n fields,\n globalSlug,\n ignoreResult: true,\n operation: 'update',\n req,\n tableName,\n })\n } catch (err) {\n payload.logger.error(`\"${globalSlug}\" version with ID ${doc.id} FAILED TO MIGRATE`)\n\n throw err\n }\n\n if (debug) {\n payload.logger.info(\n `\"${globalSlug}\" version with ID ${doc.id} migrated successfully!`,\n )\n }\n }\n } else {\n const doc = await payload.findGlobal({\n slug: globalSlug,\n depth: 0,\n fallbackLocale: null,\n locale: 'all',\n req,\n showHiddenFields: true,\n })\n\n traverseFields({\n doc,\n fields,\n path: '',\n rows,\n })\n\n try {\n await upsertRow({\n adapter,\n data: doc,\n db,\n fields,\n globalSlug,\n ignoreResult: true,\n operation: 'update',\n req,\n tableName,\n })\n } catch (err) {\n payload.logger.error(`The global \"${globalSlug}\" has FAILED TO MIGRATE`)\n\n throw err\n }\n\n if (debug) {\n payload.logger.info(`The global \"${globalSlug}\" has migrated successfully!`)\n }\n }\n }\n }\n }\n}\n"],"names":["upsertRow","traverseFields","fetchAndResave","adapter","collectionSlug","db","debug","docsToResave","fields","globalSlug","isVersions","payload","req","tableName","id","rows","Object","entries","collectionConfig","collections","config","doc","findVersionByID","collection","depth","fallbackLocale","locale","showHiddenFields","logger","info","slug","path","data","ignoreResult","operation","err","error","findByID","globalConfig","globals","find","global","docs","findGlobalVersions","limit","length","findGlobal"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.ts"],"sourcesContent":["import type { FlattenedField, Payload, PayloadRequest } from 'payload'\n\nimport type { BasePostgresAdapter, PostgresDB } from '../../../types.js'\nimport type { DocsToResave } from '../types.js'\n\nimport { upsertRow } from '../../../../upsertRow/index.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n adapter: BasePostgresAdapter\n collectionSlug?: string\n db: PostgresDB\n debug: boolean\n docsToResave: DocsToResave\n fields: FlattenedField[]\n globalSlug?: string\n isVersions: boolean\n payload: Payload\n req?: Partial<PayloadRequest>\n tableName: string\n}\n\nexport const fetchAndResave = async ({\n adapter,\n collectionSlug,\n db,\n debug,\n docsToResave,\n fields,\n globalSlug,\n isVersions,\n payload,\n req,\n tableName,\n}: Args) => {\n for (const [id, rows] of Object.entries(docsToResave)) {\n if (collectionSlug) {\n const collectionConfig = payload.collections[collectionSlug].config\n\n if (collectionConfig) {\n if (isVersions) {\n const doc = await payload.findVersionByID({\n id,\n collection: collectionSlug,\n depth: 0,\n fallbackLocale: null,\n locale: 'all',\n req,\n showHiddenFields: true,\n overrideAccess: true,\n })\n\n if (debug) {\n payload.logger.info(\n `The collection \"${collectionConfig.slug}\" version with ID ${id} will be migrated`,\n )\n }\n\n traverseFields({\n doc,\n fields,\n path: '',\n rows,\n })\n\n try {\n await upsertRow({\n id: doc.id,\n adapter,\n collectionSlug,\n data: doc,\n db,\n fields,\n ignoreResult: true,\n operation: 'update',\n req,\n tableName,\n })\n } catch (err) {\n payload.logger.error(\n `\"${collectionConfig.slug}\" version with ID ${doc.id} FAILED TO MIGRATE`,\n )\n\n throw err\n }\n\n if (debug) {\n payload.logger.info(\n `\"${collectionConfig.slug}\" version with ID ${doc.id} migrated successfully!`,\n )\n }\n } else {\n const doc = await payload.findByID({\n id,\n collection: collectionSlug,\n depth: 0,\n fallbackLocale: null,\n locale: 'all',\n req,\n showHiddenFields: true,\n overrideAccess: true,\n })\n\n if (debug) {\n payload.logger.info(\n `The collection \"${collectionConfig.slug}\" with ID ${doc.id} will be migrated`,\n )\n }\n\n traverseFields({\n doc,\n fields,\n path: '',\n rows,\n })\n\n try {\n await upsertRow({\n id: doc.id,\n adapter,\n collectionSlug,\n data: doc,\n db,\n fields,\n ignoreResult: true,\n operation: 'update',\n req,\n tableName,\n })\n } catch (err) {\n payload.logger.error(\n `The collection \"${collectionConfig.slug}\" with ID ${doc.id} has FAILED TO MIGRATE`,\n )\n\n throw err\n }\n\n if (debug) {\n payload.logger.info(\n `The collection \"${collectionConfig.slug}\" with ID ${doc.id} has migrated successfully!`,\n )\n }\n }\n }\n }\n\n if (globalSlug) {\n const globalConfig = payload.config.globals?.find((global) => global.slug === globalSlug)\n\n if (globalConfig) {\n if (isVersions) {\n const { docs } = await payload.findGlobalVersions({\n slug: globalSlug,\n depth: 0,\n fallbackLocale: null,\n limit: 0,\n locale: 'all',\n req,\n showHiddenFields: true,\n overrideAccess: true,\n })\n\n if (debug) {\n payload.logger.info(`${docs.length} global \"${globalSlug}\" versions will be migrated`)\n }\n\n for (const doc of docs) {\n traverseFields({\n doc,\n fields,\n path: '',\n rows,\n })\n\n try {\n await upsertRow({\n id: doc.id,\n adapter,\n data: doc,\n db,\n fields,\n globalSlug,\n ignoreResult: true,\n operation: 'update',\n req,\n tableName,\n })\n } catch (err) {\n payload.logger.error(`\"${globalSlug}\" version with ID ${doc.id} FAILED TO MIGRATE`)\n\n throw err\n }\n\n if (debug) {\n payload.logger.info(\n `\"${globalSlug}\" version with ID ${doc.id} migrated successfully!`,\n )\n }\n }\n } else {\n const doc = await payload.findGlobal({\n slug: globalSlug,\n depth: 0,\n fallbackLocale: null,\n locale: 'all',\n req,\n showHiddenFields: true,\n overrideAccess: true,\n })\n\n traverseFields({\n doc,\n fields,\n path: '',\n rows,\n })\n\n try {\n await upsertRow({\n adapter,\n data: doc,\n db,\n fields,\n globalSlug,\n ignoreResult: true,\n operation: 'update',\n req,\n tableName,\n })\n } catch (err) {\n payload.logger.error(`The global \"${globalSlug}\" has FAILED TO MIGRATE`)\n\n throw err\n }\n\n if (debug) {\n payload.logger.info(`The global \"${globalSlug}\" has migrated successfully!`)\n }\n }\n }\n }\n }\n}\n"],"names":["upsertRow","traverseFields","fetchAndResave","adapter","collectionSlug","db","debug","docsToResave","fields","globalSlug","isVersions","payload","req","tableName","id","rows","Object","entries","collectionConfig","collections","config","doc","findVersionByID","collection","depth","fallbackLocale","locale","showHiddenFields","overrideAccess","logger","info","slug","path","data","ignoreResult","operation","err","error","findByID","globalConfig","globals","find","global","docs","findGlobalVersions","limit","length","findGlobal"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../../../src/postgres/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,KAAK,IAAI,GAAG;IACV,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CAChC,CAAA;AAED,eAAO,MAAM,cAAc,wCAAyC,IAAI,SAsKvE,CAAA"}
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../../../src/postgres/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7D,KAAK,IAAI,GAAG;IACV,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CAChC,CAAA;AAED,eAAO,MAAM,cAAc,wCAAyC,IAAI,SAwKvE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/postgres/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.ts"],"sourcesContent":["import type { FlattenedField } from 'payload'\n\ntype Args = {\n doc: Record<string, unknown>\n fields: FlattenedField[]\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.flattenedFields,\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.flattenedFields,\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 // Can ignore string blocks, as those were added in v3 and don't need to be migrated\n const matchedBlock = field.blocks.find(\n (block) => typeof block !== 'string' && block.slug === row.blockType,\n )\n\n if (matchedBlock) {\n return traverseFields({\n doc: row as Record<string, unknown>,\n fields: matchedBlock.flattenedFields,\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 // Can ignore string blocks, as those were added in v3 and don't need to be migrated\n const matchedBlock = field.blocks.find(\n (block) => typeof block !== 'string' && block.slug === row.blockType,\n )\n\n if (matchedBlock) {\n return traverseFields({\n doc: row as Record<string, unknown>,\n fields: matchedBlock.flattenedFields,\n path: `${path ? `${path}.` : ''}${field.name}.${i}`,\n rows,\n })\n }\n })\n }\n\n break\n }\n\n case 'group':\n case 'tab': {\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.flattenedFields,\n locale,\n path: newPath,\n rows,\n })\n })\n } else {\n return traverseFields({\n doc: newDoc as Record<string, unknown>,\n fields: field.flattenedFields,\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 }\n })\n}\n"],"names":["traverseFields","doc","fields","locale","path","rows","forEach","field","type","rowData","name","localized","Object","entries","localeRows","Array","isArray","row","i","flattenedFields","matchedBlock","blocks","find","block","slug","blockType","newPath","newDoc","localeDoc","relationTo","hasMany","relationshipPath","matchedRelationshipsWithLocales","filter","length","localeRow","id","key","val","includes","matchedRelationship","matchesPath"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/postgres/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.ts"],"sourcesContent":["import type { FlattenedBlock, FlattenedField } from 'payload'\n\ntype Args = {\n doc: Record<string, unknown>\n fields: FlattenedField[]\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.flattenedFields,\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.flattenedFields,\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 // Can ignore string blocks, as those were added in v3 and don't need to be migrated\n const matchedBlock = field.blocks.find(\n (block): block is FlattenedBlock =>\n typeof block !== 'string' && block.slug === row.blockType,\n )\n\n if (matchedBlock) {\n return traverseFields({\n doc: row as Record<string, unknown>,\n fields: matchedBlock.flattenedFields,\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 // Can ignore string blocks, as those were added in v3 and don't need to be migrated\n const matchedBlock = field.blocks.find(\n (block): block is FlattenedBlock =>\n typeof block !== 'string' && block.slug === row.blockType,\n )\n\n if (matchedBlock) {\n return traverseFields({\n doc: row as Record<string, unknown>,\n fields: matchedBlock.flattenedFields,\n path: `${path ? `${path}.` : ''}${field.name}.${i}`,\n rows,\n })\n }\n })\n }\n\n break\n }\n\n case 'group':\n case 'tab': {\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.flattenedFields,\n locale,\n path: newPath,\n rows,\n })\n })\n } else {\n return traverseFields({\n doc: newDoc as Record<string, unknown>,\n fields: field.flattenedFields,\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 }\n })\n}\n"],"names":["traverseFields","doc","fields","locale","path","rows","forEach","field","type","rowData","name","localized","Object","entries","localeRows","Array","isArray","row","i","flattenedFields","matchedBlock","blocks","find","block","slug","blockType","newPath","newDoc","localeDoc","relationTo","hasMany","relationshipPath","matchedRelationshipsWithLocales","filter","length","localeRow","id","key","val","includes","matchedRelationship","matchesPath"],"mappings":"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"}
@@ -45,7 +45,7 @@ const runStatementGroup = async ({ adapter, db, debug, statements })=>{
45
45
  const generatedSQL = await generateMigration(drizzleJsonBefore, drizzleJsonAfter);
46
46
  if (!generatedSQL.length) {
47
47
  payload.logger.info(`No schema changes needed.`);
48
- process.exit(0);
48
+ return;
49
49
  }
50
50
  const sqlUpStatements = groupUpSQLStatements(generatedSQL);
51
51
  const db = await getTransaction(adapter, req);