@webiny/migrations 5.39.8 → 5.40.0-beta.6

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 (201) hide show
  1. package/ddb-es.d.ts +2 -1
  2. package/ddb-es.js +4 -1
  3. package/ddb-es.js.map +1 -1
  4. package/ddb.d.ts +2 -1
  5. package/ddb.js +6 -1
  6. package/ddb.js.map +1 -1
  7. package/migrations/5.35.0/001/FileSettingsMigration.js.map +1 -1
  8. package/migrations/5.35.0/001/ddb/FileDataMigration.js.map +1 -1
  9. package/migrations/5.35.0/001/ddb/index.js.map +1 -1
  10. package/migrations/5.35.0/001/ddb-es/FileDataMigration.js.map +1 -1
  11. package/migrations/5.35.0/001/ddb-es/index.js.map +1 -1
  12. package/migrations/5.35.0/001/entities/createFileEntity.js +1 -2
  13. package/migrations/5.35.0/001/entities/createFileEntity.js.map +1 -1
  14. package/migrations/5.35.0/001/entities/createLocaleEntity.js.map +1 -1
  15. package/migrations/5.35.0/001/entities/createSettingsEntity.js.map +1 -1
  16. package/migrations/5.35.0/001/entities/createTenantEntity.js.map +1 -1
  17. package/migrations/5.35.0/001/types.js.map +1 -1
  18. package/migrations/5.35.0/002/createLocaleEntity.js.map +1 -1
  19. package/migrations/5.35.0/002/createSettingsEntity.js.map +1 -1
  20. package/migrations/5.35.0/002/createTenantEntity.js.map +1 -1
  21. package/migrations/5.35.0/002/index.js.map +1 -1
  22. package/migrations/5.35.0/003/createTenantEntity.js.map +1 -1
  23. package/migrations/5.35.0/003/createUserEntity.js.map +1 -1
  24. package/migrations/5.35.0/003/index.js.map +1 -1
  25. package/migrations/5.35.0/004/createTenantEntity.js.map +1 -1
  26. package/migrations/5.35.0/004/index.js.map +1 -1
  27. package/migrations/5.35.0/005/createLocaleEntity.js.map +1 -1
  28. package/migrations/5.35.0/005/createModelEntity.js.map +1 -1
  29. package/migrations/5.35.0/005/createTenantEntity.js.map +1 -1
  30. package/migrations/5.35.0/005/index.js.map +1 -1
  31. package/migrations/5.35.0/005/types.js.map +1 -1
  32. package/migrations/5.35.0/006/constants.js +3 -6
  33. package/migrations/5.35.0/006/constants.js.map +1 -1
  34. package/migrations/5.35.0/006/ddb/PageDataMigration.js.map +1 -1
  35. package/migrations/5.35.0/006/ddb/index.js.map +1 -1
  36. package/migrations/5.35.0/006/ddb-es/PageDataMigration.js.map +1 -1
  37. package/migrations/5.35.0/006/ddb-es/index.js.map +1 -1
  38. package/migrations/5.35.0/006/entities/createEntryEntity.js.map +1 -1
  39. package/migrations/5.35.0/006/entities/createLocaleEntity.js.map +1 -1
  40. package/migrations/5.35.0/006/entities/createPageEntity.js.map +1 -1
  41. package/migrations/5.35.0/006/entities/createTenantEntity.js.map +1 -1
  42. package/migrations/5.35.0/006/types.js.map +1 -1
  43. package/migrations/5.35.0/006/utils/getCompressedData.js.map +1 -1
  44. package/migrations/5.35.0/006/utils/getLexicalContentText.js.map +1 -1
  45. package/migrations/5.35.0/006/utils/getSearchableContent.js.map +1 -1
  46. package/migrations/5.35.0/006/utils/processors/button.js.map +1 -1
  47. package/migrations/5.35.0/006/utils/processors/image.js.map +1 -1
  48. package/migrations/5.35.0/006/utils/processors/images.js.map +1 -1
  49. package/migrations/5.35.0/006/utils/processors/index.js +1 -2
  50. package/migrations/5.35.0/006/utils/processors/index.js.map +1 -1
  51. package/migrations/5.35.0/006/utils/processors/paragraph.js.map +1 -1
  52. package/migrations/5.36.0/001/constants.js +3 -6
  53. package/migrations/5.36.0/001/constants.js.map +1 -1
  54. package/migrations/5.36.0/001/ddb/FileDataMigration.js.map +1 -1
  55. package/migrations/5.36.0/001/ddb/index.js.map +1 -1
  56. package/migrations/5.36.0/001/ddb-es/FileDataMigration.js.map +1 -1
  57. package/migrations/5.36.0/001/ddb-es/index.js.map +1 -1
  58. package/migrations/5.36.0/001/entities/createEntryEntity.js.map +1 -1
  59. package/migrations/5.36.0/001/entities/createFileEntity.js.map +1 -1
  60. package/migrations/5.36.0/001/entities/createLocaleEntity.js.map +1 -1
  61. package/migrations/5.36.0/001/entities/createTenantEntity.js.map +1 -1
  62. package/migrations/5.36.0/001/types.js.map +1 -1
  63. package/migrations/5.36.0/001/utils/createMimeTag.js.map +1 -1
  64. package/migrations/5.36.0/001/utils/getCompressedData.js.map +1 -1
  65. package/migrations/5.37.0/001/TenantLinkDataMigration.js.map +1 -1
  66. package/migrations/5.37.0/001/entities/createTenantEntity.js.map +1 -1
  67. package/migrations/5.37.0/001/entities/createTenantLinkEntity.js.map +1 -1
  68. package/migrations/5.37.0/001/index.js.map +1 -1
  69. package/migrations/5.37.0/001/types.js.map +1 -1
  70. package/migrations/5.37.0/001/utils/isMigratedTenantLink.js.map +1 -1
  71. package/migrations/5.37.0/002/constants.js +1 -2
  72. package/migrations/5.37.0/002/constants.js.map +1 -1
  73. package/migrations/5.37.0/002/ddb/index.js.map +1 -1
  74. package/migrations/5.37.0/002/ddb-es/index.js.map +1 -1
  75. package/migrations/5.37.0/002/entities/createEntryEntity.js.map +1 -1
  76. package/migrations/5.37.0/002/entities/createLocaleEntity.js.map +1 -1
  77. package/migrations/5.37.0/002/entities/createTenantEntity.js.map +1 -1
  78. package/migrations/5.37.0/002/types.js.map +1 -1
  79. package/migrations/5.37.0/002/utils/getCompressedData.js.map +1 -1
  80. package/migrations/5.37.0/002/utils/getDecompressedData.js.map +1 -1
  81. package/migrations/5.37.0/003/constants.js +3 -6
  82. package/migrations/5.37.0/003/constants.js.map +1 -1
  83. package/migrations/5.37.0/003/ddb/AcoFolderMigration.js.map +1 -1
  84. package/migrations/5.37.0/003/ddb/index.js.map +1 -1
  85. package/migrations/5.37.0/003/ddb-es/AcoFolderMigration.js.map +1 -1
  86. package/migrations/5.37.0/003/ddb-es/index.js.map +1 -1
  87. package/migrations/5.37.0/003/ddb-es/latestElasticsearchData.js.map +1 -1
  88. package/migrations/5.37.0/003/entities/createEntryEntity.js.map +1 -1
  89. package/migrations/5.37.0/003/entities/createLocaleEntity.js.map +1 -1
  90. package/migrations/5.37.0/003/entities/createTenantEntity.js.map +1 -1
  91. package/migrations/5.37.0/003/types.js.map +1 -1
  92. package/migrations/5.37.0/003/utils/getCompressedData.js.map +1 -1
  93. package/migrations/5.37.0/003/utils/getDecompressedData.js.map +1 -1
  94. package/migrations/5.37.0/004/constants.js +7 -14
  95. package/migrations/5.37.0/004/constants.js.map +1 -1
  96. package/migrations/5.37.0/004/ddb/PageDataMigration.js.map +1 -1
  97. package/migrations/5.37.0/004/ddb/index.js.map +1 -1
  98. package/migrations/5.37.0/004/ddb-es/PageDataMigration.js.map +1 -1
  99. package/migrations/5.37.0/004/ddb-es/index.js.map +1 -1
  100. package/migrations/5.37.0/004/entities/createEntryEntity.js.map +1 -1
  101. package/migrations/5.37.0/004/entities/createLocaleEntity.js.map +1 -1
  102. package/migrations/5.37.0/004/entities/createPageEntity.js.map +1 -1
  103. package/migrations/5.37.0/004/entities/createTenantEntity.js.map +1 -1
  104. package/migrations/5.37.0/004/types.js.map +1 -1
  105. package/migrations/5.37.0/004/utils/getCompressedData.js.map +1 -1
  106. package/migrations/5.37.0/005/constants.js +3 -6
  107. package/migrations/5.37.0/005/constants.js.map +1 -1
  108. package/migrations/5.37.0/005/ddb/index.js.map +1 -1
  109. package/migrations/5.37.0/005/ddb-es/index.js.map +1 -1
  110. package/migrations/5.37.0/005/entities/createEntryEntity.js.map +1 -1
  111. package/migrations/5.37.0/005/entities/createFileEntity.js.map +1 -1
  112. package/migrations/5.37.0/005/entities/createLocaleEntity.js.map +1 -1
  113. package/migrations/5.37.0/005/entities/createTenantEntity.js.map +1 -1
  114. package/migrations/5.37.0/005/entities/createTenantLinkEntity.js.map +1 -1
  115. package/migrations/5.37.0/005/types.js.map +1 -1
  116. package/migrations/5.38.0/001/ddb/index.js.map +1 -1
  117. package/migrations/5.38.0/001/ddb-es/index.js.map +1 -1
  118. package/migrations/5.38.0/001/entities/createFormEntity.js.map +1 -1
  119. package/migrations/5.38.0/001/types.js.map +1 -1
  120. package/migrations/5.38.0/002/ddb/index.js.map +1 -1
  121. package/migrations/5.38.0/002/ddb-es/index.js.map +1 -1
  122. package/migrations/5.38.0/002/entities/createFormEntity.js.map +1 -1
  123. package/migrations/5.38.0/002/entities/createFormSubmissionDdbEsEntity.js.map +1 -1
  124. package/migrations/5.38.0/002/entities/createFormSubmissionEntity.js.map +1 -1
  125. package/migrations/5.38.0/002/types.js.map +1 -1
  126. package/migrations/5.38.0/003/ddb/compressContent.js.map +1 -1
  127. package/migrations/5.38.0/003/ddb/index.js.map +1 -1
  128. package/migrations/5.38.0/003/entities/createPageBlockEntity.js.map +1 -1
  129. package/migrations/5.38.0/003/types.js.map +1 -1
  130. package/migrations/5.39.0/001/ddb/index.js.map +1 -1
  131. package/migrations/5.39.0/001/ddb-es/index.js.map +1 -1
  132. package/migrations/5.39.0/001/entities/createEntryEntity.js +24 -0
  133. package/migrations/5.39.0/001/entities/createEntryEntity.js.map +1 -1
  134. package/migrations/5.39.0/001/types.js.map +1 -1
  135. package/migrations/5.39.0/001/utils/assignNewMetaFields.js.map +1 -1
  136. package/migrations/5.39.0/001/utils/ensureAllNonNullableValues.js.map +1 -1
  137. package/migrations/5.39.0/001/utils/fixTypeFieldValue.js.map +1 -1
  138. package/migrations/5.39.0/001/utils/getCompressedData.js.map +1 -1
  139. package/migrations/5.39.0/001/utils/getDecompressedData.js.map +1 -1
  140. package/migrations/5.39.0/001/utils/getFallbackIdentity.js.map +1 -1
  141. package/migrations/5.39.0/001/utils/getFirstLastPublishedOn.js.map +1 -1
  142. package/migrations/5.39.0/001/utils/getNonNullableFieldsWithMissingValues.d.ts +1 -1
  143. package/migrations/5.39.0/001/utils/getNonNullableFieldsWithMissingValues.js.map +1 -1
  144. package/migrations/5.39.0/001/utils/getOldestRevisionCreatedOn.js.map +1 -1
  145. package/migrations/5.39.0/001/utils/hasAllNonNullableValues.js.map +1 -1
  146. package/migrations/5.39.0/001/utils/hasValidTypeFieldValue.js.map +1 -1
  147. package/migrations/5.39.0/001/utils/isMigratedEntry.js.map +1 -1
  148. package/migrations/5.39.0/002/ddb/FileManager_5_39_0_002.js.map +1 -1
  149. package/migrations/5.39.0/002/ddb/index.js.map +1 -1
  150. package/migrations/5.39.0/002/ddb-es/FileManager_5_39_0_002.js.map +1 -1
  151. package/migrations/5.39.0/002/ddb-es/index.js.map +1 -1
  152. package/migrations/5.39.0/002/utils/FileMetadata.js.map +1 -1
  153. package/migrations/5.39.0/002/utils/createFileEntity.js.map +1 -1
  154. package/migrations/5.39.0/002/utils/createLocaleEntity.js.map +1 -1
  155. package/migrations/5.39.0/002/utils/createTenantEntity.js.map +1 -1
  156. package/migrations/5.39.2/001/ddb-es/index.js.map +1 -1
  157. package/migrations/5.39.6/001/ddb-es/MetaFieldsMigration.js.map +1 -1
  158. package/migrations/5.39.6/001/ddb-es/SegmentProcessor.js.map +1 -1
  159. package/migrations/5.39.6/001/ddb-es/bin.js.map +1 -1
  160. package/migrations/5.39.6/001/ddb-es/createMetaFieldsDataMigrationDeploymentHook.js.map +1 -1
  161. package/migrations/5.39.6/001/ddb-es/index.js.map +1 -1
  162. package/migrations/5.39.6/001/ddb-es/utils.js +2 -4
  163. package/migrations/5.39.6/001/ddb-es/utils.js.map +1 -1
  164. package/migrations/5.39.6/001/ddb-es/worker.js.map +1 -1
  165. package/migrations/5.40.0/001/ddb/compression.d.ts +15 -0
  166. package/migrations/5.40.0/001/ddb/compression.js +42 -0
  167. package/migrations/5.40.0/001/ddb/compression.js.map +1 -0
  168. package/migrations/5.40.0/001/ddb/createBlockEntity.d.ts +42 -0
  169. package/migrations/5.40.0/001/ddb/createBlockEntity.js +54 -0
  170. package/migrations/5.40.0/001/ddb/createBlockEntity.js.map +1 -0
  171. package/migrations/5.40.0/001/ddb/index.d.ts +13 -0
  172. package/migrations/5.40.0/001/ddb/index.js +155 -0
  173. package/migrations/5.40.0/001/ddb/index.js.map +1 -0
  174. package/migrations/5.40.0/001/ddb/types.d.ts +20 -0
  175. package/migrations/5.40.0/001/ddb/types.js +7 -0
  176. package/migrations/5.40.0/001/ddb/types.js.map +1 -0
  177. package/package.json +17 -17
  178. package/utils/createEntity.js.map +1 -1
  179. package/utils/createLocaleEntity.js.map +1 -1
  180. package/utils/createTenantEntity.js.map +1 -1
  181. package/utils/dynamoDb.js.map +1 -1
  182. package/utils/elasticsearch/disableEsIndexing.js.map +1 -1
  183. package/utils/elasticsearch/esCreateIndex.js.map +1 -1
  184. package/utils/elasticsearch/esFindOne.js.map +1 -1
  185. package/utils/elasticsearch/esGetIndexExist.js.map +1 -1
  186. package/utils/elasticsearch/esGetIndexName.js.map +1 -1
  187. package/utils/elasticsearch/esGetIndexSettings.js.map +1 -1
  188. package/utils/elasticsearch/esListIndexes.js.map +1 -1
  189. package/utils/elasticsearch/esPutIndexSettings.js.map +1 -1
  190. package/utils/elasticsearch/esQueryAll.js.map +1 -1
  191. package/utils/elasticsearch/esQueryAllWithCallback.js.map +1 -1
  192. package/utils/elasticsearch/fetchOriginalEsSettings.js.map +1 -1
  193. package/utils/elasticsearch/index.js.map +1 -1
  194. package/utils/elasticsearch/plugins/base.js +1 -2
  195. package/utils/elasticsearch/plugins/base.js.map +1 -1
  196. package/utils/elasticsearch/plugins/index.js.map +1 -1
  197. package/utils/elasticsearch/plugins/japanese.js +1 -2
  198. package/utils/elasticsearch/plugins/japanese.js.map +1 -1
  199. package/utils/elasticsearch/restoreOriginalEsSettings.js.map +1 -1
  200. package/utils/forEachTenantLocale.js.map +1 -1
  201. package/utils/index.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_ioc","require","_dataMigration","_TenantLinkDataMigration","TenantLinkRecords_5_37_0_001","constructor","table","migrations","TenantLinkRecords_5_37_0_001_FileData","getId","getDescription","shouldExecute","context","migration","childLogger","getChildLogger","logger","childContext","execute","exports","makeInjectable","inject","PrimaryDynamoTableSymbol"],"sources":["index.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { makeInjectable, inject } from \"@webiny/ioc\";\nimport {\n DataMigration,\n DataMigrationContext,\n getChildLogger,\n PrimaryDynamoTableSymbol\n} from \"@webiny/data-migration\";\nimport { TenantLinkRecords_5_37_0_001_FileData } from \"./TenantLinkDataMigration\";\n\nexport class TenantLinkRecords_5_37_0_001 implements DataMigration {\n private migrations: DataMigration[];\n\n public constructor(table: Table<string, string, string>) {\n this.migrations = [new TenantLinkRecords_5_37_0_001_FileData(table)];\n }\n\n public getId() {\n return \"5.37.0-001\";\n }\n\n public getDescription() {\n return \"Migrate Tenant Links Data\";\n }\n\n async shouldExecute(context: DataMigrationContext): Promise<boolean> {\n for (const migration of this.migrations) {\n const childLogger = getChildLogger(context.logger, migration);\n const childContext = { ...context, logger: childLogger };\n if (await migration.shouldExecute(childContext)) {\n return true;\n }\n }\n return false;\n }\n\n async execute(context: DataMigrationContext): Promise<void> {\n for (const migration of this.migrations) {\n const childLogger = getChildLogger(context.logger, migration);\n const childContext = { ...context, logger: childLogger };\n if (await migration.shouldExecute(childContext)) {\n await migration.execute(childContext);\n }\n }\n }\n}\n\nmakeInjectable(TenantLinkRecords_5_37_0_001, [inject(PrimaryDynamoTableSymbol)]);\n"],"mappings":";;;;;;AACA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAMA,IAAAE,wBAAA,GAAAF,OAAA;AAEO,MAAMG,4BAA4B,CAA0B;EAGxDC,WAAWA,CAACC,KAAoC,EAAE;IACrD,IAAI,CAACC,UAAU,GAAG,CAAC,IAAIC,8DAAqC,CAACF,KAAK,CAAC,CAAC;EACxE;EAEOG,KAAKA,CAAA,EAAG;IACX,OAAO,YAAY;EACvB;EAEOC,cAAcA,CAAA,EAAG;IACpB,OAAO,2BAA2B;EACtC;EAEA,MAAMC,aAAaA,CAACC,OAA6B,EAAoB;IACjE,KAAK,MAAMC,SAAS,IAAI,IAAI,CAACN,UAAU,EAAE;MACrC,MAAMO,WAAW,GAAG,IAAAC,6BAAc,EAACH,OAAO,CAACI,MAAM,EAAEH,SAAS,CAAC;MAC7D,MAAMI,YAAY,GAAG;QAAE,GAAGL,OAAO;QAAEI,MAAM,EAAEF;MAAY,CAAC;MACxD,IAAI,MAAMD,SAAS,CAACF,aAAa,CAACM,YAAY,CAAC,EAAE;QAC7C,OAAO,IAAI;MACf;IACJ;IACA,OAAO,KAAK;EAChB;EAEA,MAAMC,OAAOA,CAACN,OAA6B,EAAiB;IACxD,KAAK,MAAMC,SAAS,IAAI,IAAI,CAACN,UAAU,EAAE;MACrC,MAAMO,WAAW,GAAG,IAAAC,6BAAc,EAACH,OAAO,CAACI,MAAM,EAAEH,SAAS,CAAC;MAC7D,MAAMI,YAAY,GAAG;QAAE,GAAGL,OAAO;QAAEI,MAAM,EAAEF;MAAY,CAAC;MACxD,IAAI,MAAMD,SAAS,CAACF,aAAa,CAACM,YAAY,CAAC,EAAE;QAC7C,MAAMJ,SAAS,CAACK,OAAO,CAACD,YAAY,CAAC;MACzC;IACJ;EACJ;AACJ;AAACE,OAAA,CAAAf,4BAAA,GAAAA,4BAAA;AAED,IAAAgB,mBAAc,EAAChB,4BAA4B,EAAE,CAAC,IAAAiB,WAAM,EAACC,uCAAwB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"names":["_ioc","require","_dataMigration","_TenantLinkDataMigration","TenantLinkRecords_5_37_0_001","constructor","table","migrations","TenantLinkRecords_5_37_0_001_FileData","getId","getDescription","shouldExecute","context","migration","childLogger","getChildLogger","logger","childContext","execute","exports","makeInjectable","inject","PrimaryDynamoTableSymbol"],"sources":["index.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { makeInjectable, inject } from \"@webiny/ioc\";\nimport {\n DataMigration,\n DataMigrationContext,\n getChildLogger,\n PrimaryDynamoTableSymbol\n} from \"@webiny/data-migration\";\nimport { TenantLinkRecords_5_37_0_001_FileData } from \"./TenantLinkDataMigration\";\n\nexport class TenantLinkRecords_5_37_0_001 implements DataMigration {\n private migrations: DataMigration[];\n\n public constructor(table: Table<string, string, string>) {\n this.migrations = [new TenantLinkRecords_5_37_0_001_FileData(table)];\n }\n\n public getId() {\n return \"5.37.0-001\";\n }\n\n public getDescription() {\n return \"Migrate Tenant Links Data\";\n }\n\n async shouldExecute(context: DataMigrationContext): Promise<boolean> {\n for (const migration of this.migrations) {\n const childLogger = getChildLogger(context.logger, migration);\n const childContext = { ...context, logger: childLogger };\n if (await migration.shouldExecute(childContext)) {\n return true;\n }\n }\n return false;\n }\n\n async execute(context: DataMigrationContext): Promise<void> {\n for (const migration of this.migrations) {\n const childLogger = getChildLogger(context.logger, migration);\n const childContext = { ...context, logger: childLogger };\n if (await migration.shouldExecute(childContext)) {\n await migration.execute(childContext);\n }\n }\n }\n}\n\nmakeInjectable(TenantLinkRecords_5_37_0_001, [inject(PrimaryDynamoTableSymbol)]);\n"],"mappings":";;;;;;AACA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAMA,IAAAE,wBAAA,GAAAF,OAAA;AAEO,MAAMG,4BAA4B,CAA0B;EAGxDC,WAAWA,CAACC,KAAoC,EAAE;IACrD,IAAI,CAACC,UAAU,GAAG,CAAC,IAAIC,8DAAqC,CAACF,KAAK,CAAC,CAAC;EACxE;EAEOG,KAAKA,CAAA,EAAG;IACX,OAAO,YAAY;EACvB;EAEOC,cAAcA,CAAA,EAAG;IACpB,OAAO,2BAA2B;EACtC;EAEA,MAAMC,aAAaA,CAACC,OAA6B,EAAoB;IACjE,KAAK,MAAMC,SAAS,IAAI,IAAI,CAACN,UAAU,EAAE;MACrC,MAAMO,WAAW,GAAG,IAAAC,6BAAc,EAACH,OAAO,CAACI,MAAM,EAAEH,SAAS,CAAC;MAC7D,MAAMI,YAAY,GAAG;QAAE,GAAGL,OAAO;QAAEI,MAAM,EAAEF;MAAY,CAAC;MACxD,IAAI,MAAMD,SAAS,CAACF,aAAa,CAACM,YAAY,CAAC,EAAE;QAC7C,OAAO,IAAI;MACf;IACJ;IACA,OAAO,KAAK;EAChB;EAEA,MAAMC,OAAOA,CAACN,OAA6B,EAAiB;IACxD,KAAK,MAAMC,SAAS,IAAI,IAAI,CAACN,UAAU,EAAE;MACrC,MAAMO,WAAW,GAAG,IAAAC,6BAAc,EAACH,OAAO,CAACI,MAAM,EAAEH,SAAS,CAAC;MAC7D,MAAMI,YAAY,GAAG;QAAE,GAAGL,OAAO;QAAEI,MAAM,EAAEF;MAAY,CAAC;MACxD,IAAI,MAAMD,SAAS,CAACF,aAAa,CAACM,YAAY,CAAC,EAAE;QAC7C,MAAMJ,SAAS,CAACK,OAAO,CAACD,YAAY,CAAC;MACzC;IACJ;EACJ;AACJ;AAACE,OAAA,CAAAf,4BAAA,GAAAA,4BAAA;AAED,IAAAgB,mBAAc,EAAChB,4BAA4B,EAAE,CAAC,IAAAiB,WAAM,EAACC,uCAAwB,CAAC,CAAC,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export interface Tenant {\n data: {\n id: string;\n name: string;\n };\n}\n\nexport type Permissions = Array<Record<string, any>>;\n\nexport interface TenantLink {\n PK: string;\n SK: string;\n GSI1_PK: string;\n GSI1_SK: string;\n identity: string;\n tenant: string;\n type: string;\n data: {\n // Old properties.\n group: string;\n permissions: Permissions;\n\n // New properties.\n\n // Groups is an array of objects with `id` and `permissions` properties.\n // Note that, despite the property accepting an array, we only allow a single group to be\n // assigned to a tenant link.\n groups: Array<{ id: string; permissions: Permissions }>;\n\n // In the migration process, we set `teams` property to an empty array.\n teams: [];\n };\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export interface Tenant {\n data: {\n id: string;\n name: string;\n };\n}\n\nexport type Permissions = Array<Record<string, any>>;\n\nexport interface TenantLink {\n PK: string;\n SK: string;\n GSI1_PK: string;\n GSI1_SK: string;\n identity: string;\n tenant: string;\n type: string;\n data: {\n // Old properties.\n group: string;\n permissions: Permissions;\n\n // New properties.\n\n // Groups is an array of objects with `id` and `permissions` properties.\n // Note that, despite the property accepting an array, we only allow a single group to be\n // assigned to a tenant link.\n groups: Array<{ id: string; permissions: Permissions }>;\n\n // In the migration process, we set `teams` property to an empty array.\n teams: [];\n };\n}\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["isMigratedTenantLink","tenantLink","type","exports"],"sources":["isMigratedTenantLink.ts"],"sourcesContent":["import { TenantLink } from \"../types\";\n\nexport const isMigratedTenantLink = (tenantLink: TenantLink): boolean => {\n return tenantLink.type === \"permissions\";\n};\n"],"mappings":";;;;;;AAEO,MAAMA,oBAAoB,GAAIC,UAAsB,IAAc;EACrE,OAAOA,UAAU,CAACC,IAAI,KAAK,aAAa;AAC5C,CAAC;AAACC,OAAA,CAAAH,oBAAA,GAAAA,oBAAA"}
1
+ {"version":3,"names":["isMigratedTenantLink","tenantLink","type","exports"],"sources":["isMigratedTenantLink.ts"],"sourcesContent":["import { TenantLink } from \"../types\";\n\nexport const isMigratedTenantLink = (tenantLink: TenantLink): boolean => {\n return tenantLink.type === \"permissions\";\n};\n"],"mappings":";;;;;;AAEO,MAAMA,oBAAoB,GAAIC,UAAsB,IAAc;EACrE,OAAOA,UAAU,CAACC,IAAI,KAAK,aAAa;AAC5C,CAAC;AAACC,OAAA,CAAAH,oBAAA,GAAAA,oBAAA","ignoreList":[]}
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.ROOT_FOLDER = void 0;
7
- const ROOT_FOLDER = "root";
8
- exports.ROOT_FOLDER = ROOT_FOLDER;
7
+ const ROOT_FOLDER = exports.ROOT_FOLDER = "root";
9
8
 
10
9
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ROOT_FOLDER","exports"],"sources":["constants.ts"],"sourcesContent":["export const ROOT_FOLDER = \"root\";\n"],"mappings":";;;;;;AAAO,MAAMA,WAAW,GAAG,MAAM;AAACC,OAAA,CAAAD,WAAA,GAAAA,WAAA"}
1
+ {"version":3,"names":["ROOT_FOLDER","exports"],"sources":["constants.ts"],"sourcesContent":["export const ROOT_FOLDER = \"root\";\n"],"mappings":";;;;;;AAAO,MAAMA,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,MAAM","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_dataMigration","require","_createEntryEntity","_createLocaleEntity","_createTenantEntity","_utils","_ioc","_utils2","CmsEntriesRootFolder_5_37_0_002","constructor","table","entryEntity","createDdbEntryEntity","localeEntity","createLocaleEntity","tenantEntity","createTenantEntity","getId","getDescription","shouldExecute","logger","result","scan","entity","options","index","filters","attr","beginsWith","limit","items","length","info","error","Error","item","location","folderId","execute","context","migrationStatus","checkpoint","lastEvaluatedKey","usingKey","JSON","stringify","debug","ddbScanWithCallback","startKey","undefined","push","putBatch","batchWriteAll","trace","executeWithRetry","onFailedAttempt","attemptNumber","message","PK","runningOutOfTime","createCheckpointAndExit","createCheckpoint","exports","makeInjectable","inject","PrimaryDynamoTableSymbol"],"sources":["index.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport {\n DataMigration,\n DataMigrationContext,\n PrimaryDynamoTableSymbol\n} from \"@webiny/data-migration\";\nimport { createDdbEntryEntity } from \"../entities/createEntryEntity\";\nimport { createLocaleEntity } from \"../entities/createLocaleEntity\";\nimport { createTenantEntity } from \"../entities/createTenantEntity\";\nimport { batchWriteAll, BatchWriteItem, ddbScanWithCallback, scan } from \"~/utils\";\nimport { CmsEntry } from \"../types\";\nimport { inject, makeInjectable } from \"@webiny/ioc\";\nimport { executeWithRetry } from \"@webiny/utils\";\n\ninterface LastEvaluatedKey {\n PK: string;\n SK: string;\n GSI1_PK: string;\n GSI1_SK: string;\n}\n\ninterface CmsEntriesRootFolderDataMigrationCheckpoint {\n lastEvaluatedKey?: LastEvaluatedKey | boolean;\n}\n\nexport class CmsEntriesRootFolder_5_37_0_002\n implements DataMigration<CmsEntriesRootFolderDataMigrationCheckpoint>\n{\n private readonly entryEntity: ReturnType<typeof createDdbEntryEntity>;\n private readonly localeEntity: ReturnType<typeof createLocaleEntity>;\n private readonly tenantEntity: ReturnType<typeof createTenantEntity>;\n\n constructor(table: Table<string, string, string>) {\n this.entryEntity = createDdbEntryEntity(table);\n this.localeEntity = createLocaleEntity(table);\n this.tenantEntity = createTenantEntity(table);\n }\n\n getId() {\n return \"5.37.0-002\";\n }\n\n getDescription() {\n return \"Add default folderId to all CMS records.\";\n }\n\n async shouldExecute({ logger }: DataMigrationContext): Promise<boolean> {\n /**\n * We will go through a larger amount of the entries, to determine if they need to be updated.\n */\n const result = await scan<CmsEntry>({\n entity: this.entryEntity,\n options: {\n index: \"GSI1\",\n filters: [\n {\n attr: \"TYPE\",\n beginsWith: \"cms.entry\"\n }\n ],\n limit: 100\n }\n });\n\n if (result.items.length === 0) {\n logger.info(`No CMS entries found in the system; skipping migration.`);\n return false;\n } else if (result.error) {\n logger.error(result.error);\n throw new Error(result.error);\n }\n\n for (const item of result.items) {\n /**\n * If no location.folderId was set, we need to push the upgrade.\n */\n if (!item.location?.folderId) {\n return true;\n }\n }\n logger.info(`CMS entries already upgraded. skipping...`);\n return false;\n }\n\n async execute({\n logger,\n ...context\n }: DataMigrationContext<CmsEntriesRootFolderDataMigrationCheckpoint>): Promise<void> {\n const migrationStatus = context.checkpoint || {};\n\n if (migrationStatus.lastEvaluatedKey === true) {\n logger.info(`Migration completed, no need to start again.`);\n return;\n }\n\n let usingKey = \"\";\n if (migrationStatus?.lastEvaluatedKey) {\n usingKey = JSON.stringify(migrationStatus.lastEvaluatedKey);\n }\n logger.debug(`Scanning DynamoDB table... ${usingKey}`);\n await ddbScanWithCallback<CmsEntry>(\n {\n entity: this.entryEntity,\n options: {\n index: \"GSI1\",\n filters: [\n {\n attr: \"TYPE\",\n beginsWith: \"cms.entry\"\n }\n ],\n startKey: migrationStatus.lastEvaluatedKey || undefined,\n limit: 1000\n }\n },\n async result => {\n logger.debug(`Processing ${result.items.length} items...`);\n const items: BatchWriteItem[] = [];\n for (const item of result.items) {\n if (!!item.location?.folderId) {\n continue;\n }\n items.push(\n this.entryEntity.putBatch({\n ...item,\n location: {\n ...item.location,\n folderId: \"root\"\n }\n })\n );\n }\n\n const execute = () => {\n return batchWriteAll({ table: this.entryEntity.table, items });\n };\n\n logger.trace(\"Storing the DynamoDB records...\");\n await executeWithRetry(execute, {\n onFailedAttempt: error => {\n logger.error(`\"batchWriteAll\" attempt #${error.attemptNumber} failed.`);\n logger.error(error.message);\n }\n });\n logger.trace(\"...stored.\");\n\n // Update checkpoint after every batch\n migrationStatus.lastEvaluatedKey = result.lastEvaluatedKey?.PK\n ? (result.lastEvaluatedKey as unknown as LastEvaluatedKey)\n : true;\n\n // Check if we should store checkpoint and exit.\n if (context.runningOutOfTime()) {\n await context.createCheckpointAndExit(migrationStatus);\n } else {\n await context.createCheckpoint(migrationStatus);\n }\n }\n );\n\n migrationStatus.lastEvaluatedKey = true;\n context.createCheckpoint(migrationStatus);\n }\n}\n\nmakeInjectable(CmsEntriesRootFolder_5_37_0_002, [inject(PrimaryDynamoTableSymbol)]);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_dataMigration","require","_createEntryEntity","_createLocaleEntity","_createTenantEntity","_utils","_ioc","_utils2","CmsEntriesRootFolder_5_37_0_002","constructor","table","entryEntity","createDdbEntryEntity","localeEntity","createLocaleEntity","tenantEntity","createTenantEntity","getId","getDescription","shouldExecute","logger","result","scan","entity","options","index","filters","attr","beginsWith","limit","items","length","info","error","Error","item","location","folderId","execute","context","migrationStatus","checkpoint","lastEvaluatedKey","usingKey","JSON","stringify","debug","ddbScanWithCallback","startKey","undefined","push","putBatch","batchWriteAll","trace","executeWithRetry","onFailedAttempt","attemptNumber","message","PK","runningOutOfTime","createCheckpointAndExit","createCheckpoint","exports","makeInjectable","inject","PrimaryDynamoTableSymbol"],"sources":["index.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport {\n DataMigration,\n DataMigrationContext,\n PrimaryDynamoTableSymbol\n} from \"@webiny/data-migration\";\nimport { createDdbEntryEntity } from \"../entities/createEntryEntity\";\nimport { createLocaleEntity } from \"../entities/createLocaleEntity\";\nimport { createTenantEntity } from \"../entities/createTenantEntity\";\nimport { batchWriteAll, BatchWriteItem, ddbScanWithCallback, scan } from \"~/utils\";\nimport { CmsEntry } from \"../types\";\nimport { inject, makeInjectable } from \"@webiny/ioc\";\nimport { executeWithRetry } from \"@webiny/utils\";\n\ninterface LastEvaluatedKey {\n PK: string;\n SK: string;\n GSI1_PK: string;\n GSI1_SK: string;\n}\n\ninterface CmsEntriesRootFolderDataMigrationCheckpoint {\n lastEvaluatedKey?: LastEvaluatedKey | boolean;\n}\n\nexport class CmsEntriesRootFolder_5_37_0_002\n implements DataMigration<CmsEntriesRootFolderDataMigrationCheckpoint>\n{\n private readonly entryEntity: ReturnType<typeof createDdbEntryEntity>;\n private readonly localeEntity: ReturnType<typeof createLocaleEntity>;\n private readonly tenantEntity: ReturnType<typeof createTenantEntity>;\n\n constructor(table: Table<string, string, string>) {\n this.entryEntity = createDdbEntryEntity(table);\n this.localeEntity = createLocaleEntity(table);\n this.tenantEntity = createTenantEntity(table);\n }\n\n getId() {\n return \"5.37.0-002\";\n }\n\n getDescription() {\n return \"Add default folderId to all CMS records.\";\n }\n\n async shouldExecute({ logger }: DataMigrationContext): Promise<boolean> {\n /**\n * We will go through a larger amount of the entries, to determine if they need to be updated.\n */\n const result = await scan<CmsEntry>({\n entity: this.entryEntity,\n options: {\n index: \"GSI1\",\n filters: [\n {\n attr: \"TYPE\",\n beginsWith: \"cms.entry\"\n }\n ],\n limit: 100\n }\n });\n\n if (result.items.length === 0) {\n logger.info(`No CMS entries found in the system; skipping migration.`);\n return false;\n } else if (result.error) {\n logger.error(result.error);\n throw new Error(result.error);\n }\n\n for (const item of result.items) {\n /**\n * If no location.folderId was set, we need to push the upgrade.\n */\n if (!item.location?.folderId) {\n return true;\n }\n }\n logger.info(`CMS entries already upgraded. skipping...`);\n return false;\n }\n\n async execute({\n logger,\n ...context\n }: DataMigrationContext<CmsEntriesRootFolderDataMigrationCheckpoint>): Promise<void> {\n const migrationStatus = context.checkpoint || {};\n\n if (migrationStatus.lastEvaluatedKey === true) {\n logger.info(`Migration completed, no need to start again.`);\n return;\n }\n\n let usingKey = \"\";\n if (migrationStatus?.lastEvaluatedKey) {\n usingKey = JSON.stringify(migrationStatus.lastEvaluatedKey);\n }\n logger.debug(`Scanning DynamoDB table... ${usingKey}`);\n await ddbScanWithCallback<CmsEntry>(\n {\n entity: this.entryEntity,\n options: {\n index: \"GSI1\",\n filters: [\n {\n attr: \"TYPE\",\n beginsWith: \"cms.entry\"\n }\n ],\n startKey: migrationStatus.lastEvaluatedKey || undefined,\n limit: 1000\n }\n },\n async result => {\n logger.debug(`Processing ${result.items.length} items...`);\n const items: BatchWriteItem[] = [];\n for (const item of result.items) {\n if (!!item.location?.folderId) {\n continue;\n }\n items.push(\n this.entryEntity.putBatch({\n ...item,\n location: {\n ...item.location,\n folderId: \"root\"\n }\n })\n );\n }\n\n const execute = () => {\n return batchWriteAll({ table: this.entryEntity.table, items });\n };\n\n logger.trace(\"Storing the DynamoDB records...\");\n await executeWithRetry(execute, {\n onFailedAttempt: error => {\n logger.error(`\"batchWriteAll\" attempt #${error.attemptNumber} failed.`);\n logger.error(error.message);\n }\n });\n logger.trace(\"...stored.\");\n\n // Update checkpoint after every batch\n migrationStatus.lastEvaluatedKey = result.lastEvaluatedKey?.PK\n ? (result.lastEvaluatedKey as unknown as LastEvaluatedKey)\n : true;\n\n // Check if we should store checkpoint and exit.\n if (context.runningOutOfTime()) {\n await context.createCheckpointAndExit(migrationStatus);\n } else {\n await context.createCheckpoint(migrationStatus);\n }\n }\n );\n\n migrationStatus.lastEvaluatedKey = true;\n context.createCheckpoint(migrationStatus);\n }\n}\n\nmakeInjectable(CmsEntriesRootFolder_5_37_0_002, [inject(PrimaryDynamoTableSymbol)]);\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_dataMigration","require","_createEntryEntity","_createLocaleEntity","_createTenantEntity","_dbDynamodb","_utils","_utils2","_getDecompressedData","_getCompressedData","_ioc","CmsEntriesRootFolder_5_37_0_002","constructor","table","esTable","elasticsearchClient","ddbEntryEntity","createDdbEntryEntity","ddbEsEntryEntity","createDdbEsEntryEntity","localeEntity","createLocaleEntity","tenantEntity","createTenantEntity","getId","getDescription","shouldExecute","logger","result","scan","entity","options","filters","attr","contains","limit","items","length","info","error","Error","item","data","getDecompressedData","location","folderId","execute","context","migrationStatus","checkpoint","lastEvaluatedKey","restoreOriginalElasticsearchSettings","usingKey","JSON","stringify","debug","ddbScanWithCallback","beginsWith","startKey","undefined","ddbItems","ddbEsItems","ddbEsGetItems","index","esGetIndexName","tenant","locale","type","modelId","isHeadlessCmsModel","indexes","settings","fetchOriginalElasticsearchSettings","disableElasticsearchIndexing","push","putBatch","entryId","getBatch","PK","SK","status","locked","esRecords","batchReadAll","Object","values","esRecord","decompressedData","trace","forceExecute","compressedData","getCompressedData","modified","Date","toISOString","batchWriteAll","executeDdbEs","executeWithRetry","onFailedAttempt","attemptNumber","message","runningOutOfTime","createCheckpointAndExit","createCheckpoint","params","esGetIndexSettings","fields","number_of_replicas","refresh_interval","ex","code","esPutIndexSettings","exports","makeInjectable","inject","PrimaryDynamoTableSymbol","ElasticsearchDynamoTableSymbol","ElasticsearchClientSymbol"],"sources":["index.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport {\n DataMigration,\n DataMigrationContext,\n ElasticsearchClientSymbol,\n ElasticsearchDynamoTableSymbol,\n Logger,\n PrimaryDynamoTableSymbol\n} from \"@webiny/data-migration\";\nimport { createDdbEntryEntity, createDdbEsEntryEntity } from \"../entities/createEntryEntity\";\nimport { createLocaleEntity } from \"../entities/createLocaleEntity\";\nimport { createTenantEntity } from \"../entities/createTenantEntity\";\nimport {\n batchReadAll,\n BatchReadItem,\n batchWriteAll,\n BatchWriteItem,\n scan\n} from \"@webiny/db-dynamodb\";\nimport { CmsEntry } from \"../types\";\nimport { Client } from \"@elastic/elasticsearch\";\nimport {\n ddbScanWithCallback,\n esGetIndexName,\n esGetIndexSettings,\n esPutIndexSettings\n} from \"~/utils\";\nimport { executeWithRetry } from \"@webiny/utils\";\nimport { getDecompressedData } from \"~/migrations/5.37.0/002/utils/getDecompressedData\";\nimport { getCompressedData } from \"~/migrations/5.37.0/002/utils/getCompressedData\";\nimport { inject, makeInjectable } from \"@webiny/ioc\";\n\ninterface LastEvaluatedKey {\n PK: string;\n SK: string;\n GSI1_PK: string;\n GSI1_SK: string;\n}\n\ninterface IndexSettings {\n number_of_replicas: number;\n refresh_interval: `${number}s`;\n}\n\ninterface CmsEntriesRootFolderDataMigrationCheckpoint {\n lastEvaluatedKey?: LastEvaluatedKey | boolean;\n indexes: {\n [index: string]: IndexSettings | null;\n };\n}\n\ninterface FetchOriginalElasticsearchSettingsParams {\n index: string;\n logger: Logger;\n}\n\ninterface RestoreOriginalElasticsearchSettingsParams {\n migrationStatus: CmsEntriesRootFolderDataMigrationCheckpoint;\n logger: Logger;\n}\n\ninterface DisableElasticsearchIndexingParams {\n index: string;\n logger: Logger;\n}\n\ninterface DynamoDbElasticsearchRecord {\n PK: string;\n SK: string;\n data: string;\n}\n\nexport class CmsEntriesRootFolder_5_37_0_002\n implements DataMigration<CmsEntriesRootFolderDataMigrationCheckpoint>\n{\n private readonly elasticsearchClient: Client;\n private readonly ddbEntryEntity: ReturnType<typeof createDdbEntryEntity>;\n private readonly ddbEsEntryEntity: ReturnType<typeof createDdbEsEntryEntity>;\n private readonly localeEntity: ReturnType<typeof createLocaleEntity>;\n private readonly tenantEntity: ReturnType<typeof createTenantEntity>;\n\n public constructor(\n table: Table<string, string, string>,\n esTable: Table<string, string, string>,\n elasticsearchClient: Client\n ) {\n this.elasticsearchClient = elasticsearchClient;\n this.ddbEntryEntity = createDdbEntryEntity(table);\n this.ddbEsEntryEntity = createDdbEsEntryEntity(esTable);\n this.localeEntity = createLocaleEntity(table);\n this.tenantEntity = createTenantEntity(table);\n }\n\n getId() {\n return \"5.37.0-002\";\n }\n\n getDescription() {\n return \"Add default folderId to all CMS records.\";\n }\n\n async shouldExecute({ logger }: DataMigrationContext): Promise<boolean> {\n /**\n * We will load a few CMS entryes\n */\n const result = await scan<DynamoDbElasticsearchRecord>({\n entity: this.ddbEsEntryEntity,\n options: {\n filters: [\n {\n attr: \"PK\",\n contains: \"#CMS#CME#\"\n }\n ],\n limit: 100\n }\n });\n\n if (result.items.length === 0) {\n logger.info(`No CMS entries found in the system; skipping migration.`);\n return false;\n } else if (result.error) {\n logger.error(result.error);\n throw new Error(result.error);\n }\n\n for (const item of result.items) {\n const data = await getDecompressedData<CmsEntry>(item.data);\n if (!data) {\n continue;\n }\n /**\n * If no location.folderId was set, we need to push the upgrade.\n */\n if (!data.location?.folderId) {\n return true;\n }\n }\n logger.info(`CMS entries already upgraded. skipping...`);\n return false;\n }\n\n async execute({\n logger,\n ...context\n }: DataMigrationContext<CmsEntriesRootFolderDataMigrationCheckpoint>): Promise<void> {\n const migrationStatus =\n context.checkpoint || ({} as CmsEntriesRootFolderDataMigrationCheckpoint);\n\n if (migrationStatus.lastEvaluatedKey === true) {\n await this.restoreOriginalElasticsearchSettings({\n migrationStatus,\n logger\n });\n logger.info(`Migration completed, no need to start again.`);\n return;\n }\n let usingKey = \"\";\n if (migrationStatus?.lastEvaluatedKey) {\n usingKey = JSON.stringify(migrationStatus.lastEvaluatedKey);\n }\n logger.debug(`Scanning DynamoDB Elasticsearch table... ${usingKey}`);\n await ddbScanWithCallback<CmsEntry>(\n {\n entity: this.ddbEntryEntity,\n options: {\n filters: [\n {\n attr: \"TYPE\",\n beginsWith: \"cms.entry\"\n }\n ],\n startKey: migrationStatus.lastEvaluatedKey || undefined,\n limit: 500\n }\n },\n async result => {\n logger.debug(`Processing ${result.items.length} items...`);\n const ddbItems: BatchWriteItem[] = [];\n const ddbEsItems: BatchWriteItem[] = [];\n\n const ddbEsGetItems: Record<string, BatchReadItem> = {};\n /**\n * Update the DynamoDB part of the records.\n */\n for (const item of result.items) {\n const index = esGetIndexName({\n tenant: item.tenant,\n locale: item.locale,\n type: item.modelId,\n isHeadlessCmsModel: true\n });\n // Check for the elasticsearch index settings\n if (!migrationStatus.indexes || migrationStatus.indexes[index] === undefined) {\n // We need to fetch the index settings first\n const settings = await this.fetchOriginalElasticsearchSettings({\n index,\n logger\n });\n // ... add it to the checkpoint...\n migrationStatus.indexes = {\n ...migrationStatus.indexes,\n [index]: settings\n };\n // and then set not to index\n await this.disableElasticsearchIndexing({\n index,\n logger\n });\n }\n //\n ddbItems.push(\n this.ddbEntryEntity.putBatch({\n ...item,\n location: {\n ...item.location,\n folderId: item.location?.folderId || \"root\"\n }\n })\n );\n /**\n * Prepare the loading of DynamoDB Elasticsearch part of the records.\n */\n if (ddbEsGetItems[`${item.entryId}:L`]) {\n continue;\n }\n ddbEsGetItems[`${item.entryId}:L`] = this.ddbEsEntryEntity.getBatch({\n PK: item.PK,\n SK: \"L\"\n });\n if (item.status === \"published\" || !!item.locked) {\n ddbEsGetItems[`${item.entryId}:P`] = this.ddbEsEntryEntity.getBatch({\n PK: item.PK,\n SK: \"P\"\n });\n }\n }\n /**\n * Get all the records from DynamoDB Elasticsearch.\n */\n const esRecords = await batchReadAll<DynamoDbElasticsearchRecord>({\n table: this.ddbEsEntryEntity.table,\n items: Object.values(ddbEsGetItems)\n });\n for (const esRecord of esRecords) {\n const decompressedData = await getDecompressedData<CmsEntry>(esRecord.data);\n if (!decompressedData) {\n logger.trace(\n `Skipping record \"${esRecord.PK}\" as it is not a valid CMS entry...`\n );\n continue;\n } else if (!context.forceExecute && decompressedData.location?.folderId) {\n logger.trace(\n `Skipping record \"${decompressedData.entryId}\" as it already has folderId defined...`\n );\n continue;\n }\n const compressedData = await getCompressedData({\n ...decompressedData,\n location: {\n ...decompressedData.location,\n folderId: \"root\"\n }\n });\n const modified = new Date().toISOString();\n ddbEsItems.push(\n this.ddbEsEntryEntity.putBatch({\n ...esRecord,\n data: compressedData,\n modified\n })\n );\n }\n\n const execute = () => {\n return batchWriteAll({\n table: this.ddbEntryEntity.table,\n items: ddbItems\n });\n };\n\n const executeDdbEs = () => {\n return batchWriteAll({\n table: this.ddbEsEntryEntity.table,\n items: ddbEsItems\n });\n };\n\n logger.trace(\"Storing the DynamoDB records...\");\n await executeWithRetry(execute, {\n onFailedAttempt: error => {\n logger.error(\n `\"batchWriteAll\" attempt #${error.attemptNumber} failed: ${error.message}`\n );\n }\n });\n logger.trace(\"...stored.\");\n\n logger.trace(\"Storing the DynamoDB Elasticsearch records...\");\n await executeWithRetry(executeDdbEs, {\n onFailedAttempt: error => {\n logger.error(\n `\"batchWriteAll ddb + es\" attempt #${error.attemptNumber} failed: ${error.message}`\n );\n }\n });\n logger.trace(\"...stored.\");\n\n // Update checkpoint after every batch\n migrationStatus.lastEvaluatedKey = result.lastEvaluatedKey?.PK\n ? (result.lastEvaluatedKey as unknown as LastEvaluatedKey)\n : true;\n\n // Check if we should store checkpoint and exit.\n if (context.runningOutOfTime()) {\n await context.createCheckpointAndExit(migrationStatus);\n } else {\n await context.createCheckpoint(migrationStatus);\n }\n }\n );\n /**\n * This is the end of the migration.\n */\n await this.restoreOriginalElasticsearchSettings({\n migrationStatus,\n logger\n });\n migrationStatus.lastEvaluatedKey = true;\n migrationStatus.indexes = {};\n context.createCheckpoint(migrationStatus);\n }\n\n private async fetchOriginalElasticsearchSettings(\n params: FetchOriginalElasticsearchSettingsParams\n ): Promise<IndexSettings | null> {\n const { index, logger } = params;\n try {\n const settings = await esGetIndexSettings({\n elasticsearchClient: this.elasticsearchClient,\n index,\n fields: [\"number_of_replicas\", \"refresh_interval\"]\n });\n return {\n number_of_replicas: settings.number_of_replicas || 1,\n refresh_interval: settings.refresh_interval || \"1s\"\n };\n } catch (ex) {\n logger.error(`Failed to fetch original Elasticsearch settings for index \"${index}\".`);\n logger.error({\n ...ex,\n message: ex.message,\n code: ex.code,\n data: ex.data\n });\n }\n return null;\n }\n\n private async restoreOriginalElasticsearchSettings(\n params: RestoreOriginalElasticsearchSettingsParams\n ): Promise<void> {\n const { migrationStatus, logger } = params;\n const indexes = migrationStatus.indexes;\n if (!indexes || typeof indexes !== \"object\") {\n return;\n }\n for (const index in indexes) {\n const settings = indexes[index];\n if (!settings || typeof settings !== \"object\") {\n continue;\n }\n try {\n await esPutIndexSettings({\n elasticsearchClient: this.elasticsearchClient,\n index,\n settings: {\n number_of_replicas: settings.number_of_replicas || 1,\n refresh_interval: settings.refresh_interval || `1s`\n }\n });\n } catch (ex) {\n logger.error(\n `Failed to restore original settings for index \"${index}\". Please do it manually.`\n );\n logger.error({\n ...ex,\n message: ex.message,\n code: ex.code,\n data: ex.data\n });\n }\n }\n }\n\n private async disableElasticsearchIndexing(\n params: DisableElasticsearchIndexingParams\n ): Promise<void> {\n const { index, logger } = params;\n\n try {\n await esPutIndexSettings({\n elasticsearchClient: this.elasticsearchClient,\n index,\n settings: {\n number_of_replicas: 0,\n refresh_interval: -1\n }\n });\n } catch (ex) {\n logger.error(`Failed to disable indexing for index \"${index}\".`);\n logger.error({\n ...ex,\n message: ex.message,\n code: ex.code,\n data: ex.data\n });\n }\n }\n}\n\nmakeInjectable(CmsEntriesRootFolder_5_37_0_002, [\n inject(PrimaryDynamoTableSymbol),\n inject(ElasticsearchDynamoTableSymbol),\n inject(ElasticsearchClientSymbol)\n]);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_dataMigration","require","_createEntryEntity","_createLocaleEntity","_createTenantEntity","_dbDynamodb","_utils","_utils2","_getDecompressedData","_getCompressedData","_ioc","CmsEntriesRootFolder_5_37_0_002","constructor","table","esTable","elasticsearchClient","ddbEntryEntity","createDdbEntryEntity","ddbEsEntryEntity","createDdbEsEntryEntity","localeEntity","createLocaleEntity","tenantEntity","createTenantEntity","getId","getDescription","shouldExecute","logger","result","scan","entity","options","filters","attr","contains","limit","items","length","info","error","Error","item","data","getDecompressedData","location","folderId","execute","context","migrationStatus","checkpoint","lastEvaluatedKey","restoreOriginalElasticsearchSettings","usingKey","JSON","stringify","debug","ddbScanWithCallback","beginsWith","startKey","undefined","ddbItems","ddbEsItems","ddbEsGetItems","index","esGetIndexName","tenant","locale","type","modelId","isHeadlessCmsModel","indexes","settings","fetchOriginalElasticsearchSettings","disableElasticsearchIndexing","push","putBatch","entryId","getBatch","PK","SK","status","locked","esRecords","batchReadAll","Object","values","esRecord","decompressedData","trace","forceExecute","compressedData","getCompressedData","modified","Date","toISOString","batchWriteAll","executeDdbEs","executeWithRetry","onFailedAttempt","attemptNumber","message","runningOutOfTime","createCheckpointAndExit","createCheckpoint","params","esGetIndexSettings","fields","number_of_replicas","refresh_interval","ex","code","esPutIndexSettings","exports","makeInjectable","inject","PrimaryDynamoTableSymbol","ElasticsearchDynamoTableSymbol","ElasticsearchClientSymbol"],"sources":["index.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport {\n DataMigration,\n DataMigrationContext,\n ElasticsearchClientSymbol,\n ElasticsearchDynamoTableSymbol,\n Logger,\n PrimaryDynamoTableSymbol\n} from \"@webiny/data-migration\";\nimport { createDdbEntryEntity, createDdbEsEntryEntity } from \"../entities/createEntryEntity\";\nimport { createLocaleEntity } from \"../entities/createLocaleEntity\";\nimport { createTenantEntity } from \"../entities/createTenantEntity\";\nimport {\n batchReadAll,\n BatchReadItem,\n batchWriteAll,\n BatchWriteItem,\n scan\n} from \"@webiny/db-dynamodb\";\nimport { CmsEntry } from \"../types\";\nimport { Client } from \"@elastic/elasticsearch\";\nimport {\n ddbScanWithCallback,\n esGetIndexName,\n esGetIndexSettings,\n esPutIndexSettings\n} from \"~/utils\";\nimport { executeWithRetry } from \"@webiny/utils\";\nimport { getDecompressedData } from \"~/migrations/5.37.0/002/utils/getDecompressedData\";\nimport { getCompressedData } from \"~/migrations/5.37.0/002/utils/getCompressedData\";\nimport { inject, makeInjectable } from \"@webiny/ioc\";\n\ninterface LastEvaluatedKey {\n PK: string;\n SK: string;\n GSI1_PK: string;\n GSI1_SK: string;\n}\n\ninterface IndexSettings {\n number_of_replicas: number;\n refresh_interval: `${number}s`;\n}\n\ninterface CmsEntriesRootFolderDataMigrationCheckpoint {\n lastEvaluatedKey?: LastEvaluatedKey | boolean;\n indexes: {\n [index: string]: IndexSettings | null;\n };\n}\n\ninterface FetchOriginalElasticsearchSettingsParams {\n index: string;\n logger: Logger;\n}\n\ninterface RestoreOriginalElasticsearchSettingsParams {\n migrationStatus: CmsEntriesRootFolderDataMigrationCheckpoint;\n logger: Logger;\n}\n\ninterface DisableElasticsearchIndexingParams {\n index: string;\n logger: Logger;\n}\n\ninterface DynamoDbElasticsearchRecord {\n PK: string;\n SK: string;\n data: string;\n}\n\nexport class CmsEntriesRootFolder_5_37_0_002\n implements DataMigration<CmsEntriesRootFolderDataMigrationCheckpoint>\n{\n private readonly elasticsearchClient: Client;\n private readonly ddbEntryEntity: ReturnType<typeof createDdbEntryEntity>;\n private readonly ddbEsEntryEntity: ReturnType<typeof createDdbEsEntryEntity>;\n private readonly localeEntity: ReturnType<typeof createLocaleEntity>;\n private readonly tenantEntity: ReturnType<typeof createTenantEntity>;\n\n public constructor(\n table: Table<string, string, string>,\n esTable: Table<string, string, string>,\n elasticsearchClient: Client\n ) {\n this.elasticsearchClient = elasticsearchClient;\n this.ddbEntryEntity = createDdbEntryEntity(table);\n this.ddbEsEntryEntity = createDdbEsEntryEntity(esTable);\n this.localeEntity = createLocaleEntity(table);\n this.tenantEntity = createTenantEntity(table);\n }\n\n getId() {\n return \"5.37.0-002\";\n }\n\n getDescription() {\n return \"Add default folderId to all CMS records.\";\n }\n\n async shouldExecute({ logger }: DataMigrationContext): Promise<boolean> {\n /**\n * We will load a few CMS entryes\n */\n const result = await scan<DynamoDbElasticsearchRecord>({\n entity: this.ddbEsEntryEntity,\n options: {\n filters: [\n {\n attr: \"PK\",\n contains: \"#CMS#CME#\"\n }\n ],\n limit: 100\n }\n });\n\n if (result.items.length === 0) {\n logger.info(`No CMS entries found in the system; skipping migration.`);\n return false;\n } else if (result.error) {\n logger.error(result.error);\n throw new Error(result.error);\n }\n\n for (const item of result.items) {\n const data = await getDecompressedData<CmsEntry>(item.data);\n if (!data) {\n continue;\n }\n /**\n * If no location.folderId was set, we need to push the upgrade.\n */\n if (!data.location?.folderId) {\n return true;\n }\n }\n logger.info(`CMS entries already upgraded. skipping...`);\n return false;\n }\n\n async execute({\n logger,\n ...context\n }: DataMigrationContext<CmsEntriesRootFolderDataMigrationCheckpoint>): Promise<void> {\n const migrationStatus =\n context.checkpoint || ({} as CmsEntriesRootFolderDataMigrationCheckpoint);\n\n if (migrationStatus.lastEvaluatedKey === true) {\n await this.restoreOriginalElasticsearchSettings({\n migrationStatus,\n logger\n });\n logger.info(`Migration completed, no need to start again.`);\n return;\n }\n let usingKey = \"\";\n if (migrationStatus?.lastEvaluatedKey) {\n usingKey = JSON.stringify(migrationStatus.lastEvaluatedKey);\n }\n logger.debug(`Scanning DynamoDB Elasticsearch table... ${usingKey}`);\n await ddbScanWithCallback<CmsEntry>(\n {\n entity: this.ddbEntryEntity,\n options: {\n filters: [\n {\n attr: \"TYPE\",\n beginsWith: \"cms.entry\"\n }\n ],\n startKey: migrationStatus.lastEvaluatedKey || undefined,\n limit: 500\n }\n },\n async result => {\n logger.debug(`Processing ${result.items.length} items...`);\n const ddbItems: BatchWriteItem[] = [];\n const ddbEsItems: BatchWriteItem[] = [];\n\n const ddbEsGetItems: Record<string, BatchReadItem> = {};\n /**\n * Update the DynamoDB part of the records.\n */\n for (const item of result.items) {\n const index = esGetIndexName({\n tenant: item.tenant,\n locale: item.locale,\n type: item.modelId,\n isHeadlessCmsModel: true\n });\n // Check for the elasticsearch index settings\n if (!migrationStatus.indexes || migrationStatus.indexes[index] === undefined) {\n // We need to fetch the index settings first\n const settings = await this.fetchOriginalElasticsearchSettings({\n index,\n logger\n });\n // ... add it to the checkpoint...\n migrationStatus.indexes = {\n ...migrationStatus.indexes,\n [index]: settings\n };\n // and then set not to index\n await this.disableElasticsearchIndexing({\n index,\n logger\n });\n }\n //\n ddbItems.push(\n this.ddbEntryEntity.putBatch({\n ...item,\n location: {\n ...item.location,\n folderId: item.location?.folderId || \"root\"\n }\n })\n );\n /**\n * Prepare the loading of DynamoDB Elasticsearch part of the records.\n */\n if (ddbEsGetItems[`${item.entryId}:L`]) {\n continue;\n }\n ddbEsGetItems[`${item.entryId}:L`] = this.ddbEsEntryEntity.getBatch({\n PK: item.PK,\n SK: \"L\"\n });\n if (item.status === \"published\" || !!item.locked) {\n ddbEsGetItems[`${item.entryId}:P`] = this.ddbEsEntryEntity.getBatch({\n PK: item.PK,\n SK: \"P\"\n });\n }\n }\n /**\n * Get all the records from DynamoDB Elasticsearch.\n */\n const esRecords = await batchReadAll<DynamoDbElasticsearchRecord>({\n table: this.ddbEsEntryEntity.table,\n items: Object.values(ddbEsGetItems)\n });\n for (const esRecord of esRecords) {\n const decompressedData = await getDecompressedData<CmsEntry>(esRecord.data);\n if (!decompressedData) {\n logger.trace(\n `Skipping record \"${esRecord.PK}\" as it is not a valid CMS entry...`\n );\n continue;\n } else if (!context.forceExecute && decompressedData.location?.folderId) {\n logger.trace(\n `Skipping record \"${decompressedData.entryId}\" as it already has folderId defined...`\n );\n continue;\n }\n const compressedData = await getCompressedData({\n ...decompressedData,\n location: {\n ...decompressedData.location,\n folderId: \"root\"\n }\n });\n const modified = new Date().toISOString();\n ddbEsItems.push(\n this.ddbEsEntryEntity.putBatch({\n ...esRecord,\n data: compressedData,\n modified\n })\n );\n }\n\n const execute = () => {\n return batchWriteAll({\n table: this.ddbEntryEntity.table,\n items: ddbItems\n });\n };\n\n const executeDdbEs = () => {\n return batchWriteAll({\n table: this.ddbEsEntryEntity.table,\n items: ddbEsItems\n });\n };\n\n logger.trace(\"Storing the DynamoDB records...\");\n await executeWithRetry(execute, {\n onFailedAttempt: error => {\n logger.error(\n `\"batchWriteAll\" attempt #${error.attemptNumber} failed: ${error.message}`\n );\n }\n });\n logger.trace(\"...stored.\");\n\n logger.trace(\"Storing the DynamoDB Elasticsearch records...\");\n await executeWithRetry(executeDdbEs, {\n onFailedAttempt: error => {\n logger.error(\n `\"batchWriteAll ddb + es\" attempt #${error.attemptNumber} failed: ${error.message}`\n );\n }\n });\n logger.trace(\"...stored.\");\n\n // Update checkpoint after every batch\n migrationStatus.lastEvaluatedKey = result.lastEvaluatedKey?.PK\n ? (result.lastEvaluatedKey as unknown as LastEvaluatedKey)\n : true;\n\n // Check if we should store checkpoint and exit.\n if (context.runningOutOfTime()) {\n await context.createCheckpointAndExit(migrationStatus);\n } else {\n await context.createCheckpoint(migrationStatus);\n }\n }\n );\n /**\n * This is the end of the migration.\n */\n await this.restoreOriginalElasticsearchSettings({\n migrationStatus,\n logger\n });\n migrationStatus.lastEvaluatedKey = true;\n migrationStatus.indexes = {};\n context.createCheckpoint(migrationStatus);\n }\n\n private async fetchOriginalElasticsearchSettings(\n params: FetchOriginalElasticsearchSettingsParams\n ): Promise<IndexSettings | null> {\n const { index, logger } = params;\n try {\n const settings = await esGetIndexSettings({\n elasticsearchClient: this.elasticsearchClient,\n index,\n fields: [\"number_of_replicas\", \"refresh_interval\"]\n });\n return {\n number_of_replicas: settings.number_of_replicas || 1,\n refresh_interval: settings.refresh_interval || \"1s\"\n };\n } catch (ex) {\n logger.error(`Failed to fetch original Elasticsearch settings for index \"${index}\".`);\n logger.error({\n ...ex,\n message: ex.message,\n code: ex.code,\n data: ex.data\n });\n }\n return null;\n }\n\n private async restoreOriginalElasticsearchSettings(\n params: RestoreOriginalElasticsearchSettingsParams\n ): Promise<void> {\n const { migrationStatus, logger } = params;\n const indexes = migrationStatus.indexes;\n if (!indexes || typeof indexes !== \"object\") {\n return;\n }\n for (const index in indexes) {\n const settings = indexes[index];\n if (!settings || typeof settings !== \"object\") {\n continue;\n }\n try {\n await esPutIndexSettings({\n elasticsearchClient: this.elasticsearchClient,\n index,\n settings: {\n number_of_replicas: settings.number_of_replicas || 1,\n refresh_interval: settings.refresh_interval || `1s`\n }\n });\n } catch (ex) {\n logger.error(\n `Failed to restore original settings for index \"${index}\". Please do it manually.`\n );\n logger.error({\n ...ex,\n message: ex.message,\n code: ex.code,\n data: ex.data\n });\n }\n }\n }\n\n private async disableElasticsearchIndexing(\n params: DisableElasticsearchIndexingParams\n ): Promise<void> {\n const { index, logger } = params;\n\n try {\n await esPutIndexSettings({\n elasticsearchClient: this.elasticsearchClient,\n index,\n settings: {\n number_of_replicas: 0,\n refresh_interval: -1\n }\n });\n } catch (ex) {\n logger.error(`Failed to disable indexing for index \"${index}\".`);\n logger.error({\n ...ex,\n message: ex.message,\n code: ex.code,\n data: ex.data\n });\n }\n }\n}\n\nmakeInjectable(CmsEntriesRootFolder_5_37_0_002, [\n inject(PrimaryDynamoTableSymbol),\n inject(ElasticsearchDynamoTableSymbol),\n inject(ElasticsearchClientSymbol)\n]);\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_utils","require","ddbAttributes","PK","type","partitionKey","SK","sortKey","GSI1_PK","GSI1_SK","TYPE","__type","webinyVersion","tenant","entryId","id","createdBy","ownedBy","modifiedBy","createdOn","savedOn","modelId","locale","publishedOn","version","locked","status","values","meta","location","ddbEsAttributes","index","data","createDdbEntryEntity","table","createLegacyEntity","exports","createDdbEsEntryEntity","createStandardEntity"],"sources":["createEntryEntity.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { createLegacyEntity, createStandardEntity } from \"~/utils\";\n\nconst ddbAttributes: Parameters<typeof createLegacyEntity>[2] = {\n PK: {\n type: \"string\",\n partitionKey: true\n },\n SK: {\n type: \"string\",\n sortKey: true\n },\n GSI1_PK: {\n type: \"string\"\n },\n GSI1_SK: {\n type: \"string\"\n },\n TYPE: {\n type: \"string\"\n },\n __type: {\n type: \"string\"\n },\n webinyVersion: {\n type: \"string\"\n },\n tenant: {\n type: \"string\"\n },\n entryId: {\n type: \"string\"\n },\n id: {\n type: \"string\"\n },\n createdBy: {\n type: \"map\"\n },\n ownedBy: {\n type: \"map\"\n },\n modifiedBy: {\n type: \"map\"\n },\n createdOn: {\n type: \"string\"\n },\n savedOn: {\n type: \"string\"\n },\n modelId: {\n type: \"string\"\n },\n locale: {\n type: \"string\"\n },\n publishedOn: {\n type: \"string\"\n },\n version: {\n type: \"number\"\n },\n locked: {\n type: \"boolean\"\n },\n status: {\n type: \"string\"\n },\n values: {\n type: \"map\"\n },\n meta: {\n type: \"map\"\n },\n location: {\n type: \"map\"\n }\n};\n\nconst ddbEsAttributes: Parameters<typeof createStandardEntity>[2] = {\n PK: {\n type: \"string\",\n partitionKey: true\n },\n SK: {\n type: \"string\",\n sortKey: true\n },\n index: {\n type: \"string\"\n },\n data: {\n type: \"map\"\n }\n};\n\nexport const createDdbEntryEntity = (table: Table<string, string, string>) => {\n return createLegacyEntity(table, \"CmsEntries\", ddbAttributes);\n};\n\nexport const createDdbEsEntryEntity = (table: Table<string, string, string>) => {\n return createStandardEntity(table, \"CmsEntriesElasticsearch\", ddbEsAttributes);\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEA,MAAMC,aAAuD,GAAG;EAC5DC,EAAE,EAAE;IACAC,IAAI,EAAE,QAAQ;IACdC,YAAY,EAAE;EAClB,CAAC;EACDC,EAAE,EAAE;IACAF,IAAI,EAAE,QAAQ;IACdG,OAAO,EAAE;EACb,CAAC;EACDC,OAAO,EAAE;IACLJ,IAAI,EAAE;EACV,CAAC;EACDK,OAAO,EAAE;IACLL,IAAI,EAAE;EACV,CAAC;EACDM,IAAI,EAAE;IACFN,IAAI,EAAE;EACV,CAAC;EACDO,MAAM,EAAE;IACJP,IAAI,EAAE;EACV,CAAC;EACDQ,aAAa,EAAE;IACXR,IAAI,EAAE;EACV,CAAC;EACDS,MAAM,EAAE;IACJT,IAAI,EAAE;EACV,CAAC;EACDU,OAAO,EAAE;IACLV,IAAI,EAAE;EACV,CAAC;EACDW,EAAE,EAAE;IACAX,IAAI,EAAE;EACV,CAAC;EACDY,SAAS,EAAE;IACPZ,IAAI,EAAE;EACV,CAAC;EACDa,OAAO,EAAE;IACLb,IAAI,EAAE;EACV,CAAC;EACDc,UAAU,EAAE;IACRd,IAAI,EAAE;EACV,CAAC;EACDe,SAAS,EAAE;IACPf,IAAI,EAAE;EACV,CAAC;EACDgB,OAAO,EAAE;IACLhB,IAAI,EAAE;EACV,CAAC;EACDiB,OAAO,EAAE;IACLjB,IAAI,EAAE;EACV,CAAC;EACDkB,MAAM,EAAE;IACJlB,IAAI,EAAE;EACV,CAAC;EACDmB,WAAW,EAAE;IACTnB,IAAI,EAAE;EACV,CAAC;EACDoB,OAAO,EAAE;IACLpB,IAAI,EAAE;EACV,CAAC;EACDqB,MAAM,EAAE;IACJrB,IAAI,EAAE;EACV,CAAC;EACDsB,MAAM,EAAE;IACJtB,IAAI,EAAE;EACV,CAAC;EACDuB,MAAM,EAAE;IACJvB,IAAI,EAAE;EACV,CAAC;EACDwB,IAAI,EAAE;IACFxB,IAAI,EAAE;EACV,CAAC;EACDyB,QAAQ,EAAE;IACNzB,IAAI,EAAE;EACV;AACJ,CAAC;AAED,MAAM0B,eAA2D,GAAG;EAChE3B,EAAE,EAAE;IACAC,IAAI,EAAE,QAAQ;IACdC,YAAY,EAAE;EAClB,CAAC;EACDC,EAAE,EAAE;IACAF,IAAI,EAAE,QAAQ;IACdG,OAAO,EAAE;EACb,CAAC;EACDwB,KAAK,EAAE;IACH3B,IAAI,EAAE;EACV,CAAC;EACD4B,IAAI,EAAE;IACF5B,IAAI,EAAE;EACV;AACJ,CAAC;AAEM,MAAM6B,oBAAoB,GAAIC,KAAoC,IAAK;EAC1E,OAAO,IAAAC,yBAAkB,EAACD,KAAK,EAAE,YAAY,EAAEhC,aAAa,CAAC;AACjE,CAAC;AAACkC,OAAA,CAAAH,oBAAA,GAAAA,oBAAA;AAEK,MAAMI,sBAAsB,GAAIH,KAAoC,IAAK;EAC5E,OAAO,IAAAI,2BAAoB,EAACJ,KAAK,EAAE,yBAAyB,EAAEJ,eAAe,CAAC;AAClF,CAAC;AAACM,OAAA,CAAAC,sBAAA,GAAAA,sBAAA"}
1
+ {"version":3,"names":["_utils","require","ddbAttributes","PK","type","partitionKey","SK","sortKey","GSI1_PK","GSI1_SK","TYPE","__type","webinyVersion","tenant","entryId","id","createdBy","ownedBy","modifiedBy","createdOn","savedOn","modelId","locale","publishedOn","version","locked","status","values","meta","location","ddbEsAttributes","index","data","createDdbEntryEntity","table","createLegacyEntity","exports","createDdbEsEntryEntity","createStandardEntity"],"sources":["createEntryEntity.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { createLegacyEntity, createStandardEntity } from \"~/utils\";\n\nconst ddbAttributes: Parameters<typeof createLegacyEntity>[2] = {\n PK: {\n type: \"string\",\n partitionKey: true\n },\n SK: {\n type: \"string\",\n sortKey: true\n },\n GSI1_PK: {\n type: \"string\"\n },\n GSI1_SK: {\n type: \"string\"\n },\n TYPE: {\n type: \"string\"\n },\n __type: {\n type: \"string\"\n },\n webinyVersion: {\n type: \"string\"\n },\n tenant: {\n type: \"string\"\n },\n entryId: {\n type: \"string\"\n },\n id: {\n type: \"string\"\n },\n createdBy: {\n type: \"map\"\n },\n ownedBy: {\n type: \"map\"\n },\n modifiedBy: {\n type: \"map\"\n },\n createdOn: {\n type: \"string\"\n },\n savedOn: {\n type: \"string\"\n },\n modelId: {\n type: \"string\"\n },\n locale: {\n type: \"string\"\n },\n publishedOn: {\n type: \"string\"\n },\n version: {\n type: \"number\"\n },\n locked: {\n type: \"boolean\"\n },\n status: {\n type: \"string\"\n },\n values: {\n type: \"map\"\n },\n meta: {\n type: \"map\"\n },\n location: {\n type: \"map\"\n }\n};\n\nconst ddbEsAttributes: Parameters<typeof createStandardEntity>[2] = {\n PK: {\n type: \"string\",\n partitionKey: true\n },\n SK: {\n type: \"string\",\n sortKey: true\n },\n index: {\n type: \"string\"\n },\n data: {\n type: \"map\"\n }\n};\n\nexport const createDdbEntryEntity = (table: Table<string, string, string>) => {\n return createLegacyEntity(table, \"CmsEntries\", ddbAttributes);\n};\n\nexport const createDdbEsEntryEntity = (table: Table<string, string, string>) => {\n return createStandardEntity(table, \"CmsEntriesElasticsearch\", ddbEsAttributes);\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEA,MAAMC,aAAuD,GAAG;EAC5DC,EAAE,EAAE;IACAC,IAAI,EAAE,QAAQ;IACdC,YAAY,EAAE;EAClB,CAAC;EACDC,EAAE,EAAE;IACAF,IAAI,EAAE,QAAQ;IACdG,OAAO,EAAE;EACb,CAAC;EACDC,OAAO,EAAE;IACLJ,IAAI,EAAE;EACV,CAAC;EACDK,OAAO,EAAE;IACLL,IAAI,EAAE;EACV,CAAC;EACDM,IAAI,EAAE;IACFN,IAAI,EAAE;EACV,CAAC;EACDO,MAAM,EAAE;IACJP,IAAI,EAAE;EACV,CAAC;EACDQ,aAAa,EAAE;IACXR,IAAI,EAAE;EACV,CAAC;EACDS,MAAM,EAAE;IACJT,IAAI,EAAE;EACV,CAAC;EACDU,OAAO,EAAE;IACLV,IAAI,EAAE;EACV,CAAC;EACDW,EAAE,EAAE;IACAX,IAAI,EAAE;EACV,CAAC;EACDY,SAAS,EAAE;IACPZ,IAAI,EAAE;EACV,CAAC;EACDa,OAAO,EAAE;IACLb,IAAI,EAAE;EACV,CAAC;EACDc,UAAU,EAAE;IACRd,IAAI,EAAE;EACV,CAAC;EACDe,SAAS,EAAE;IACPf,IAAI,EAAE;EACV,CAAC;EACDgB,OAAO,EAAE;IACLhB,IAAI,EAAE;EACV,CAAC;EACDiB,OAAO,EAAE;IACLjB,IAAI,EAAE;EACV,CAAC;EACDkB,MAAM,EAAE;IACJlB,IAAI,EAAE;EACV,CAAC;EACDmB,WAAW,EAAE;IACTnB,IAAI,EAAE;EACV,CAAC;EACDoB,OAAO,EAAE;IACLpB,IAAI,EAAE;EACV,CAAC;EACDqB,MAAM,EAAE;IACJrB,IAAI,EAAE;EACV,CAAC;EACDsB,MAAM,EAAE;IACJtB,IAAI,EAAE;EACV,CAAC;EACDuB,MAAM,EAAE;IACJvB,IAAI,EAAE;EACV,CAAC;EACDwB,IAAI,EAAE;IACFxB,IAAI,EAAE;EACV,CAAC;EACDyB,QAAQ,EAAE;IACNzB,IAAI,EAAE;EACV;AACJ,CAAC;AAED,MAAM0B,eAA2D,GAAG;EAChE3B,EAAE,EAAE;IACAC,IAAI,EAAE,QAAQ;IACdC,YAAY,EAAE;EAClB,CAAC;EACDC,EAAE,EAAE;IACAF,IAAI,EAAE,QAAQ;IACdG,OAAO,EAAE;EACb,CAAC;EACDwB,KAAK,EAAE;IACH3B,IAAI,EAAE;EACV,CAAC;EACD4B,IAAI,EAAE;IACF5B,IAAI,EAAE;EACV;AACJ,CAAC;AAEM,MAAM6B,oBAAoB,GAAIC,KAAoC,IAAK;EAC1E,OAAO,IAAAC,yBAAkB,EAACD,KAAK,EAAE,YAAY,EAAEhC,aAAa,CAAC;AACjE,CAAC;AAACkC,OAAA,CAAAH,oBAAA,GAAAA,oBAAA;AAEK,MAAMI,sBAAsB,GAAIH,KAAoC,IAAK;EAC5E,OAAO,IAAAI,2BAAoB,EAACJ,KAAK,EAAE,yBAAyB,EAAEJ,eAAe,CAAC;AAClF,CAAC;AAACM,OAAA,CAAAC,sBAAA,GAAAA,sBAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_utils","require","createLocaleEntity","table","createLegacyEntity","createdOn","type","createdBy","code","default","webinyVersion","tenant","exports"],"sources":["createLocaleEntity.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { createLegacyEntity } from \"~/utils\";\n\nexport const createLocaleEntity = (table: Table<string, string, string>) => {\n return createLegacyEntity(table, \"I18NLocale\", {\n createdOn: {\n type: \"string\"\n },\n createdBy: {\n type: \"map\"\n },\n code: {\n type: \"string\"\n },\n default: {\n type: \"boolean\"\n },\n webinyVersion: {\n type: \"string\"\n },\n tenant: {\n type: \"string\"\n }\n });\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEO,MAAMC,kBAAkB,GAAIC,KAAoC,IAAK;EACxE,OAAO,IAAAC,yBAAkB,EAACD,KAAK,EAAE,YAAY,EAAE;IAC3CE,SAAS,EAAE;MACPC,IAAI,EAAE;IACV,CAAC;IACDC,SAAS,EAAE;MACPD,IAAI,EAAE;IACV,CAAC;IACDE,IAAI,EAAE;MACFF,IAAI,EAAE;IACV,CAAC;IACDG,OAAO,EAAE;MACLH,IAAI,EAAE;IACV,CAAC;IACDI,aAAa,EAAE;MACXJ,IAAI,EAAE;IACV,CAAC;IACDK,MAAM,EAAE;MACJL,IAAI,EAAE;IACV;EACJ,CAAC,CAAC;AACN,CAAC;AAACM,OAAA,CAAAV,kBAAA,GAAAA,kBAAA"}
1
+ {"version":3,"names":["_utils","require","createLocaleEntity","table","createLegacyEntity","createdOn","type","createdBy","code","default","webinyVersion","tenant","exports"],"sources":["createLocaleEntity.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { createLegacyEntity } from \"~/utils\";\n\nexport const createLocaleEntity = (table: Table<string, string, string>) => {\n return createLegacyEntity(table, \"I18NLocale\", {\n createdOn: {\n type: \"string\"\n },\n createdBy: {\n type: \"map\"\n },\n code: {\n type: \"string\"\n },\n default: {\n type: \"boolean\"\n },\n webinyVersion: {\n type: \"string\"\n },\n tenant: {\n type: \"string\"\n }\n });\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEO,MAAMC,kBAAkB,GAAIC,KAAoC,IAAK;EACxE,OAAO,IAAAC,yBAAkB,EAACD,KAAK,EAAE,YAAY,EAAE;IAC3CE,SAAS,EAAE;MACPC,IAAI,EAAE;IACV,CAAC;IACDC,SAAS,EAAE;MACPD,IAAI,EAAE;IACV,CAAC;IACDE,IAAI,EAAE;MACFF,IAAI,EAAE;IACV,CAAC;IACDG,OAAO,EAAE;MACLH,IAAI,EAAE;IACV,CAAC;IACDI,aAAa,EAAE;MACXJ,IAAI,EAAE;IACV,CAAC;IACDK,MAAM,EAAE;MACJL,IAAI,EAAE;IACV;EACJ,CAAC,CAAC;AACN,CAAC;AAACM,OAAA,CAAAV,kBAAA,GAAAA,kBAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_utils","require","createTenantEntity","table","createStandardEntity","exports"],"sources":["createTenantEntity.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { createStandardEntity } from \"~/utils\";\n\nexport const createTenantEntity = (table: Table<string, string, string>) => {\n return createStandardEntity(table, \"TenancyTenant\");\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEO,MAAMC,kBAAkB,GAAIC,KAAoC,IAAK;EACxE,OAAO,IAAAC,2BAAoB,EAACD,KAAK,EAAE,eAAe,CAAC;AACvD,CAAC;AAACE,OAAA,CAAAH,kBAAA,GAAAA,kBAAA"}
1
+ {"version":3,"names":["_utils","require","createTenantEntity","table","createStandardEntity","exports"],"sources":["createTenantEntity.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { createStandardEntity } from \"~/utils\";\n\nexport const createTenantEntity = (table: Table<string, string, string>) => {\n return createStandardEntity(table, \"TenancyTenant\");\n};\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEO,MAAMC,kBAAkB,GAAIC,KAAoC,IAAK;EACxE,OAAO,IAAAC,2BAAoB,EAACD,KAAK,EAAE,eAAe,CAAC;AACvD,CAAC;AAACE,OAAA,CAAAH,kBAAA,GAAAA,kBAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export interface Tenant {\n data: {\n id: string;\n name: string;\n };\n}\n\nexport interface I18NLocale {\n code: string;\n}\n\nexport interface Identity {\n id: string;\n displayName: string | null;\n type: string;\n}\n\nexport interface CmsEntryValues {\n [key: string]: any;\n}\n\nexport type CmsEntryStatus = \"published\" | \"unpublished\" | \"draft\";\n\nexport interface CmsEntry<T = CmsEntryValues> {\n webinyVersion: string;\n tenant: string;\n entryId: string;\n id: string;\n createdBy: Identity;\n ownedBy: Identity;\n modifiedBy?: Identity | null;\n createdOn: string;\n savedOn: string;\n modelId: string;\n locale: string;\n publishedOn?: string;\n version: number;\n locked: boolean;\n status: CmsEntryStatus;\n values: T;\n meta?: {\n [key: string]: any;\n };\n location?: {\n folderId?: string | null;\n };\n}\n\nexport interface ListLocalesParams {\n tenant: Tenant;\n}\n\nexport interface ListModelsParams {\n tenant: Tenant;\n locale: I18NLocale;\n}\n\nexport interface CmsModel {\n modelId: string;\n name: string;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export interface Tenant {\n data: {\n id: string;\n name: string;\n };\n}\n\nexport interface I18NLocale {\n code: string;\n}\n\nexport interface Identity {\n id: string;\n displayName: string | null;\n type: string;\n}\n\nexport interface CmsEntryValues {\n [key: string]: any;\n}\n\nexport type CmsEntryStatus = \"published\" | \"unpublished\" | \"draft\";\n\nexport interface CmsEntry<T = CmsEntryValues> {\n webinyVersion: string;\n tenant: string;\n entryId: string;\n id: string;\n createdBy: Identity;\n ownedBy: Identity;\n modifiedBy?: Identity | null;\n createdOn: string;\n savedOn: string;\n modelId: string;\n locale: string;\n publishedOn?: string;\n version: number;\n locked: boolean;\n status: CmsEntryStatus;\n values: T;\n meta?: {\n [key: string]: any;\n };\n location?: {\n folderId?: string | null;\n };\n}\n\nexport interface ListLocalesParams {\n tenant: Tenant;\n}\n\nexport interface ListModelsParams {\n tenant: Tenant;\n locale: I18NLocale;\n}\n\nexport interface CmsModel {\n modelId: string;\n name: string;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_gzip","require","GZIP","TO_STORAGE_ENCODING","getCompressedData","data","value","gzip","JSON","stringify","compression","toString","exports"],"sources":["getCompressedData.ts"],"sourcesContent":["import { compress as gzip } from \"@webiny/utils/compression/gzip\";\n\nconst GZIP = \"gzip\";\nconst TO_STORAGE_ENCODING = \"base64\";\n\nexport const getCompressedData = async (data: any) => {\n const value = await gzip(JSON.stringify(data));\n\n return {\n compression: GZIP,\n value: value.toString(TO_STORAGE_ENCODING)\n };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,MAAMC,IAAI,GAAG,MAAM;AACnB,MAAMC,mBAAmB,GAAG,QAAQ;AAE7B,MAAMC,iBAAiB,GAAG,MAAOC,IAAS,IAAK;EAClD,MAAMC,KAAK,GAAG,MAAM,IAAAC,cAAI,EAACC,IAAI,CAACC,SAAS,CAACJ,IAAI,CAAC,CAAC;EAE9C,OAAO;IACHK,WAAW,EAAER,IAAI;IACjBI,KAAK,EAAEA,KAAK,CAACK,QAAQ,CAACR,mBAAmB;EAC7C,CAAC;AACL,CAAC;AAACS,OAAA,CAAAR,iBAAA,GAAAA,iBAAA"}
1
+ {"version":3,"names":["_gzip","require","GZIP","TO_STORAGE_ENCODING","getCompressedData","data","value","gzip","JSON","stringify","compression","toString","exports"],"sources":["getCompressedData.ts"],"sourcesContent":["import { compress as gzip } from \"@webiny/utils/compression/gzip\";\n\nconst GZIP = \"gzip\";\nconst TO_STORAGE_ENCODING = \"base64\";\n\nexport const getCompressedData = async (data: any) => {\n const value = await gzip(JSON.stringify(data));\n\n return {\n compression: GZIP,\n value: value.toString(TO_STORAGE_ENCODING)\n };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,MAAMC,IAAI,GAAG,MAAM;AACnB,MAAMC,mBAAmB,GAAG,QAAQ;AAE7B,MAAMC,iBAAiB,GAAG,MAAOC,IAAS,IAAK;EAClD,MAAMC,KAAK,GAAG,MAAM,IAAAC,cAAI,EAACC,IAAI,CAACC,SAAS,CAACJ,IAAI,CAAC,CAAC;EAE9C,OAAO;IACHK,WAAW,EAAER,IAAI;IACjBI,KAAK,EAAEA,KAAK,CAACK,QAAQ,CAACR,mBAAmB;EAC7C,CAAC;AACL,CAAC;AAACS,OAAA,CAAAR,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_gzip","require","GZIP","TO_STORAGE_ENCODING","FROM_STORAGE_ENCODING","convertToBuffer","value","Buffer","from","getDecompressedData","data","compression","buf","ungzip","toString","JSON","parse","ex","exports"],"sources":["getDecompressedData.ts"],"sourcesContent":["import { decompress as ungzip } from \"@webiny/utils/compression/gzip\";\n\nconst GZIP = \"gzip\";\nconst TO_STORAGE_ENCODING = \"base64\";\nconst FROM_STORAGE_ENCODING = \"utf8\";\n\nconst convertToBuffer = (value: string | Buffer) => {\n if (typeof value === \"string\") {\n return Buffer.from(value, TO_STORAGE_ENCODING);\n }\n return value;\n};\n\nexport const getDecompressedData = async <T>(data: any): Promise<T | null> => {\n if (data?.compression !== GZIP) {\n return null;\n }\n try {\n const buf = await ungzip(convertToBuffer(data.value));\n const value = buf.toString(FROM_STORAGE_ENCODING);\n return JSON.parse(value);\n } catch (ex) {\n return null;\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,MAAMC,IAAI,GAAG,MAAM;AACnB,MAAMC,mBAAmB,GAAG,QAAQ;AACpC,MAAMC,qBAAqB,GAAG,MAAM;AAEpC,MAAMC,eAAe,GAAIC,KAAsB,IAAK;EAChD,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC3B,OAAOC,MAAM,CAACC,IAAI,CAACF,KAAK,EAAEH,mBAAmB,CAAC;EAClD;EACA,OAAOG,KAAK;AAChB,CAAC;AAEM,MAAMG,mBAAmB,GAAG,MAAUC,IAAS,IAAwB;EAC1E,IAAIA,IAAI,EAAEC,WAAW,KAAKT,IAAI,EAAE;IAC5B,OAAO,IAAI;EACf;EACA,IAAI;IACA,MAAMU,GAAG,GAAG,MAAM,IAAAC,gBAAM,EAACR,eAAe,CAACK,IAAI,CAACJ,KAAK,CAAC,CAAC;IACrD,MAAMA,KAAK,GAAGM,GAAG,CAACE,QAAQ,CAACV,qBAAqB,CAAC;IACjD,OAAOW,IAAI,CAACC,KAAK,CAACV,KAAK,CAAC;EAC5B,CAAC,CAAC,OAAOW,EAAE,EAAE;IACT,OAAO,IAAI;EACf;AACJ,CAAC;AAACC,OAAA,CAAAT,mBAAA,GAAAA,mBAAA"}
1
+ {"version":3,"names":["_gzip","require","GZIP","TO_STORAGE_ENCODING","FROM_STORAGE_ENCODING","convertToBuffer","value","Buffer","from","getDecompressedData","data","compression","buf","ungzip","toString","JSON","parse","ex","exports"],"sources":["getDecompressedData.ts"],"sourcesContent":["import { decompress as ungzip } from \"@webiny/utils/compression/gzip\";\n\nconst GZIP = \"gzip\";\nconst TO_STORAGE_ENCODING = \"base64\";\nconst FROM_STORAGE_ENCODING = \"utf8\";\n\nconst convertToBuffer = (value: string | Buffer) => {\n if (typeof value === \"string\") {\n return Buffer.from(value, TO_STORAGE_ENCODING);\n }\n return value;\n};\n\nexport const getDecompressedData = async <T>(data: any): Promise<T | null> => {\n if (data?.compression !== GZIP) {\n return null;\n }\n try {\n const buf = await ungzip(convertToBuffer(data.value));\n const value = buf.toString(FROM_STORAGE_ENCODING);\n return JSON.parse(value);\n } catch (ex) {\n return null;\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,MAAMC,IAAI,GAAG,MAAM;AACnB,MAAMC,mBAAmB,GAAG,QAAQ;AACpC,MAAMC,qBAAqB,GAAG,MAAM;AAEpC,MAAMC,eAAe,GAAIC,KAAsB,IAAK;EAChD,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC3B,OAAOC,MAAM,CAACC,IAAI,CAACF,KAAK,EAAEH,mBAAmB,CAAC;EAClD;EACA,OAAOG,KAAK;AAChB,CAAC;AAEM,MAAMG,mBAAmB,GAAG,MAAUC,IAAS,IAAwB;EAC1E,IAAIA,IAAI,EAAEC,WAAW,KAAKT,IAAI,EAAE;IAC5B,OAAO,IAAI;EACf;EACA,IAAI;IACA,MAAMU,GAAG,GAAG,MAAM,IAAAC,gBAAM,EAACR,eAAe,CAACK,IAAI,CAACJ,KAAK,CAAC,CAAC;IACrD,MAAMA,KAAK,GAAGM,GAAG,CAACE,QAAQ,CAACV,qBAAqB,CAAC;IACjD,OAAOW,IAAI,CAACC,KAAK,CAACV,KAAK,CAAC;EAC5B,CAAC,CAAC,OAAOW,EAAE,EAAE;IACT,OAAO,IAAI;EACf;AACJ,CAAC;AAACC,OAAA,CAAAT,mBAAA,GAAAA,mBAAA","ignoreList":[]}
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.UPPERCASE_ROOT_FOLDER = exports.ROOT_FOLDER = exports.ACO_FOLDER_MODEL_ID = void 0;
7
- const ROOT_FOLDER = "root";
8
- exports.ROOT_FOLDER = ROOT_FOLDER;
9
- const UPPERCASE_ROOT_FOLDER = "ROOT";
10
- exports.UPPERCASE_ROOT_FOLDER = UPPERCASE_ROOT_FOLDER;
11
- const ACO_FOLDER_MODEL_ID = "acoFolder";
12
- exports.ACO_FOLDER_MODEL_ID = ACO_FOLDER_MODEL_ID;
7
+ const ROOT_FOLDER = exports.ROOT_FOLDER = "root";
8
+ const UPPERCASE_ROOT_FOLDER = exports.UPPERCASE_ROOT_FOLDER = "ROOT";
9
+ const ACO_FOLDER_MODEL_ID = exports.ACO_FOLDER_MODEL_ID = "acoFolder";
13
10
 
14
11
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ROOT_FOLDER","exports","UPPERCASE_ROOT_FOLDER","ACO_FOLDER_MODEL_ID"],"sources":["constants.ts"],"sourcesContent":["export const ROOT_FOLDER = \"root\";\nexport const UPPERCASE_ROOT_FOLDER = \"ROOT\";\nexport const ACO_FOLDER_MODEL_ID = \"acoFolder\";\n"],"mappings":";;;;;;AAAO,MAAMA,WAAW,GAAG,MAAM;AAACC,OAAA,CAAAD,WAAA,GAAAA,WAAA;AAC3B,MAAME,qBAAqB,GAAG,MAAM;AAACD,OAAA,CAAAC,qBAAA,GAAAA,qBAAA;AACrC,MAAMC,mBAAmB,GAAG,WAAW;AAACF,OAAA,CAAAE,mBAAA,GAAAA,mBAAA"}
1
+ {"version":3,"names":["ROOT_FOLDER","exports","UPPERCASE_ROOT_FOLDER","ACO_FOLDER_MODEL_ID"],"sources":["constants.ts"],"sourcesContent":["export const ROOT_FOLDER = \"root\";\nexport const UPPERCASE_ROOT_FOLDER = \"ROOT\";\nexport const ACO_FOLDER_MODEL_ID = \"acoFolder\";\n"],"mappings":";;;;;;AAAO,MAAMA,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,MAAM;AAC1B,MAAME,qBAAqB,GAAAD,OAAA,CAAAC,qBAAA,GAAG,MAAM;AACpC,MAAMC,mBAAmB,GAAAF,OAAA,CAAAE,mBAAA,GAAG,WAAW","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_utils","require","_createEntryEntity","_createLocaleEntity","_createTenantEntity","_utils2","_constants","isGroupMigrationCompleted","status","hasAcoFolderBug","entry","parentId","String","values","toLowerCase","ROOT_FOLDER","AcoRecords_5_37_0_003_AcoFolders","constructor","table","entryEntity","createDdbEntryEntity","localeEntity","createLocaleEntity","tenantEntity","createTenantEntity","getId","getDescription","shouldExecute","logger","tenants","listTenants","length","info","tenant","locales","listLocales","data","id","locale","folders","queryAll","entity","partitionKey","code","ACO_FOLDER_MODEL_ID","options","index","gt","some","execute","context","migrationStatus","checkpoint","tenantId","groupId","localeCode","batch","ddbQueryAllWithCallback","items","reduce","accumulator","current","entryId","initialValues","latestEntry","PK","SK","GSI1_PK","GSI1_SK","TYPE","revisionEntry","acc","putBatch","Promise","resolve","batchWriteAll","executeWithRetry","onFailedAttempt","error","attemptNumber","message","runningOutOfTime","createCheckpointAndExit","createCheckpoint","gte","exports"],"sources":["AcoFolderMigration.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { DataMigration, DataMigrationContext } from \"@webiny/data-migration\";\nimport { PrimitiveValue } from \"@webiny/api-elasticsearch/types\";\nimport { executeWithRetry } from \"@webiny/utils\";\nimport { createDdbEntryEntity } from \"../entities/createEntryEntity\";\nimport { createLocaleEntity } from \"../entities/createLocaleEntity\";\nimport { createTenantEntity } from \"../entities/createTenantEntity\";\nimport { CmsEntryAcoFolder, I18NLocale, ListLocalesParams, Tenant } from \"../types\";\nimport { batchWriteAll, BatchWriteItem, ddbQueryAllWithCallback, queryAll } from \"~/utils\";\nimport { ACO_FOLDER_MODEL_ID, ROOT_FOLDER } from \"../constants\";\n\nconst isGroupMigrationCompleted = (\n status: PrimitiveValue[] | boolean | undefined\n): status is boolean => {\n return typeof status === \"boolean\";\n};\n\nconst hasAcoFolderBug = (entry: CmsEntryAcoFolder): boolean => {\n const parentId = String(entry.values.parentId || \"\").toLowerCase();\n return parentId === ROOT_FOLDER;\n};\n\nexport type AcoFolderMigrationCheckpoint = Record<string, string | boolean | undefined>;\n\nexport class AcoRecords_5_37_0_003_AcoFolders\n implements DataMigration<AcoFolderMigrationCheckpoint>\n{\n private readonly entryEntity: ReturnType<typeof createDdbEntryEntity>;\n private readonly localeEntity: ReturnType<typeof createLocaleEntity>;\n private readonly tenantEntity: ReturnType<typeof createTenantEntity>;\n\n constructor(table: Table<string, string, string>) {\n this.entryEntity = createDdbEntryEntity(table);\n this.localeEntity = createLocaleEntity(table);\n this.tenantEntity = createTenantEntity(table);\n }\n\n getId() {\n return \"AcoFolderParentId\";\n }\n\n getDescription() {\n return \"Fix the ACO Folders having set ROOT as parentId\";\n }\n\n async shouldExecute({ logger }: DataMigrationContext): Promise<boolean> {\n const tenants = await this.listTenants();\n if (tenants.length === 0) {\n logger.info(`No tenants found in the system; skipping migration.`);\n return false;\n }\n\n for (const tenant of tenants) {\n const locales = await this.listLocales({ tenant });\n if (locales.length === 0) {\n logger.info(`No locales found in tenant \"${tenant.data.id}\".`);\n continue;\n }\n\n for (const locale of locales) {\n const folders = await queryAll<CmsEntryAcoFolder>({\n entity: this.entryEntity,\n partitionKey: `T#${tenant.data.id}#L#${locale.code}#CMS#CME#M#${ACO_FOLDER_MODEL_ID}#A`,\n options: {\n index: \"GSI1\",\n gt: \" \"\n }\n });\n\n if (!folders.some(hasAcoFolderBug)) {\n continue;\n }\n\n return true;\n }\n }\n return false;\n }\n\n async execute({ logger, ...context }: DataMigrationContext): Promise<void> {\n const tenants = await this.listTenants();\n\n const migrationStatus = context.checkpoint || {};\n\n for (const tenant of tenants) {\n const locales = await this.listLocales({ tenant });\n\n const tenantId = tenant.data.id;\n\n for (const locale of locales) {\n const groupId = `${tenantId}:${locale.code}`;\n const status = migrationStatus[groupId];\n\n const localeCode = locale.code;\n\n if (isGroupMigrationCompleted(status)) {\n continue;\n }\n\n let batch = 0;\n\n await ddbQueryAllWithCallback<CmsEntryAcoFolder>(\n {\n entity: this.entryEntity,\n partitionKey: `T#${tenantId}#L#${localeCode}#CMS#CME#M#${ACO_FOLDER_MODEL_ID}#A`,\n options: {\n index: \"GSI1\",\n gt: status || \" \"\n }\n },\n async folders => {\n batch++;\n logger.info(\n `Processing batch #${batch} in group ${groupId} (${folders.length} folder entries).`\n );\n\n const items = await folders.reduce<Promise<BatchWriteItem[]>>(\n async (accumulator: Promise<BatchWriteItem[]>, current) => {\n const { entryId, values: initialValues } = current;\n\n if (!hasAcoFolderBug(current)) {\n return await accumulator;\n }\n\n const values = {\n ...initialValues,\n parentId: null\n };\n\n const latestEntry = {\n ...current,\n PK: `T#${tenantId}#L#${localeCode}#CMS#CME#CME#${entryId}`,\n SK: \"L\",\n GSI1_PK: `T#${tenantId}#L#${localeCode}#CMS#CME#M#${ACO_FOLDER_MODEL_ID}#L`,\n GSI1_SK: current.id,\n TYPE: \"cms.entry.l\",\n values\n };\n\n const revisionEntry = {\n ...current,\n PK: `T#${tenantId}#L#${localeCode}#CMS#CME#CME#${entryId}`,\n SK: `REV#0001`,\n GSI1_PK: `T#${tenantId}#L#${localeCode}#CMS#CME#M#${ACO_FOLDER_MODEL_ID}#A`,\n GSI1_SK: current.id,\n TYPE: \"cms.entry\",\n values\n };\n\n const acc = await accumulator;\n\n return [\n ...acc,\n this.entryEntity.putBatch(latestEntry),\n this.entryEntity.putBatch(revisionEntry)\n ];\n },\n Promise.resolve([])\n );\n\n const execute = () => {\n return batchWriteAll({ table: this.entryEntity.table, items });\n };\n\n await executeWithRetry(execute, {\n onFailedAttempt: error => {\n logger.error(\n `\"batchWriteAll\" attempt #${error.attemptNumber} failed.`\n );\n logger.error(error.message);\n }\n });\n\n // Update checkpoint after every batch\n migrationStatus[groupId] = folders[folders.length - 1].id;\n\n // Check if we should store checkpoint and exit.\n if (context.runningOutOfTime()) {\n await context.createCheckpointAndExit(migrationStatus);\n } else {\n await context.createCheckpoint(migrationStatus);\n }\n }\n );\n\n migrationStatus[groupId] = true;\n context.createCheckpoint(migrationStatus);\n }\n }\n }\n\n private async listTenants(): Promise<Tenant[]> {\n return await queryAll<Tenant>({\n entity: this.tenantEntity,\n partitionKey: \"TENANTS\",\n options: {\n index: \"GSI1\",\n gte: \" \"\n }\n });\n }\n\n private async listLocales({ tenant }: ListLocalesParams): Promise<I18NLocale[]> {\n return await queryAll<I18NLocale>({\n entity: this.localeEntity,\n partitionKey: `T#${tenant.data.id}#I18N#L`,\n options: {\n gte: \" \"\n }\n });\n }\n}\n"],"mappings":";;;;;;AAGA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AACA,IAAAG,mBAAA,GAAAH,OAAA;AAEA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AAEA,MAAMM,yBAAyB,GAC3BC,MAA8C,IAC1B;EACpB,OAAO,OAAOA,MAAM,KAAK,SAAS;AACtC,CAAC;AAED,MAAMC,eAAe,GAAIC,KAAwB,IAAc;EAC3D,MAAMC,QAAQ,GAAGC,MAAM,CAACF,KAAK,CAACG,MAAM,CAACF,QAAQ,IAAI,EAAE,CAAC,CAACG,WAAW,CAAC,CAAC;EAClE,OAAOH,QAAQ,KAAKI,sBAAW;AACnC,CAAC;AAIM,MAAMC,gCAAgC,CAE7C;EAKIC,WAAWA,CAACC,KAAoC,EAAE;IAC9C,IAAI,CAACC,WAAW,GAAG,IAAAC,uCAAoB,EAACF,KAAK,CAAC;IAC9C,IAAI,CAACG,YAAY,GAAG,IAAAC,sCAAkB,EAACJ,KAAK,CAAC;IAC7C,IAAI,CAACK,YAAY,GAAG,IAAAC,sCAAkB,EAACN,KAAK,CAAC;EACjD;EAEAO,KAAKA,CAAA,EAAG;IACJ,OAAO,mBAAmB;EAC9B;EAEAC,cAAcA,CAAA,EAAG;IACb,OAAO,iDAAiD;EAC5D;EAEA,MAAMC,aAAaA,CAAC;IAAEC;EAA6B,CAAC,EAAoB;IACpE,MAAMC,OAAO,GAAG,MAAM,IAAI,CAACC,WAAW,CAAC,CAAC;IACxC,IAAID,OAAO,CAACE,MAAM,KAAK,CAAC,EAAE;MACtBH,MAAM,CAACI,IAAI,CAAE,qDAAoD,CAAC;MAClE,OAAO,KAAK;IAChB;IAEA,KAAK,MAAMC,MAAM,IAAIJ,OAAO,EAAE;MAC1B,MAAMK,OAAO,GAAG,MAAM,IAAI,CAACC,WAAW,CAAC;QAAEF;MAAO,CAAC,CAAC;MAClD,IAAIC,OAAO,CAACH,MAAM,KAAK,CAAC,EAAE;QACtBH,MAAM,CAACI,IAAI,CAAE,+BAA8BC,MAAM,CAACG,IAAI,CAACC,EAAG,IAAG,CAAC;QAC9D;MACJ;MAEA,KAAK,MAAMC,MAAM,IAAIJ,OAAO,EAAE;QAC1B,MAAMK,OAAO,GAAG,MAAM,IAAAC,gBAAQ,EAAoB;UAC9CC,MAAM,EAAE,IAAI,CAACtB,WAAW;UACxBuB,YAAY,EAAG,KAAIT,MAAM,CAACG,IAAI,CAACC,EAAG,MAAKC,MAAM,CAACK,IAAK,cAAaC,8BAAoB,IAAG;UACvFC,OAAO,EAAE;YACLC,KAAK,EAAE,MAAM;YACbC,EAAE,EAAE;UACR;QACJ,CAAC,CAAC;QAEF,IAAI,CAACR,OAAO,CAACS,IAAI,CAACvC,eAAe,CAAC,EAAE;UAChC;QACJ;QAEA,OAAO,IAAI;MACf;IACJ;IACA,OAAO,KAAK;EAChB;EAEA,MAAMwC,OAAOA,CAAC;IAAErB,MAAM;IAAE,GAAGsB;EAA8B,CAAC,EAAiB;IACvE,MAAMrB,OAAO,GAAG,MAAM,IAAI,CAACC,WAAW,CAAC,CAAC;IAExC,MAAMqB,eAAe,GAAGD,OAAO,CAACE,UAAU,IAAI,CAAC,CAAC;IAEhD,KAAK,MAAMnB,MAAM,IAAIJ,OAAO,EAAE;MAC1B,MAAMK,OAAO,GAAG,MAAM,IAAI,CAACC,WAAW,CAAC;QAAEF;MAAO,CAAC,CAAC;MAElD,MAAMoB,QAAQ,GAAGpB,MAAM,CAACG,IAAI,CAACC,EAAE;MAE/B,KAAK,MAAMC,MAAM,IAAIJ,OAAO,EAAE;QAC1B,MAAMoB,OAAO,GAAI,GAAED,QAAS,IAAGf,MAAM,CAACK,IAAK,EAAC;QAC5C,MAAMnC,MAAM,GAAG2C,eAAe,CAACG,OAAO,CAAC;QAEvC,MAAMC,UAAU,GAAGjB,MAAM,CAACK,IAAI;QAE9B,IAAIpC,yBAAyB,CAACC,MAAM,CAAC,EAAE;UACnC;QACJ;QAEA,IAAIgD,KAAK,GAAG,CAAC;QAEb,MAAM,IAAAC,+BAAuB,EACzB;UACIhB,MAAM,EAAE,IAAI,CAACtB,WAAW;UACxBuB,YAAY,EAAG,KAAIW,QAAS,MAAKE,UAAW,cAAaX,8BAAoB,IAAG;UAChFC,OAAO,EAAE;YACLC,KAAK,EAAE,MAAM;YACbC,EAAE,EAAEvC,MAAM,IAAI;UAClB;QACJ,CAAC,EACD,MAAM+B,OAAO,IAAI;UACbiB,KAAK,EAAE;UACP5B,MAAM,CAACI,IAAI,CACN,qBAAoBwB,KAAM,aAAYF,OAAQ,KAAIf,OAAO,CAACR,MAAO,mBACtE,CAAC;UAED,MAAM2B,KAAK,GAAG,MAAMnB,OAAO,CAACoB,MAAM,CAC9B,OAAOC,WAAsC,EAAEC,OAAO,KAAK;YACvD,MAAM;cAAEC,OAAO;cAAEjD,MAAM,EAAEkD;YAAc,CAAC,GAAGF,OAAO;YAElD,IAAI,CAACpD,eAAe,CAACoD,OAAO,CAAC,EAAE;cAC3B,OAAO,MAAMD,WAAW;YAC5B;YAEA,MAAM/C,MAAM,GAAG;cACX,GAAGkD,aAAa;cAChBpD,QAAQ,EAAE;YACd,CAAC;YAED,MAAMqD,WAAW,GAAG;cAChB,GAAGH,OAAO;cACVI,EAAE,EAAG,KAAIZ,QAAS,MAAKE,UAAW,gBAAeO,OAAQ,EAAC;cAC1DI,EAAE,EAAE,GAAG;cACPC,OAAO,EAAG,KAAId,QAAS,MAAKE,UAAW,cAAaX,8BAAoB,IAAG;cAC3EwB,OAAO,EAAEP,OAAO,CAACxB,EAAE;cACnBgC,IAAI,EAAE,aAAa;cACnBxD;YACJ,CAAC;YAED,MAAMyD,aAAa,GAAG;cAClB,GAAGT,OAAO;cACVI,EAAE,EAAG,KAAIZ,QAAS,MAAKE,UAAW,gBAAeO,OAAQ,EAAC;cAC1DI,EAAE,EAAG,UAAS;cACdC,OAAO,EAAG,KAAId,QAAS,MAAKE,UAAW,cAAaX,8BAAoB,IAAG;cAC3EwB,OAAO,EAAEP,OAAO,CAACxB,EAAE;cACnBgC,IAAI,EAAE,WAAW;cACjBxD;YACJ,CAAC;YAED,MAAM0D,GAAG,GAAG,MAAMX,WAAW;YAE7B,OAAO,CACH,GAAGW,GAAG,EACN,IAAI,CAACpD,WAAW,CAACqD,QAAQ,CAACR,WAAW,CAAC,EACtC,IAAI,CAAC7C,WAAW,CAACqD,QAAQ,CAACF,aAAa,CAAC,CAC3C;UACL,CAAC,EACDG,OAAO,CAACC,OAAO,CAAC,EAAE,CACtB,CAAC;UAED,MAAMzB,OAAO,GAAGA,CAAA,KAAM;YAClB,OAAO,IAAA0B,qBAAa,EAAC;cAAEzD,KAAK,EAAE,IAAI,CAACC,WAAW,CAACD,KAAK;cAAEwC;YAAM,CAAC,CAAC;UAClE,CAAC;UAED,MAAM,IAAAkB,uBAAgB,EAAC3B,OAAO,EAAE;YAC5B4B,eAAe,EAAEC,KAAK,IAAI;cACtBlD,MAAM,CAACkD,KAAK,CACP,4BAA2BA,KAAK,CAACC,aAAc,UACpD,CAAC;cACDnD,MAAM,CAACkD,KAAK,CAACA,KAAK,CAACE,OAAO,CAAC;YAC/B;UACJ,CAAC,CAAC;;UAEF;UACA7B,eAAe,CAACG,OAAO,CAAC,GAAGf,OAAO,CAACA,OAAO,CAACR,MAAM,GAAG,CAAC,CAAC,CAACM,EAAE;;UAEzD;UACA,IAAIa,OAAO,CAAC+B,gBAAgB,CAAC,CAAC,EAAE;YAC5B,MAAM/B,OAAO,CAACgC,uBAAuB,CAAC/B,eAAe,CAAC;UAC1D,CAAC,MAAM;YACH,MAAMD,OAAO,CAACiC,gBAAgB,CAAChC,eAAe,CAAC;UACnD;QACJ,CACJ,CAAC;QAEDA,eAAe,CAACG,OAAO,CAAC,GAAG,IAAI;QAC/BJ,OAAO,CAACiC,gBAAgB,CAAChC,eAAe,CAAC;MAC7C;IACJ;EACJ;EAEA,MAAcrB,WAAWA,CAAA,EAAsB;IAC3C,OAAO,MAAM,IAAAU,gBAAQ,EAAS;MAC1BC,MAAM,EAAE,IAAI,CAAClB,YAAY;MACzBmB,YAAY,EAAE,SAAS;MACvBG,OAAO,EAAE;QACLC,KAAK,EAAE,MAAM;QACbsC,GAAG,EAAE;MACT;IACJ,CAAC,CAAC;EACN;EAEA,MAAcjD,WAAWA,CAAC;IAAEF;EAA0B,CAAC,EAAyB;IAC5E,OAAO,MAAM,IAAAO,gBAAQ,EAAa;MAC9BC,MAAM,EAAE,IAAI,CAACpB,YAAY;MACzBqB,YAAY,EAAG,KAAIT,MAAM,CAACG,IAAI,CAACC,EAAG,SAAQ;MAC1CQ,OAAO,EAAE;QACLuC,GAAG,EAAE;MACT;IACJ,CAAC,CAAC;EACN;AACJ;AAACC,OAAA,CAAArE,gCAAA,GAAAA,gCAAA"}
1
+ {"version":3,"names":["_utils","require","_createEntryEntity","_createLocaleEntity","_createTenantEntity","_utils2","_constants","isGroupMigrationCompleted","status","hasAcoFolderBug","entry","parentId","String","values","toLowerCase","ROOT_FOLDER","AcoRecords_5_37_0_003_AcoFolders","constructor","table","entryEntity","createDdbEntryEntity","localeEntity","createLocaleEntity","tenantEntity","createTenantEntity","getId","getDescription","shouldExecute","logger","tenants","listTenants","length","info","tenant","locales","listLocales","data","id","locale","folders","queryAll","entity","partitionKey","code","ACO_FOLDER_MODEL_ID","options","index","gt","some","execute","context","migrationStatus","checkpoint","tenantId","groupId","localeCode","batch","ddbQueryAllWithCallback","items","reduce","accumulator","current","entryId","initialValues","latestEntry","PK","SK","GSI1_PK","GSI1_SK","TYPE","revisionEntry","acc","putBatch","Promise","resolve","batchWriteAll","executeWithRetry","onFailedAttempt","error","attemptNumber","message","runningOutOfTime","createCheckpointAndExit","createCheckpoint","gte","exports"],"sources":["AcoFolderMigration.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { DataMigration, DataMigrationContext } from \"@webiny/data-migration\";\nimport { PrimitiveValue } from \"@webiny/api-elasticsearch/types\";\nimport { executeWithRetry } from \"@webiny/utils\";\nimport { createDdbEntryEntity } from \"../entities/createEntryEntity\";\nimport { createLocaleEntity } from \"../entities/createLocaleEntity\";\nimport { createTenantEntity } from \"../entities/createTenantEntity\";\nimport { CmsEntryAcoFolder, I18NLocale, ListLocalesParams, Tenant } from \"../types\";\nimport { batchWriteAll, BatchWriteItem, ddbQueryAllWithCallback, queryAll } from \"~/utils\";\nimport { ACO_FOLDER_MODEL_ID, ROOT_FOLDER } from \"../constants\";\n\nconst isGroupMigrationCompleted = (\n status: PrimitiveValue[] | boolean | undefined\n): status is boolean => {\n return typeof status === \"boolean\";\n};\n\nconst hasAcoFolderBug = (entry: CmsEntryAcoFolder): boolean => {\n const parentId = String(entry.values.parentId || \"\").toLowerCase();\n return parentId === ROOT_FOLDER;\n};\n\nexport type AcoFolderMigrationCheckpoint = Record<string, string | boolean | undefined>;\n\nexport class AcoRecords_5_37_0_003_AcoFolders\n implements DataMigration<AcoFolderMigrationCheckpoint>\n{\n private readonly entryEntity: ReturnType<typeof createDdbEntryEntity>;\n private readonly localeEntity: ReturnType<typeof createLocaleEntity>;\n private readonly tenantEntity: ReturnType<typeof createTenantEntity>;\n\n constructor(table: Table<string, string, string>) {\n this.entryEntity = createDdbEntryEntity(table);\n this.localeEntity = createLocaleEntity(table);\n this.tenantEntity = createTenantEntity(table);\n }\n\n getId() {\n return \"AcoFolderParentId\";\n }\n\n getDescription() {\n return \"Fix the ACO Folders having set ROOT as parentId\";\n }\n\n async shouldExecute({ logger }: DataMigrationContext): Promise<boolean> {\n const tenants = await this.listTenants();\n if (tenants.length === 0) {\n logger.info(`No tenants found in the system; skipping migration.`);\n return false;\n }\n\n for (const tenant of tenants) {\n const locales = await this.listLocales({ tenant });\n if (locales.length === 0) {\n logger.info(`No locales found in tenant \"${tenant.data.id}\".`);\n continue;\n }\n\n for (const locale of locales) {\n const folders = await queryAll<CmsEntryAcoFolder>({\n entity: this.entryEntity,\n partitionKey: `T#${tenant.data.id}#L#${locale.code}#CMS#CME#M#${ACO_FOLDER_MODEL_ID}#A`,\n options: {\n index: \"GSI1\",\n gt: \" \"\n }\n });\n\n if (!folders.some(hasAcoFolderBug)) {\n continue;\n }\n\n return true;\n }\n }\n return false;\n }\n\n async execute({ logger, ...context }: DataMigrationContext): Promise<void> {\n const tenants = await this.listTenants();\n\n const migrationStatus = context.checkpoint || {};\n\n for (const tenant of tenants) {\n const locales = await this.listLocales({ tenant });\n\n const tenantId = tenant.data.id;\n\n for (const locale of locales) {\n const groupId = `${tenantId}:${locale.code}`;\n const status = migrationStatus[groupId];\n\n const localeCode = locale.code;\n\n if (isGroupMigrationCompleted(status)) {\n continue;\n }\n\n let batch = 0;\n\n await ddbQueryAllWithCallback<CmsEntryAcoFolder>(\n {\n entity: this.entryEntity,\n partitionKey: `T#${tenantId}#L#${localeCode}#CMS#CME#M#${ACO_FOLDER_MODEL_ID}#A`,\n options: {\n index: \"GSI1\",\n gt: status || \" \"\n }\n },\n async folders => {\n batch++;\n logger.info(\n `Processing batch #${batch} in group ${groupId} (${folders.length} folder entries).`\n );\n\n const items = await folders.reduce<Promise<BatchWriteItem[]>>(\n async (accumulator: Promise<BatchWriteItem[]>, current) => {\n const { entryId, values: initialValues } = current;\n\n if (!hasAcoFolderBug(current)) {\n return await accumulator;\n }\n\n const values = {\n ...initialValues,\n parentId: null\n };\n\n const latestEntry = {\n ...current,\n PK: `T#${tenantId}#L#${localeCode}#CMS#CME#CME#${entryId}`,\n SK: \"L\",\n GSI1_PK: `T#${tenantId}#L#${localeCode}#CMS#CME#M#${ACO_FOLDER_MODEL_ID}#L`,\n GSI1_SK: current.id,\n TYPE: \"cms.entry.l\",\n values\n };\n\n const revisionEntry = {\n ...current,\n PK: `T#${tenantId}#L#${localeCode}#CMS#CME#CME#${entryId}`,\n SK: `REV#0001`,\n GSI1_PK: `T#${tenantId}#L#${localeCode}#CMS#CME#M#${ACO_FOLDER_MODEL_ID}#A`,\n GSI1_SK: current.id,\n TYPE: \"cms.entry\",\n values\n };\n\n const acc = await accumulator;\n\n return [\n ...acc,\n this.entryEntity.putBatch(latestEntry),\n this.entryEntity.putBatch(revisionEntry)\n ];\n },\n Promise.resolve([])\n );\n\n const execute = () => {\n return batchWriteAll({ table: this.entryEntity.table, items });\n };\n\n await executeWithRetry(execute, {\n onFailedAttempt: error => {\n logger.error(\n `\"batchWriteAll\" attempt #${error.attemptNumber} failed.`\n );\n logger.error(error.message);\n }\n });\n\n // Update checkpoint after every batch\n migrationStatus[groupId] = folders[folders.length - 1].id;\n\n // Check if we should store checkpoint and exit.\n if (context.runningOutOfTime()) {\n await context.createCheckpointAndExit(migrationStatus);\n } else {\n await context.createCheckpoint(migrationStatus);\n }\n }\n );\n\n migrationStatus[groupId] = true;\n context.createCheckpoint(migrationStatus);\n }\n }\n }\n\n private async listTenants(): Promise<Tenant[]> {\n return await queryAll<Tenant>({\n entity: this.tenantEntity,\n partitionKey: \"TENANTS\",\n options: {\n index: \"GSI1\",\n gte: \" \"\n }\n });\n }\n\n private async listLocales({ tenant }: ListLocalesParams): Promise<I18NLocale[]> {\n return await queryAll<I18NLocale>({\n entity: this.localeEntity,\n partitionKey: `T#${tenant.data.id}#I18N#L`,\n options: {\n gte: \" \"\n }\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_ioc","require","_dataMigration","_AcoFolderMigration","AcoFolders_5_37_0_003","constructor","table","migrations","AcoRecords_5_37_0_003_AcoFolders","getId","getDescription","shouldExecute","context","migration","childLogger","getChildLogger","logger","childContext","execute","exports","makeInjectable","inject","PrimaryDynamoTableSymbol"],"sources":["index.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { inject, makeInjectable } from \"@webiny/ioc\";\nimport {\n DataMigration,\n DataMigrationContext,\n getChildLogger,\n PrimaryDynamoTableSymbol\n} from \"@webiny/data-migration\";\nimport { AcoRecords_5_37_0_003_AcoFolders } from \"./AcoFolderMigration\";\n\nexport class AcoFolders_5_37_0_003 implements DataMigration {\n private readonly migrations: DataMigration[];\n\n public constructor(table: Table<string, string, string>) {\n this.migrations = [new AcoRecords_5_37_0_003_AcoFolders(table)];\n }\n\n public getId() {\n return \"5.37.0-003\";\n }\n\n public getDescription() {\n return \"ACO Folder parentId migration\";\n }\n\n async shouldExecute(context: DataMigrationContext): Promise<boolean> {\n for (const migration of this.migrations) {\n const childLogger = getChildLogger(context.logger, migration);\n const childContext = { ...context, logger: childLogger };\n if (await migration.shouldExecute(childContext)) {\n return true;\n }\n }\n return false;\n }\n\n async execute(context: DataMigrationContext): Promise<void> {\n for (const migration of this.migrations) {\n const childLogger = getChildLogger(context.logger, migration);\n const childContext = { ...context, logger: childLogger };\n if (await migration.shouldExecute(childContext)) {\n await migration.execute(childContext);\n }\n }\n }\n}\n\nmakeInjectable(AcoFolders_5_37_0_003, [inject(PrimaryDynamoTableSymbol)]);\n"],"mappings":";;;;;;AACA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAMA,IAAAE,mBAAA,GAAAF,OAAA;AAEO,MAAMG,qBAAqB,CAA0B;EAGjDC,WAAWA,CAACC,KAAoC,EAAE;IACrD,IAAI,CAACC,UAAU,GAAG,CAAC,IAAIC,oDAAgC,CAACF,KAAK,CAAC,CAAC;EACnE;EAEOG,KAAKA,CAAA,EAAG;IACX,OAAO,YAAY;EACvB;EAEOC,cAAcA,CAAA,EAAG;IACpB,OAAO,+BAA+B;EAC1C;EAEA,MAAMC,aAAaA,CAACC,OAA6B,EAAoB;IACjE,KAAK,MAAMC,SAAS,IAAI,IAAI,CAACN,UAAU,EAAE;MACrC,MAAMO,WAAW,GAAG,IAAAC,6BAAc,EAACH,OAAO,CAACI,MAAM,EAAEH,SAAS,CAAC;MAC7D,MAAMI,YAAY,GAAG;QAAE,GAAGL,OAAO;QAAEI,MAAM,EAAEF;MAAY,CAAC;MACxD,IAAI,MAAMD,SAAS,CAACF,aAAa,CAACM,YAAY,CAAC,EAAE;QAC7C,OAAO,IAAI;MACf;IACJ;IACA,OAAO,KAAK;EAChB;EAEA,MAAMC,OAAOA,CAACN,OAA6B,EAAiB;IACxD,KAAK,MAAMC,SAAS,IAAI,IAAI,CAACN,UAAU,EAAE;MACrC,MAAMO,WAAW,GAAG,IAAAC,6BAAc,EAACH,OAAO,CAACI,MAAM,EAAEH,SAAS,CAAC;MAC7D,MAAMI,YAAY,GAAG;QAAE,GAAGL,OAAO;QAAEI,MAAM,EAAEF;MAAY,CAAC;MACxD,IAAI,MAAMD,SAAS,CAACF,aAAa,CAACM,YAAY,CAAC,EAAE;QAC7C,MAAMJ,SAAS,CAACK,OAAO,CAACD,YAAY,CAAC;MACzC;IACJ;EACJ;AACJ;AAACE,OAAA,CAAAf,qBAAA,GAAAA,qBAAA;AAED,IAAAgB,mBAAc,EAAChB,qBAAqB,EAAE,CAAC,IAAAiB,WAAM,EAACC,uCAAwB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"names":["_ioc","require","_dataMigration","_AcoFolderMigration","AcoFolders_5_37_0_003","constructor","table","migrations","AcoRecords_5_37_0_003_AcoFolders","getId","getDescription","shouldExecute","context","migration","childLogger","getChildLogger","logger","childContext","execute","exports","makeInjectable","inject","PrimaryDynamoTableSymbol"],"sources":["index.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { inject, makeInjectable } from \"@webiny/ioc\";\nimport {\n DataMigration,\n DataMigrationContext,\n getChildLogger,\n PrimaryDynamoTableSymbol\n} from \"@webiny/data-migration\";\nimport { AcoRecords_5_37_0_003_AcoFolders } from \"./AcoFolderMigration\";\n\nexport class AcoFolders_5_37_0_003 implements DataMigration {\n private readonly migrations: DataMigration[];\n\n public constructor(table: Table<string, string, string>) {\n this.migrations = [new AcoRecords_5_37_0_003_AcoFolders(table)];\n }\n\n public getId() {\n return \"5.37.0-003\";\n }\n\n public getDescription() {\n return \"ACO Folder parentId migration\";\n }\n\n async shouldExecute(context: DataMigrationContext): Promise<boolean> {\n for (const migration of this.migrations) {\n const childLogger = getChildLogger(context.logger, migration);\n const childContext = { ...context, logger: childLogger };\n if (await migration.shouldExecute(childContext)) {\n return true;\n }\n }\n return false;\n }\n\n async execute(context: DataMigrationContext): Promise<void> {\n for (const migration of this.migrations) {\n const childLogger = getChildLogger(context.logger, migration);\n const childContext = { ...context, logger: childLogger };\n if (await migration.shouldExecute(childContext)) {\n await migration.execute(childContext);\n }\n }\n }\n}\n\nmakeInjectable(AcoFolders_5_37_0_003, [inject(PrimaryDynamoTableSymbol)]);\n"],"mappings":";;;;;;AACA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAMA,IAAAE,mBAAA,GAAAF,OAAA;AAEO,MAAMG,qBAAqB,CAA0B;EAGjDC,WAAWA,CAACC,KAAoC,EAAE;IACrD,IAAI,CAACC,UAAU,GAAG,CAAC,IAAIC,oDAAgC,CAACF,KAAK,CAAC,CAAC;EACnE;EAEOG,KAAKA,CAAA,EAAG;IACX,OAAO,YAAY;EACvB;EAEOC,cAAcA,CAAA,EAAG;IACpB,OAAO,+BAA+B;EAC1C;EAEA,MAAMC,aAAaA,CAACC,OAA6B,EAAoB;IACjE,KAAK,MAAMC,SAAS,IAAI,IAAI,CAACN,UAAU,EAAE;MACrC,MAAMO,WAAW,GAAG,IAAAC,6BAAc,EAACH,OAAO,CAACI,MAAM,EAAEH,SAAS,CAAC;MAC7D,MAAMI,YAAY,GAAG;QAAE,GAAGL,OAAO;QAAEI,MAAM,EAAEF;MAAY,CAAC;MACxD,IAAI,MAAMD,SAAS,CAACF,aAAa,CAACM,YAAY,CAAC,EAAE;QAC7C,OAAO,IAAI;MACf;IACJ;IACA,OAAO,KAAK;EAChB;EAEA,MAAMC,OAAOA,CAACN,OAA6B,EAAiB;IACxD,KAAK,MAAMC,SAAS,IAAI,IAAI,CAACN,UAAU,EAAE;MACrC,MAAMO,WAAW,GAAG,IAAAC,6BAAc,EAACH,OAAO,CAACI,MAAM,EAAEH,SAAS,CAAC;MAC7D,MAAMI,YAAY,GAAG;QAAE,GAAGL,OAAO;QAAEI,MAAM,EAAEF;MAAY,CAAC;MACxD,IAAI,MAAMD,SAAS,CAACF,aAAa,CAACM,YAAY,CAAC,EAAE;QAC7C,MAAMJ,SAAS,CAACK,OAAO,CAACD,YAAY,CAAC;MACzC;IACJ;EACJ;AACJ;AAACE,OAAA,CAAAf,qBAAA,GAAAA,qBAAA;AAED,IAAAgB,mBAAc,EAAChB,qBAAqB,EAAE,CAAC,IAAAiB,WAAM,EAACC,uCAAwB,CAAC,CAAC,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_utils","require","_createLocaleEntity","_createTenantEntity","_createEntryEntity","_utils2","_constants","_latestElasticsearchData","_getDecompressedData","isGroupMigrationCompleted","status","hasBuggedParent","folder","parentId","values","toLowerCase","ROOT_FOLDER","AcoRecords_5_37_0_003_AcoFolder","constructor","table","esTable","elasticsearchClient","ddbEntryEntity","createDdbEntryEntity","ddbEsEntryEntity","createDdbEsEntryEntity","localeEntity","createLocaleEntity","tenantEntity","createTenantEntity","getId","getDescription","createElasticsearchFolderBody","tenant","locale","query","bool","filter","term","should","UPPERCASE_ROOT_FOLDER","minimum_should_match","latest","sort","shouldExecute","logger","tenants","listTenants","length","info","locales","listLocales","data","id","indexExists","esGetIndexExist","code","type","ACO_FOLDER_MODEL_ID","isHeadlessCmsModel","body","esFindOne","index","esGetIndexName","undefined","execute","context","migrationStatus","checkpoint","tenantId","localeCode","groupId","batch","foldersIndexName","esQueryAllWithCallback","size","search_after","onError","error","x","JSON","stringify","includes","callback","folders","cursor","ddbItems","ddbEsItems","folderPk","entryId","ddbFolder","get","entity","keys","PK","SK","warn","latestDdb","TYPE","revisionDdb","push","putBatch","esLatestRecord","esRecord","getDecompressedData","esLatestData","getElasticsearchLatestEntryData","latestDdbEs","executeDdb","batchWriteAll","items","executeDdbEs","executeWithRetry","onFailedAttempt","attemptNumber","message","runningOutOfTime","createCheckpointAndExit","createCheckpoint","queryAll","partitionKey","options","gte","exports"],"sources":["AcoFolderMigration.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { Client } from \"@elastic/elasticsearch\";\nimport { PrimitiveValue, SearchBody } from \"@webiny/api-elasticsearch/types\";\nimport { DataMigration, DataMigrationContext } from \"@webiny/data-migration\";\nimport { executeWithRetry } from \"@webiny/utils\";\nimport { createLocaleEntity } from \"../entities/createLocaleEntity\";\nimport { createTenantEntity } from \"../entities/createTenantEntity\";\nimport { createDdbEntryEntity, createDdbEsEntryEntity } from \"../entities/createEntryEntity\";\nimport {\n batchWriteAll,\n BatchWriteItem,\n esFindOne,\n esGetIndexExist,\n esGetIndexName,\n esQueryAllWithCallback,\n get,\n queryAll\n} from \"~/utils\";\nimport { CmsEntryAcoFolder, I18NLocale, ListLocalesParams, Tenant } from \"../types\";\nimport { ACO_FOLDER_MODEL_ID, ROOT_FOLDER, UPPERCASE_ROOT_FOLDER } from \"../constants\";\nimport { getElasticsearchLatestEntryData } from \"./latestElasticsearchData\";\nimport { getDecompressedData } from \"~/migrations/5.37.0/003/utils/getDecompressedData\";\n\nconst isGroupMigrationCompleted = (\n status: PrimitiveValue[] | boolean | undefined\n): status is boolean => {\n return typeof status === \"boolean\";\n};\n\nconst hasBuggedParent = (folder: CmsEntryAcoFolder): boolean => {\n const parentId = (folder.values.parentId || \"\").toLowerCase();\n return parentId === ROOT_FOLDER;\n};\n\nexport type AcoFolderDataMigrationCheckpoint = Record<\n string,\n PrimitiveValue[] | boolean | undefined\n>;\n\ninterface CmsEntryAcoFolderElasticsearchRecord {\n PK: string;\n SK: string;\n index: string;\n data: any;\n}\n\nexport class AcoRecords_5_37_0_003_AcoFolder\n implements DataMigration<AcoFolderDataMigrationCheckpoint>\n{\n private readonly elasticsearchClient: Client;\n private readonly ddbEntryEntity: ReturnType<typeof createDdbEntryEntity>;\n private readonly ddbEsEntryEntity: ReturnType<typeof createDdbEsEntryEntity>;\n private readonly localeEntity: ReturnType<typeof createLocaleEntity>;\n private readonly tenantEntity: ReturnType<typeof createTenantEntity>;\n\n constructor(\n table: Table<string, string, string>,\n esTable: Table<string, string, string>,\n elasticsearchClient: Client\n ) {\n this.elasticsearchClient = elasticsearchClient;\n this.ddbEntryEntity = createDdbEntryEntity(table);\n this.ddbEsEntryEntity = createDdbEsEntryEntity(esTable);\n this.localeEntity = createLocaleEntity(table);\n this.tenantEntity = createTenantEntity(table);\n }\n\n getId() {\n return \"AcoFolderParentId\";\n }\n\n getDescription() {\n return \"Fix the ACO Folders having set ROOT as parentId\";\n }\n\n private createElasticsearchFolderBody(tenant: string, locale: string): Partial<SearchBody> {\n return {\n query: {\n bool: {\n filter: [\n { term: { \"tenant.keyword\": tenant } },\n { term: { \"locale.keyword\": locale } },\n {\n bool: {\n should: [\n {\n term: {\n \"values.parentId.keyword\": ROOT_FOLDER\n }\n },\n {\n term: {\n \"values.parentId.keyword\": UPPERCASE_ROOT_FOLDER\n }\n }\n ],\n minimum_should_match: 1\n }\n },\n { term: { latest: true } }\n ]\n }\n },\n sort: [\n {\n \"id.keyword\": \"asc\"\n }\n ]\n };\n }\n\n async shouldExecute({ logger }: DataMigrationContext): Promise<boolean> {\n const tenants = await this.listTenants();\n if (tenants.length === 0) {\n logger.info(`No tenants found in the system; skipping migration.`);\n return false;\n }\n\n for (const tenant of tenants) {\n const locales = await this.listLocales({ tenant });\n if (locales.length === 0) {\n logger.info(`No locales found in tenant \"${tenant.data.id}\".`);\n continue;\n }\n\n for (const locale of locales) {\n // there is an index? NO -> skip\n const indexExists = await esGetIndexExist({\n elasticsearchClient: this.elasticsearchClient,\n tenant: tenant.data.id,\n locale: locale.code,\n type: ACO_FOLDER_MODEL_ID,\n isHeadlessCmsModel: true\n });\n\n if (!indexExists) {\n logger.info(\n `No Elasticsearch index found for folders in tenant \"${tenant.data.id}\" and locale \"${locale.code}\"; skipping.`\n );\n continue;\n }\n\n const body = this.createElasticsearchFolderBody(tenant.data.id, locale.code);\n const folder = await esFindOne<CmsEntryAcoFolder>({\n elasticsearchClient: this.elasticsearchClient,\n index: esGetIndexName({\n tenant: tenant.data.id,\n locale: locale.code,\n type: ACO_FOLDER_MODEL_ID,\n isHeadlessCmsModel: true\n }),\n body: {\n ...body,\n sort: undefined\n }\n });\n if (!folder) {\n logger.info(\n `No folder with wrong parentId found in tenant \"${tenant.data.id}\" and locale \"${locale.code}\"; skipping.`\n );\n continue;\n }\n\n return true;\n }\n }\n return false;\n }\n\n async execute({\n logger,\n ...context\n }: DataMigrationContext<AcoFolderDataMigrationCheckpoint>): Promise<void> {\n const tenants = await this.listTenants();\n\n const migrationStatus: AcoFolderDataMigrationCheckpoint = context.checkpoint || {};\n\n for (const tenant of tenants) {\n const locales = await this.listLocales({ tenant });\n\n const tenantId = tenant.data.id;\n\n for (const locale of locales) {\n const localeCode = locale.code;\n const groupId = `${tenantId}:${localeCode}`;\n\n const status = migrationStatus[groupId];\n\n if (isGroupMigrationCompleted(status)) {\n continue;\n }\n\n // there is an index? NO -> skip\n const indexExists = await esGetIndexExist({\n elasticsearchClient: this.elasticsearchClient,\n tenant: tenant.data.id,\n locale: locale.code,\n type: ACO_FOLDER_MODEL_ID,\n isHeadlessCmsModel: true\n });\n\n if (!indexExists) {\n /**\n * No need to do anything with this index as it doesn't exist - querying will produce error.\n */\n continue;\n }\n\n let batch = 0;\n\n const foldersIndexName = esGetIndexName({\n tenant: tenant.data.id,\n locale: locale.code,\n type: ACO_FOLDER_MODEL_ID,\n isHeadlessCmsModel: true\n });\n\n await esQueryAllWithCallback<CmsEntryAcoFolder>({\n elasticsearchClient: this.elasticsearchClient,\n index: foldersIndexName,\n body: {\n ...this.createElasticsearchFolderBody(tenantId, localeCode),\n size: 500,\n search_after: status\n },\n onError: error => {\n const x = JSON.stringify(error);\n if (x.includes(\"No mapping found\")) {\n return;\n }\n throw error;\n },\n callback: async (folders, cursor) => {\n batch++;\n logger.info(\n `Processing batch #${batch} in group ${groupId} (${folders.length} folders).`\n );\n\n const ddbItems: BatchWriteItem[] = [];\n const ddbEsItems: BatchWriteItem[] = [];\n\n for (const folder of folders) {\n const folderPk = `T#${tenantId}#L#${localeCode}#CMS#CME#${folder.entryId}`;\n const ddbFolder = await get<CmsEntryAcoFolder>({\n entity: this.ddbEntryEntity,\n keys: {\n PK: folderPk,\n SK: \"REV#0001\"\n }\n });\n if (!ddbFolder) {\n logger.warn(\n `Missing DDB item with PK \"${folderPk}\", SK \"REV#0001\"; skipping.`\n );\n continue;\n } else if (!hasBuggedParent(ddbFolder)) {\n continue;\n }\n\n const values = {\n ...ddbFolder.values,\n parentId: null\n };\n\n const latestDdb = {\n ...ddbFolder,\n values,\n PK: folderPk,\n SK: \"L\",\n TYPE: \"cms.entry.l\"\n };\n\n const revisionDdb = {\n ...ddbFolder,\n values,\n PK: folderPk,\n SK: \"REV#0001\",\n TYPE: \"cms.entry\"\n };\n\n ddbItems.push(\n this.ddbEntryEntity.putBatch(latestDdb),\n this.ddbEntryEntity.putBatch(revisionDdb)\n );\n\n const esLatestRecord = await get<CmsEntryAcoFolderElasticsearchRecord>({\n entity: this.ddbEsEntryEntity,\n keys: {\n PK: folderPk,\n SK: \"L\"\n }\n });\n if (!esLatestRecord) {\n continue;\n }\n\n const esRecord = await getDecompressedData<CmsEntryAcoFolder>(\n esLatestRecord.data\n );\n if (!esRecord) {\n continue;\n }\n\n const esLatestData = await getElasticsearchLatestEntryData({\n ...esRecord,\n values: {\n ...esRecord.values,\n parentId: null\n }\n });\n\n const latestDdbEs = {\n PK: folderPk,\n SK: \"L\",\n data: esLatestData,\n index: foldersIndexName\n };\n\n ddbEsItems.push(this.ddbEsEntryEntity.putBatch(latestDdbEs));\n }\n\n const executeDdb = () => {\n return batchWriteAll({\n table: this.ddbEntryEntity.table,\n items: ddbItems\n });\n };\n\n const executeDdbEs = () => {\n return batchWriteAll({\n table: this.ddbEsEntryEntity.table,\n items: ddbEsItems\n });\n };\n\n await executeWithRetry(executeDdb, {\n onFailedAttempt: error => {\n logger.error(\n `\"batchWriteAll ddb\" attempt #${error.attemptNumber} failed.`\n );\n logger.error(error.message);\n }\n });\n\n await executeWithRetry(executeDdbEs, {\n onFailedAttempt: error => {\n logger.error(\n `\"batchWriteAll ddb + es\" attempt #${error.attemptNumber} failed.`\n );\n logger.error(error.message);\n }\n });\n\n // Update checkpoint after every batch\n migrationStatus[groupId] = cursor;\n\n // Check if we should store checkpoint and exit.\n if (context.runningOutOfTime()) {\n await context.createCheckpointAndExit(migrationStatus);\n } else {\n await context.createCheckpoint(migrationStatus);\n }\n }\n });\n\n migrationStatus[groupId] = true;\n await context.createCheckpoint(migrationStatus);\n }\n }\n }\n\n private async listTenants(): Promise<Tenant[]> {\n return await queryAll<Tenant>({\n entity: this.tenantEntity,\n partitionKey: \"TENANTS\",\n options: {\n index: \"GSI1\",\n gte: \" \"\n }\n });\n }\n\n private async listLocales({ tenant }: ListLocalesParams): Promise<I18NLocale[]> {\n return await queryAll<I18NLocale>({\n entity: this.localeEntity,\n partitionKey: `T#${tenant.data.id}#I18N#L`,\n options: {\n gte: \" \"\n }\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_utils","require","_createLocaleEntity","_createTenantEntity","_createEntryEntity","_utils2","_constants","_latestElasticsearchData","_getDecompressedData","isGroupMigrationCompleted","status","hasBuggedParent","folder","parentId","values","toLowerCase","ROOT_FOLDER","AcoRecords_5_37_0_003_AcoFolder","constructor","table","esTable","elasticsearchClient","ddbEntryEntity","createDdbEntryEntity","ddbEsEntryEntity","createDdbEsEntryEntity","localeEntity","createLocaleEntity","tenantEntity","createTenantEntity","getId","getDescription","createElasticsearchFolderBody","tenant","locale","query","bool","filter","term","should","UPPERCASE_ROOT_FOLDER","minimum_should_match","latest","sort","shouldExecute","logger","tenants","listTenants","length","info","locales","listLocales","data","id","indexExists","esGetIndexExist","code","type","ACO_FOLDER_MODEL_ID","isHeadlessCmsModel","body","esFindOne","index","esGetIndexName","undefined","execute","context","migrationStatus","checkpoint","tenantId","localeCode","groupId","batch","foldersIndexName","esQueryAllWithCallback","size","search_after","onError","error","x","JSON","stringify","includes","callback","folders","cursor","ddbItems","ddbEsItems","folderPk","entryId","ddbFolder","get","entity","keys","PK","SK","warn","latestDdb","TYPE","revisionDdb","push","putBatch","esLatestRecord","esRecord","getDecompressedData","esLatestData","getElasticsearchLatestEntryData","latestDdbEs","executeDdb","batchWriteAll","items","executeDdbEs","executeWithRetry","onFailedAttempt","attemptNumber","message","runningOutOfTime","createCheckpointAndExit","createCheckpoint","queryAll","partitionKey","options","gte","exports"],"sources":["AcoFolderMigration.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { Client } from \"@elastic/elasticsearch\";\nimport { PrimitiveValue, SearchBody } from \"@webiny/api-elasticsearch/types\";\nimport { DataMigration, DataMigrationContext } from \"@webiny/data-migration\";\nimport { executeWithRetry } from \"@webiny/utils\";\nimport { createLocaleEntity } from \"../entities/createLocaleEntity\";\nimport { createTenantEntity } from \"../entities/createTenantEntity\";\nimport { createDdbEntryEntity, createDdbEsEntryEntity } from \"../entities/createEntryEntity\";\nimport {\n batchWriteAll,\n BatchWriteItem,\n esFindOne,\n esGetIndexExist,\n esGetIndexName,\n esQueryAllWithCallback,\n get,\n queryAll\n} from \"~/utils\";\nimport { CmsEntryAcoFolder, I18NLocale, ListLocalesParams, Tenant } from \"../types\";\nimport { ACO_FOLDER_MODEL_ID, ROOT_FOLDER, UPPERCASE_ROOT_FOLDER } from \"../constants\";\nimport { getElasticsearchLatestEntryData } from \"./latestElasticsearchData\";\nimport { getDecompressedData } from \"~/migrations/5.37.0/003/utils/getDecompressedData\";\n\nconst isGroupMigrationCompleted = (\n status: PrimitiveValue[] | boolean | undefined\n): status is boolean => {\n return typeof status === \"boolean\";\n};\n\nconst hasBuggedParent = (folder: CmsEntryAcoFolder): boolean => {\n const parentId = (folder.values.parentId || \"\").toLowerCase();\n return parentId === ROOT_FOLDER;\n};\n\nexport type AcoFolderDataMigrationCheckpoint = Record<\n string,\n PrimitiveValue[] | boolean | undefined\n>;\n\ninterface CmsEntryAcoFolderElasticsearchRecord {\n PK: string;\n SK: string;\n index: string;\n data: any;\n}\n\nexport class AcoRecords_5_37_0_003_AcoFolder\n implements DataMigration<AcoFolderDataMigrationCheckpoint>\n{\n private readonly elasticsearchClient: Client;\n private readonly ddbEntryEntity: ReturnType<typeof createDdbEntryEntity>;\n private readonly ddbEsEntryEntity: ReturnType<typeof createDdbEsEntryEntity>;\n private readonly localeEntity: ReturnType<typeof createLocaleEntity>;\n private readonly tenantEntity: ReturnType<typeof createTenantEntity>;\n\n constructor(\n table: Table<string, string, string>,\n esTable: Table<string, string, string>,\n elasticsearchClient: Client\n ) {\n this.elasticsearchClient = elasticsearchClient;\n this.ddbEntryEntity = createDdbEntryEntity(table);\n this.ddbEsEntryEntity = createDdbEsEntryEntity(esTable);\n this.localeEntity = createLocaleEntity(table);\n this.tenantEntity = createTenantEntity(table);\n }\n\n getId() {\n return \"AcoFolderParentId\";\n }\n\n getDescription() {\n return \"Fix the ACO Folders having set ROOT as parentId\";\n }\n\n private createElasticsearchFolderBody(tenant: string, locale: string): Partial<SearchBody> {\n return {\n query: {\n bool: {\n filter: [\n { term: { \"tenant.keyword\": tenant } },\n { term: { \"locale.keyword\": locale } },\n {\n bool: {\n should: [\n {\n term: {\n \"values.parentId.keyword\": ROOT_FOLDER\n }\n },\n {\n term: {\n \"values.parentId.keyword\": UPPERCASE_ROOT_FOLDER\n }\n }\n ],\n minimum_should_match: 1\n }\n },\n { term: { latest: true } }\n ]\n }\n },\n sort: [\n {\n \"id.keyword\": \"asc\"\n }\n ]\n };\n }\n\n async shouldExecute({ logger }: DataMigrationContext): Promise<boolean> {\n const tenants = await this.listTenants();\n if (tenants.length === 0) {\n logger.info(`No tenants found in the system; skipping migration.`);\n return false;\n }\n\n for (const tenant of tenants) {\n const locales = await this.listLocales({ tenant });\n if (locales.length === 0) {\n logger.info(`No locales found in tenant \"${tenant.data.id}\".`);\n continue;\n }\n\n for (const locale of locales) {\n // there is an index? NO -> skip\n const indexExists = await esGetIndexExist({\n elasticsearchClient: this.elasticsearchClient,\n tenant: tenant.data.id,\n locale: locale.code,\n type: ACO_FOLDER_MODEL_ID,\n isHeadlessCmsModel: true\n });\n\n if (!indexExists) {\n logger.info(\n `No Elasticsearch index found for folders in tenant \"${tenant.data.id}\" and locale \"${locale.code}\"; skipping.`\n );\n continue;\n }\n\n const body = this.createElasticsearchFolderBody(tenant.data.id, locale.code);\n const folder = await esFindOne<CmsEntryAcoFolder>({\n elasticsearchClient: this.elasticsearchClient,\n index: esGetIndexName({\n tenant: tenant.data.id,\n locale: locale.code,\n type: ACO_FOLDER_MODEL_ID,\n isHeadlessCmsModel: true\n }),\n body: {\n ...body,\n sort: undefined\n }\n });\n if (!folder) {\n logger.info(\n `No folder with wrong parentId found in tenant \"${tenant.data.id}\" and locale \"${locale.code}\"; skipping.`\n );\n continue;\n }\n\n return true;\n }\n }\n return false;\n }\n\n async execute({\n logger,\n ...context\n }: DataMigrationContext<AcoFolderDataMigrationCheckpoint>): Promise<void> {\n const tenants = await this.listTenants();\n\n const migrationStatus: AcoFolderDataMigrationCheckpoint = context.checkpoint || {};\n\n for (const tenant of tenants) {\n const locales = await this.listLocales({ tenant });\n\n const tenantId = tenant.data.id;\n\n for (const locale of locales) {\n const localeCode = locale.code;\n const groupId = `${tenantId}:${localeCode}`;\n\n const status = migrationStatus[groupId];\n\n if (isGroupMigrationCompleted(status)) {\n continue;\n }\n\n // there is an index? NO -> skip\n const indexExists = await esGetIndexExist({\n elasticsearchClient: this.elasticsearchClient,\n tenant: tenant.data.id,\n locale: locale.code,\n type: ACO_FOLDER_MODEL_ID,\n isHeadlessCmsModel: true\n });\n\n if (!indexExists) {\n /**\n * No need to do anything with this index as it doesn't exist - querying will produce error.\n */\n continue;\n }\n\n let batch = 0;\n\n const foldersIndexName = esGetIndexName({\n tenant: tenant.data.id,\n locale: locale.code,\n type: ACO_FOLDER_MODEL_ID,\n isHeadlessCmsModel: true\n });\n\n await esQueryAllWithCallback<CmsEntryAcoFolder>({\n elasticsearchClient: this.elasticsearchClient,\n index: foldersIndexName,\n body: {\n ...this.createElasticsearchFolderBody(tenantId, localeCode),\n size: 500,\n search_after: status\n },\n onError: error => {\n const x = JSON.stringify(error);\n if (x.includes(\"No mapping found\")) {\n return;\n }\n throw error;\n },\n callback: async (folders, cursor) => {\n batch++;\n logger.info(\n `Processing batch #${batch} in group ${groupId} (${folders.length} folders).`\n );\n\n const ddbItems: BatchWriteItem[] = [];\n const ddbEsItems: BatchWriteItem[] = [];\n\n for (const folder of folders) {\n const folderPk = `T#${tenantId}#L#${localeCode}#CMS#CME#${folder.entryId}`;\n const ddbFolder = await get<CmsEntryAcoFolder>({\n entity: this.ddbEntryEntity,\n keys: {\n PK: folderPk,\n SK: \"REV#0001\"\n }\n });\n if (!ddbFolder) {\n logger.warn(\n `Missing DDB item with PK \"${folderPk}\", SK \"REV#0001\"; skipping.`\n );\n continue;\n } else if (!hasBuggedParent(ddbFolder)) {\n continue;\n }\n\n const values = {\n ...ddbFolder.values,\n parentId: null\n };\n\n const latestDdb = {\n ...ddbFolder,\n values,\n PK: folderPk,\n SK: \"L\",\n TYPE: \"cms.entry.l\"\n };\n\n const revisionDdb = {\n ...ddbFolder,\n values,\n PK: folderPk,\n SK: \"REV#0001\",\n TYPE: \"cms.entry\"\n };\n\n ddbItems.push(\n this.ddbEntryEntity.putBatch(latestDdb),\n this.ddbEntryEntity.putBatch(revisionDdb)\n );\n\n const esLatestRecord = await get<CmsEntryAcoFolderElasticsearchRecord>({\n entity: this.ddbEsEntryEntity,\n keys: {\n PK: folderPk,\n SK: \"L\"\n }\n });\n if (!esLatestRecord) {\n continue;\n }\n\n const esRecord = await getDecompressedData<CmsEntryAcoFolder>(\n esLatestRecord.data\n );\n if (!esRecord) {\n continue;\n }\n\n const esLatestData = await getElasticsearchLatestEntryData({\n ...esRecord,\n values: {\n ...esRecord.values,\n parentId: null\n }\n });\n\n const latestDdbEs = {\n PK: folderPk,\n SK: \"L\",\n data: esLatestData,\n index: foldersIndexName\n };\n\n ddbEsItems.push(this.ddbEsEntryEntity.putBatch(latestDdbEs));\n }\n\n const executeDdb = () => {\n return batchWriteAll({\n table: this.ddbEntryEntity.table,\n items: ddbItems\n });\n };\n\n const executeDdbEs = () => {\n return batchWriteAll({\n table: this.ddbEsEntryEntity.table,\n items: ddbEsItems\n });\n };\n\n await executeWithRetry(executeDdb, {\n onFailedAttempt: error => {\n logger.error(\n `\"batchWriteAll ddb\" attempt #${error.attemptNumber} failed.`\n );\n logger.error(error.message);\n }\n });\n\n await executeWithRetry(executeDdbEs, {\n onFailedAttempt: error => {\n logger.error(\n `\"batchWriteAll ddb + es\" attempt #${error.attemptNumber} failed.`\n );\n logger.error(error.message);\n }\n });\n\n // Update checkpoint after every batch\n migrationStatus[groupId] = cursor;\n\n // Check if we should store checkpoint and exit.\n if (context.runningOutOfTime()) {\n await context.createCheckpointAndExit(migrationStatus);\n } else {\n await context.createCheckpoint(migrationStatus);\n }\n }\n });\n\n migrationStatus[groupId] = true;\n await context.createCheckpoint(migrationStatus);\n }\n }\n }\n\n private async listTenants(): Promise<Tenant[]> {\n return await queryAll<Tenant>({\n entity: this.tenantEntity,\n partitionKey: \"TENANTS\",\n options: {\n index: \"GSI1\",\n gte: \" \"\n }\n });\n }\n\n private async listLocales({ tenant }: ListLocalesParams): Promise<I18NLocale[]> {\n return await queryAll<I18NLocale>({\n entity: this.localeEntity,\n partitionKey: `T#${tenant.data.id}#I18N#L`,\n options: {\n gte: \" \"\n }\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_dataMigration","require","_ioc","_AcoFolderMigration","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","AcoFolders_5_37_0_003","constructor","table","esTable","elasticsearchClient","migrations","AcoRecords_5_37_0_003_AcoFolder","getId","getDescription","shouldExecute","context","migration","childLogger","getChildLogger","logger","childContext","execute","makeInjectable","inject","PrimaryDynamoTableSymbol","ElasticsearchDynamoTableSymbol","ElasticsearchClientSymbol"],"sources":["index.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { Client } from \"@elastic/elasticsearch\";\nimport {\n DataMigration,\n DataMigrationContext,\n ElasticsearchClientSymbol,\n ElasticsearchDynamoTableSymbol,\n getChildLogger,\n PrimaryDynamoTableSymbol\n} from \"@webiny/data-migration\";\nimport { inject, makeInjectable } from \"@webiny/ioc\";\nimport { AcoRecords_5_37_0_003_AcoFolder } from \"./AcoFolderMigration\";\n\nexport * from \"../types\";\n\nexport class AcoFolders_5_37_0_003 implements DataMigration {\n private readonly migrations: DataMigration[];\n\n constructor(\n table: Table<string, string, string>,\n esTable: Table<string, string, string>,\n elasticsearchClient: Client\n ) {\n this.migrations = [\n new AcoRecords_5_37_0_003_AcoFolder(table, esTable, elasticsearchClient)\n ];\n }\n\n getId(): string {\n return \"5.37.0-003\";\n }\n\n getDescription(): string {\n return \"ACO Folder parentId migration\";\n }\n\n async shouldExecute(context: DataMigrationContext): Promise<boolean> {\n for (const migration of this.migrations) {\n const childLogger = getChildLogger(context.logger, migration);\n const childContext = { ...context, logger: childLogger };\n if (await migration.shouldExecute(childContext)) {\n return true;\n }\n }\n return false;\n }\n\n async execute(context: DataMigrationContext): Promise<void> {\n for (const migration of this.migrations) {\n const childLogger = getChildLogger(context.logger, migration);\n const childContext = { ...context, logger: childLogger };\n if (await migration.shouldExecute(childContext)) {\n await migration.execute(childContext);\n }\n }\n }\n}\n\nmakeInjectable(AcoFolders_5_37_0_003, [\n inject(PrimaryDynamoTableSymbol),\n inject(ElasticsearchDynamoTableSymbol),\n inject(ElasticsearchClientSymbol)\n]);\n"],"mappings":";;;;;;;;;AAEA,IAAAA,cAAA,GAAAC,OAAA;AAQA,IAAAC,IAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AAAAI,MAAA,CAAAC,IAAA,CAAAF,MAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,MAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,MAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AAEO,MAAMS,qBAAqB,CAA0B;EAGxDC,WAAWA,CACPC,KAAoC,EACpCC,OAAsC,EACtCC,mBAA2B,EAC7B;IACE,IAAI,CAACC,UAAU,GAAG,CACd,IAAIC,mDAA+B,CAACJ,KAAK,EAAEC,OAAO,EAAEC,mBAAmB,CAAC,CAC3E;EACL;EAEAG,KAAKA,CAAA,EAAW;IACZ,OAAO,YAAY;EACvB;EAEAC,cAAcA,CAAA,EAAW;IACrB,OAAO,+BAA+B;EAC1C;EAEA,MAAMC,aAAaA,CAACC,OAA6B,EAAoB;IACjE,KAAK,MAAMC,SAAS,IAAI,IAAI,CAACN,UAAU,EAAE;MACrC,MAAMO,WAAW,GAAG,IAAAC,6BAAc,EAACH,OAAO,CAACI,MAAM,EAAEH,SAAS,CAAC;MAC7D,MAAMI,YAAY,GAAG;QAAE,GAAGL,OAAO;QAAEI,MAAM,EAAEF;MAAY,CAAC;MACxD,IAAI,MAAMD,SAAS,CAACF,aAAa,CAACM,YAAY,CAAC,EAAE;QAC7C,OAAO,IAAI;MACf;IACJ;IACA,OAAO,KAAK;EAChB;EAEA,MAAMC,OAAOA,CAACN,OAA6B,EAAiB;IACxD,KAAK,MAAMC,SAAS,IAAI,IAAI,CAACN,UAAU,EAAE;MACrC,MAAMO,WAAW,GAAG,IAAAC,6BAAc,EAACH,OAAO,CAACI,MAAM,EAAEH,SAAS,CAAC;MAC7D,MAAMI,YAAY,GAAG;QAAE,GAAGL,OAAO;QAAEI,MAAM,EAAEF;MAAY,CAAC;MACxD,IAAI,MAAMD,SAAS,CAACF,aAAa,CAACM,YAAY,CAAC,EAAE;QAC7C,MAAMJ,SAAS,CAACK,OAAO,CAACD,YAAY,CAAC;MACzC;IACJ;EACJ;AACJ;AAACnB,OAAA,CAAAI,qBAAA,GAAAA,qBAAA;AAED,IAAAiB,mBAAc,EAACjB,qBAAqB,EAAE,CAClC,IAAAkB,WAAM,EAACC,uCAAwB,CAAC,EAChC,IAAAD,WAAM,EAACE,6CAA8B,CAAC,EACtC,IAAAF,WAAM,EAACG,wCAAyB,CAAC,CACpC,CAAC"}
1
+ {"version":3,"names":["_dataMigration","require","_ioc","_AcoFolderMigration","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","AcoFolders_5_37_0_003","constructor","table","esTable","elasticsearchClient","migrations","AcoRecords_5_37_0_003_AcoFolder","getId","getDescription","shouldExecute","context","migration","childLogger","getChildLogger","logger","childContext","execute","makeInjectable","inject","PrimaryDynamoTableSymbol","ElasticsearchDynamoTableSymbol","ElasticsearchClientSymbol"],"sources":["index.ts"],"sourcesContent":["import { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { Client } from \"@elastic/elasticsearch\";\nimport {\n DataMigration,\n DataMigrationContext,\n ElasticsearchClientSymbol,\n ElasticsearchDynamoTableSymbol,\n getChildLogger,\n PrimaryDynamoTableSymbol\n} from \"@webiny/data-migration\";\nimport { inject, makeInjectable } from \"@webiny/ioc\";\nimport { AcoRecords_5_37_0_003_AcoFolder } from \"./AcoFolderMigration\";\n\nexport * from \"../types\";\n\nexport class AcoFolders_5_37_0_003 implements DataMigration {\n private readonly migrations: DataMigration[];\n\n constructor(\n table: Table<string, string, string>,\n esTable: Table<string, string, string>,\n elasticsearchClient: Client\n ) {\n this.migrations = [\n new AcoRecords_5_37_0_003_AcoFolder(table, esTable, elasticsearchClient)\n ];\n }\n\n getId(): string {\n return \"5.37.0-003\";\n }\n\n getDescription(): string {\n return \"ACO Folder parentId migration\";\n }\n\n async shouldExecute(context: DataMigrationContext): Promise<boolean> {\n for (const migration of this.migrations) {\n const childLogger = getChildLogger(context.logger, migration);\n const childContext = { ...context, logger: childLogger };\n if (await migration.shouldExecute(childContext)) {\n return true;\n }\n }\n return false;\n }\n\n async execute(context: DataMigrationContext): Promise<void> {\n for (const migration of this.migrations) {\n const childLogger = getChildLogger(context.logger, migration);\n const childContext = { ...context, logger: childLogger };\n if (await migration.shouldExecute(childContext)) {\n await migration.execute(childContext);\n }\n }\n }\n}\n\nmakeInjectable(AcoFolders_5_37_0_003, [\n inject(PrimaryDynamoTableSymbol),\n inject(ElasticsearchDynamoTableSymbol),\n inject(ElasticsearchClientSymbol)\n]);\n"],"mappings":";;;;;;;;;AAEA,IAAAA,cAAA,GAAAC,OAAA;AAQA,IAAAC,IAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AAAAI,MAAA,CAAAC,IAAA,CAAAF,MAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,MAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,MAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AAEO,MAAMS,qBAAqB,CAA0B;EAGxDC,WAAWA,CACPC,KAAoC,EACpCC,OAAsC,EACtCC,mBAA2B,EAC7B;IACE,IAAI,CAACC,UAAU,GAAG,CACd,IAAIC,mDAA+B,CAACJ,KAAK,EAAEC,OAAO,EAAEC,mBAAmB,CAAC,CAC3E;EACL;EAEAG,KAAKA,CAAA,EAAW;IACZ,OAAO,YAAY;EACvB;EAEAC,cAAcA,CAAA,EAAW;IACrB,OAAO,+BAA+B;EAC1C;EAEA,MAAMC,aAAaA,CAACC,OAA6B,EAAoB;IACjE,KAAK,MAAMC,SAAS,IAAI,IAAI,CAACN,UAAU,EAAE;MACrC,MAAMO,WAAW,GAAG,IAAAC,6BAAc,EAACH,OAAO,CAACI,MAAM,EAAEH,SAAS,CAAC;MAC7D,MAAMI,YAAY,GAAG;QAAE,GAAGL,OAAO;QAAEI,MAAM,EAAEF;MAAY,CAAC;MACxD,IAAI,MAAMD,SAAS,CAACF,aAAa,CAACM,YAAY,CAAC,EAAE;QAC7C,OAAO,IAAI;MACf;IACJ;IACA,OAAO,KAAK;EAChB;EAEA,MAAMC,OAAOA,CAACN,OAA6B,EAAiB;IACxD,KAAK,MAAMC,SAAS,IAAI,IAAI,CAACN,UAAU,EAAE;MACrC,MAAMO,WAAW,GAAG,IAAAC,6BAAc,EAACH,OAAO,CAACI,MAAM,EAAEH,SAAS,CAAC;MAC7D,MAAMI,YAAY,GAAG;QAAE,GAAGL,OAAO;QAAEI,MAAM,EAAEF;MAAY,CAAC;MACxD,IAAI,MAAMD,SAAS,CAACF,aAAa,CAACM,YAAY,CAAC,EAAE;QAC7C,MAAMJ,SAAS,CAACK,OAAO,CAACD,YAAY,CAAC;MACzC;IACJ;EACJ;AACJ;AAACnB,OAAA,CAAAI,qBAAA,GAAAA,qBAAA;AAED,IAAAiB,mBAAc,EAACjB,qBAAqB,EAAE,CAClC,IAAAkB,WAAM,EAACC,uCAAwB,CAAC,EAChC,IAAAD,WAAM,EAACE,6CAA8B,CAAC,EACtC,IAAAF,WAAM,EAACG,wCAAyB,CAAC,CACpC,CAAC","ignoreList":[]}