@contember/schema-migrations 1.2.0-alpha.8 → 1.2.0-beta.1

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 (315) hide show
  1. package/dist/src/Migration.d.ts +2 -0
  2. package/dist/src/Migration.d.ts.map +1 -1
  3. package/dist/src/Migration.js +2 -2
  4. package/dist/src/Migration.js.map +1 -1
  5. package/dist/src/MigrationCreator.d.ts +3 -1
  6. package/dist/src/MigrationCreator.d.ts.map +1 -1
  7. package/dist/src/MigrationCreator.js +2 -2
  8. package/dist/src/MigrationCreator.js.map +1 -1
  9. package/dist/src/MigrationDescriber.d.ts +1 -2
  10. package/dist/src/MigrationDescriber.d.ts.map +1 -1
  11. package/dist/src/MigrationDescriber.js +5 -7
  12. package/dist/src/MigrationDescriber.js.map +1 -1
  13. package/dist/src/MigrationFilesManager.d.ts.map +1 -1
  14. package/dist/src/MigrationFilesManager.js +10 -19
  15. package/dist/src/MigrationFilesManager.js.map +1 -1
  16. package/dist/src/MigrationsResolver.d.ts.map +1 -1
  17. package/dist/src/MigrationsResolver.js +1 -0
  18. package/dist/src/MigrationsResolver.js.map +1 -1
  19. package/dist/src/SchemaDiffer.d.ts +6 -1
  20. package/dist/src/SchemaDiffer.d.ts.map +1 -1
  21. package/dist/src/SchemaDiffer.js +46 -54
  22. package/dist/src/SchemaDiffer.js.map +1 -1
  23. package/dist/src/SchemaMigrator.d.ts +3 -2
  24. package/dist/src/SchemaMigrator.d.ts.map +1 -1
  25. package/dist/src/SchemaMigrator.js.map +1 -1
  26. package/dist/src/index.d.ts +1 -5
  27. package/dist/src/index.d.ts.map +1 -1
  28. package/dist/src/index.js +1 -11
  29. package/dist/src/index.js.map +1 -1
  30. package/dist/src/modifications/ModificationHandler.d.ts +16 -8
  31. package/dist/src/modifications/ModificationHandler.d.ts.map +1 -1
  32. package/dist/src/modifications/ModificationHandler.js +9 -1
  33. package/dist/src/modifications/ModificationHandler.js.map +1 -1
  34. package/dist/src/modifications/ModificationHandlerFactory.d.ts +8 -7
  35. package/dist/src/modifications/ModificationHandlerFactory.d.ts.map +1 -1
  36. package/dist/src/modifications/ModificationHandlerFactory.js +43 -39
  37. package/dist/src/modifications/ModificationHandlerFactory.js.map +1 -1
  38. package/dist/src/modifications/acl/PatchAclSchemaModification.d.ts +13 -2
  39. package/dist/src/modifications/acl/PatchAclSchemaModification.d.ts.map +1 -1
  40. package/dist/src/modifications/acl/PatchAclSchemaModification.js +28 -28
  41. package/dist/src/modifications/acl/PatchAclSchemaModification.js.map +1 -1
  42. package/dist/src/modifications/acl/UpdateAclSchemaModification.d.ts +17 -3
  43. package/dist/src/modifications/acl/UpdateAclSchemaModification.d.ts.map +1 -1
  44. package/dist/src/modifications/acl/UpdateAclSchemaModification.js +33 -30
  45. package/dist/src/modifications/acl/UpdateAclSchemaModification.js.map +1 -1
  46. package/dist/src/modifications/columns/CreateColumnModification.d.ts +21 -3
  47. package/dist/src/modifications/columns/CreateColumnModification.d.ts.map +1 -1
  48. package/dist/src/modifications/columns/CreateColumnModification.js +72 -69
  49. package/dist/src/modifications/columns/CreateColumnModification.js.map +1 -1
  50. package/dist/src/modifications/columns/UpdateColumnDefinitionModification.d.ts +20 -4
  51. package/dist/src/modifications/columns/UpdateColumnDefinitionModification.d.ts.map +1 -1
  52. package/dist/src/modifications/columns/UpdateColumnDefinitionModification.js +78 -71
  53. package/dist/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
  54. package/dist/src/modifications/columns/UpdateColumnNameModification.d.ts +18 -2
  55. package/dist/src/modifications/columns/UpdateColumnNameModification.d.ts.map +1 -1
  56. package/dist/src/modifications/columns/UpdateColumnNameModification.js +97 -94
  57. package/dist/src/modifications/columns/UpdateColumnNameModification.js.map +1 -1
  58. package/dist/src/modifications/constraints/CreateUniqueConstraintModification.d.ts +21 -3
  59. package/dist/src/modifications/constraints/CreateUniqueConstraintModification.d.ts.map +1 -1
  60. package/dist/src/modifications/constraints/CreateUniqueConstraintModification.js +72 -66
  61. package/dist/src/modifications/constraints/CreateUniqueConstraintModification.js.map +1 -1
  62. package/dist/src/modifications/constraints/RemoveUniqueConstraintModification.d.ts +18 -2
  63. package/dist/src/modifications/constraints/RemoveUniqueConstraintModification.d.ts.map +1 -1
  64. package/dist/src/modifications/constraints/RemoveUniqueConstraintModification.js +45 -42
  65. package/dist/src/modifications/constraints/RemoveUniqueConstraintModification.js.map +1 -1
  66. package/dist/src/modifications/differs/ChangeViewNonViewDiffer.js +1 -1
  67. package/dist/src/modifications/differs/RemoveChangedFieldDiffer.d.ts +1 -3
  68. package/dist/src/modifications/differs/RemoveChangedFieldDiffer.d.ts.map +1 -1
  69. package/dist/src/modifications/differs/RemoveChangedFieldDiffer.js +1 -1
  70. package/dist/src/modifications/differs/RemoveChangedViewDiffer.d.ts +1 -2
  71. package/dist/src/modifications/differs/RemoveChangedViewDiffer.d.ts.map +1 -1
  72. package/dist/src/modifications/differs/RemoveChangedViewDiffer.js +7 -20
  73. package/dist/src/modifications/differs/RemoveChangedViewDiffer.js.map +1 -1
  74. package/dist/src/modifications/entities/CreateEntityModification.d.ts +19 -2
  75. package/dist/src/modifications/entities/CreateEntityModification.d.ts.map +1 -1
  76. package/dist/src/modifications/entities/CreateEntityModification.js +66 -63
  77. package/dist/src/modifications/entities/CreateEntityModification.js.map +1 -1
  78. package/dist/src/modifications/entities/CreateViewModification.d.ts +21 -2
  79. package/dist/src/modifications/entities/CreateViewModification.d.ts.map +1 -1
  80. package/dist/src/modifications/entities/CreateViewModification.js +59 -56
  81. package/dist/src/modifications/entities/CreateViewModification.js.map +1 -1
  82. package/dist/src/modifications/entities/RemoveEntityModification.d.ts +22 -2
  83. package/dist/src/modifications/entities/RemoveEntityModification.d.ts.map +1 -1
  84. package/dist/src/modifications/entities/RemoveEntityModification.js +73 -70
  85. package/dist/src/modifications/entities/RemoveEntityModification.js.map +1 -1
  86. package/dist/src/modifications/entities/ToggleEventLogModification.d.ts +19 -2
  87. package/dist/src/modifications/entities/ToggleEventLogModification.d.ts.map +1 -1
  88. package/dist/src/modifications/entities/ToggleEventLogModification.js +57 -54
  89. package/dist/src/modifications/entities/ToggleEventLogModification.js.map +1 -1
  90. package/dist/src/modifications/entities/UpdateEntityNameModification.d.ts +18 -2
  91. package/dist/src/modifications/entities/UpdateEntityNameModification.d.ts.map +1 -1
  92. package/dist/src/modifications/entities/UpdateEntityNameModification.js +78 -78
  93. package/dist/src/modifications/entities/UpdateEntityNameModification.js.map +1 -1
  94. package/dist/src/modifications/entities/UpdateEntityTableNameModification.d.ts +18 -2
  95. package/dist/src/modifications/entities/UpdateEntityTableNameModification.d.ts.map +1 -1
  96. package/dist/src/modifications/entities/UpdateEntityTableNameModification.js +40 -34
  97. package/dist/src/modifications/entities/UpdateEntityTableNameModification.js.map +1 -1
  98. package/dist/src/modifications/entities/UpdateViewModification.d.ts +15 -3
  99. package/dist/src/modifications/entities/UpdateViewModification.d.ts.map +1 -1
  100. package/dist/src/modifications/entities/UpdateViewModification.js +28 -28
  101. package/dist/src/modifications/entities/UpdateViewModification.js.map +1 -1
  102. package/dist/src/modifications/enums/CreateEnumModification.d.ts +18 -2
  103. package/dist/src/modifications/enums/CreateEnumModification.d.ts.map +1 -1
  104. package/dist/src/modifications/enums/CreateEnumModification.js +42 -36
  105. package/dist/src/modifications/enums/CreateEnumModification.js.map +1 -1
  106. package/dist/src/modifications/enums/RemoveEnumModification.d.ts +18 -2
  107. package/dist/src/modifications/enums/RemoveEnumModification.d.ts.map +1 -1
  108. package/dist/src/modifications/enums/RemoveEnumModification.js +36 -33
  109. package/dist/src/modifications/enums/RemoveEnumModification.js.map +1 -1
  110. package/dist/src/modifications/enums/UpdateEnumModification.d.ts +19 -2
  111. package/dist/src/modifications/enums/UpdateEnumModification.d.ts.map +1 -1
  112. package/dist/src/modifications/enums/UpdateEnumModification.js +43 -40
  113. package/dist/src/modifications/enums/UpdateEnumModification.js.map +1 -1
  114. package/dist/src/modifications/fields/RemoveFieldModification.d.ts +20 -2
  115. package/dist/src/modifications/fields/RemoveFieldModification.d.ts.map +1 -1
  116. package/dist/src/modifications/fields/RemoveFieldModification.js +67 -64
  117. package/dist/src/modifications/fields/RemoveFieldModification.js.map +1 -1
  118. package/dist/src/modifications/fields/UpdateFieldNameModification.d.ts +18 -2
  119. package/dist/src/modifications/fields/UpdateFieldNameModification.d.ts.map +1 -1
  120. package/dist/src/modifications/fields/UpdateFieldNameModification.js +132 -132
  121. package/dist/src/modifications/fields/UpdateFieldNameModification.js.map +1 -1
  122. package/dist/src/modifications/index.d.ts +14 -0
  123. package/dist/src/modifications/index.d.ts.map +1 -0
  124. package/dist/src/modifications/index.js +32 -0
  125. package/dist/src/modifications/index.js.map +1 -0
  126. package/dist/src/modifications/indexes/CreateIndexModification.d.ts +18 -3
  127. package/dist/src/modifications/indexes/CreateIndexModification.d.ts.map +1 -1
  128. package/dist/src/modifications/indexes/CreateIndexModification.js +68 -65
  129. package/dist/src/modifications/indexes/CreateIndexModification.js.map +1 -1
  130. package/dist/src/modifications/indexes/RemoveIndexModification.d.ts +18 -2
  131. package/dist/src/modifications/indexes/RemoveIndexModification.d.ts.map +1 -1
  132. package/dist/src/modifications/indexes/RemoveIndexModification.js +47 -44
  133. package/dist/src/modifications/indexes/RemoveIndexModification.js.map +1 -1
  134. package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts +22 -3
  135. package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts.map +1 -1
  136. package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js +68 -65
  137. package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js.map +1 -1
  138. package/dist/src/modifications/relations/ConvertOneToManyRelationModification.d.ts +22 -2
  139. package/dist/src/modifications/relations/ConvertOneToManyRelationModification.d.ts.map +1 -1
  140. package/dist/src/modifications/relations/ConvertOneToManyRelationModification.js +81 -70
  141. package/dist/src/modifications/relations/ConvertOneToManyRelationModification.js.map +1 -1
  142. package/dist/src/modifications/relations/CreateRelationInverseSideModification.d.ts +18 -3
  143. package/dist/src/modifications/relations/CreateRelationInverseSideModification.d.ts.map +1 -1
  144. package/dist/src/modifications/relations/CreateRelationInverseSideModification.js +36 -33
  145. package/dist/src/modifications/relations/CreateRelationInverseSideModification.js.map +1 -1
  146. package/dist/src/modifications/relations/CreateRelationModification.d.ts +24 -3
  147. package/dist/src/modifications/relations/CreateRelationModification.d.ts.map +1 -1
  148. package/dist/src/modifications/relations/CreateRelationModification.js +99 -85
  149. package/dist/src/modifications/relations/CreateRelationModification.js.map +1 -1
  150. package/dist/src/modifications/relations/DisableOrphanRemovalModification.d.ts +18 -2
  151. package/dist/src/modifications/relations/DisableOrphanRemovalModification.d.ts.map +1 -1
  152. package/dist/src/modifications/relations/DisableOrphanRemovalModification.js +42 -39
  153. package/dist/src/modifications/relations/DisableOrphanRemovalModification.js.map +1 -1
  154. package/dist/src/modifications/relations/EnableOrphanRemovalModification.d.ts +18 -2
  155. package/dist/src/modifications/relations/EnableOrphanRemovalModification.d.ts.map +1 -1
  156. package/dist/src/modifications/relations/EnableOrphanRemovalModification.js +45 -42
  157. package/dist/src/modifications/relations/EnableOrphanRemovalModification.js.map +1 -1
  158. package/dist/src/modifications/relations/MakeRelationNotNullModification.d.ts +19 -2
  159. package/dist/src/modifications/relations/MakeRelationNotNullModification.d.ts.map +1 -1
  160. package/dist/src/modifications/relations/MakeRelationNotNullModification.js +55 -52
  161. package/dist/src/modifications/relations/MakeRelationNotNullModification.js.map +1 -1
  162. package/dist/src/modifications/relations/MakeRelationNullableModification.d.ts +18 -2
  163. package/dist/src/modifications/relations/MakeRelationNullableModification.d.ts.map +1 -1
  164. package/dist/src/modifications/relations/MakeRelationNullableModification.js +54 -51
  165. package/dist/src/modifications/relations/MakeRelationNullableModification.js.map +1 -1
  166. package/dist/src/modifications/relations/ToggleJunctionEventLogModification.d.ts +25 -0
  167. package/dist/src/modifications/relations/ToggleJunctionEventLogModification.d.ts.map +1 -0
  168. package/dist/src/modifications/relations/ToggleJunctionEventLogModification.js +84 -0
  169. package/dist/src/modifications/relations/ToggleJunctionEventLogModification.js.map +1 -0
  170. package/dist/src/modifications/relations/UpdateRelationOnDeleteModification.d.ts +18 -3
  171. package/dist/src/modifications/relations/UpdateRelationOnDeleteModification.d.ts.map +1 -1
  172. package/dist/src/modifications/relations/UpdateRelationOnDeleteModification.js +42 -39
  173. package/dist/src/modifications/relations/UpdateRelationOnDeleteModification.js.map +1 -1
  174. package/dist/src/modifications/relations/UpdateRelationOrderByModification.d.ts +18 -3
  175. package/dist/src/modifications/relations/UpdateRelationOrderByModification.d.ts.map +1 -1
  176. package/dist/src/modifications/relations/UpdateRelationOrderByModification.js +43 -40
  177. package/dist/src/modifications/relations/UpdateRelationOrderByModification.js.map +1 -1
  178. package/dist/src/modifications/relations/index.d.ts +1 -1
  179. package/dist/src/modifications/relations/index.d.ts.map +1 -1
  180. package/dist/src/modifications/relations/index.js +1 -1
  181. package/dist/src/modifications/relations/index.js.map +1 -1
  182. package/dist/src/modifications/settings/UpdateSettingsModification.d.ts +28 -0
  183. package/dist/src/modifications/settings/UpdateSettingsModification.d.ts.map +1 -0
  184. package/dist/src/modifications/settings/UpdateSettingsModification.js +64 -0
  185. package/dist/src/modifications/settings/UpdateSettingsModification.js.map +1 -0
  186. package/dist/src/modifications/settings/index.d.ts +2 -0
  187. package/dist/src/modifications/settings/index.d.ts.map +1 -0
  188. package/dist/src/modifications/settings/index.js +18 -0
  189. package/dist/src/modifications/settings/index.js.map +1 -0
  190. package/dist/src/modifications/utils/columnUtils.d.ts +3 -0
  191. package/dist/src/modifications/utils/columnUtils.d.ts.map +1 -0
  192. package/dist/src/modifications/utils/columnUtils.js +9 -0
  193. package/dist/src/modifications/utils/columnUtils.js.map +1 -0
  194. package/dist/src/modifications/utils/createJunctionTable.d.ts +2 -1
  195. package/dist/src/modifications/utils/createJunctionTable.d.ts.map +1 -1
  196. package/dist/src/modifications/utils/createJunctionTable.js +7 -5
  197. package/dist/src/modifications/utils/createJunctionTable.js.map +1 -1
  198. package/dist/src/modifications/utils/diffUtils.d.ts +14 -12
  199. package/dist/src/modifications/utils/diffUtils.d.ts.map +1 -1
  200. package/dist/src/modifications/utils/diffUtils.js.map +1 -1
  201. package/dist/src/modifications/utils/schemaMeta.d.ts +8 -0
  202. package/dist/src/modifications/utils/schemaMeta.d.ts.map +1 -0
  203. package/dist/src/modifications/utils/schemaMeta.js +13 -0
  204. package/dist/src/modifications/utils/schemaMeta.js.map +1 -0
  205. package/dist/src/modifications/utils/schemaUpdateUtils.d.ts +4 -2
  206. package/dist/src/modifications/utils/schemaUpdateUtils.d.ts.map +1 -1
  207. package/dist/src/modifications/utils/schemaUpdateUtils.js +24 -2
  208. package/dist/src/modifications/utils/schemaUpdateUtils.js.map +1 -1
  209. package/dist/src/modifications/utils/viewDependencies.d.ts +4 -2
  210. package/dist/src/modifications/utils/viewDependencies.d.ts.map +1 -1
  211. package/dist/src/modifications/utils/viewDependencies.js +29 -6
  212. package/dist/src/modifications/utils/viewDependencies.js.map +1 -1
  213. package/dist/src/modifications/validation/PatchValidationSchemaModification.d.ts +13 -2
  214. package/dist/src/modifications/validation/PatchValidationSchemaModification.d.ts.map +1 -1
  215. package/dist/src/modifications/validation/PatchValidationSchemaModification.js +28 -28
  216. package/dist/src/modifications/validation/PatchValidationSchemaModification.js.map +1 -1
  217. package/dist/src/modifications/validation/UpdateValidationSchemaModification.d.ts +17 -3
  218. package/dist/src/modifications/validation/UpdateValidationSchemaModification.d.ts.map +1 -1
  219. package/dist/src/modifications/validation/UpdateValidationSchemaModification.js +33 -30
  220. package/dist/src/modifications/validation/UpdateValidationSchemaModification.js.map +1 -1
  221. package/dist/src/tsconfig.tsbuildinfo +1 -1
  222. package/dist/tests/cases/integration/convertOneHasManyToManyHasManyRelation.test.js +3 -2
  223. package/dist/tests/cases/integration/convertOneHasManyToManyHasManyRelation.test.js.map +1 -1
  224. package/dist/tests/cases/integration/createColumn.test.js +36 -0
  225. package/dist/tests/cases/integration/createColumn.test.js.map +1 -1
  226. package/dist/tests/cases/integration/createManyHasMany.test.js +3 -2
  227. package/dist/tests/cases/integration/createManyHasMany.test.js.map +1 -1
  228. package/dist/tests/cases/integration/createView.test.js +80 -0
  229. package/dist/tests/cases/integration/createView.test.js.map +1 -1
  230. package/dist/tests/cases/integration/removeField.test.js +72 -0
  231. package/dist/tests/cases/integration/removeField.test.js.map +1 -1
  232. package/dist/tests/cases/integration/takenIndexName.test.d.ts +2 -0
  233. package/dist/tests/cases/integration/takenIndexName.test.d.ts.map +1 -0
  234. package/dist/tests/cases/integration/takenIndexName.test.js +307 -0
  235. package/dist/tests/cases/integration/takenIndexName.test.js.map +1 -0
  236. package/dist/tests/cases/integration/updateColumnDefinition.test.js +160 -0
  237. package/dist/tests/cases/integration/updateColumnDefinition.test.js.map +1 -1
  238. package/dist/tests/scripts/checkCreateConsistentMigrations.js +5 -4
  239. package/dist/tests/scripts/checkCreateConsistentMigrations.js.map +1 -1
  240. package/dist/tests/src/tests.d.ts.map +1 -1
  241. package/dist/tests/src/tests.js +15 -5
  242. package/dist/tests/src/tests.js.map +1 -1
  243. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  244. package/package.json +6 -6
  245. package/src/Migration.ts +3 -1
  246. package/src/MigrationCreator.ts +2 -1
  247. package/src/MigrationDescriber.ts +8 -8
  248. package/src/MigrationFilesManager.ts +10 -20
  249. package/src/MigrationsResolver.ts +1 -0
  250. package/src/SchemaDiffer.ts +82 -85
  251. package/src/SchemaMigrator.ts +3 -2
  252. package/src/index.ts +1 -5
  253. package/src/modifications/ModificationHandler.ts +22 -9
  254. package/src/modifications/ModificationHandlerFactory.ts +69 -65
  255. package/src/modifications/acl/PatchAclSchemaModification.ts +7 -8
  256. package/src/modifications/acl/UpdateAclSchemaModification.ts +16 -15
  257. package/src/modifications/columns/CreateColumnModification.ts +21 -18
  258. package/src/modifications/columns/UpdateColumnDefinitionModification.ts +58 -47
  259. package/src/modifications/columns/UpdateColumnNameModification.ts +60 -53
  260. package/src/modifications/constraints/CreateUniqueConstraintModification.ts +23 -17
  261. package/src/modifications/constraints/RemoveUniqueConstraintModification.ts +18 -14
  262. package/src/modifications/differs/ChangeViewNonViewDiffer.ts +2 -2
  263. package/src/modifications/differs/RemoveChangedFieldDiffer.ts +2 -2
  264. package/src/modifications/differs/RemoveChangedViewDiffer.ts +9 -22
  265. package/src/modifications/entities/CreateEntityModification.ts +18 -9
  266. package/src/modifications/entities/CreateViewModification.ts +10 -8
  267. package/src/modifications/entities/RemoveEntityModification.ts +24 -16
  268. package/src/modifications/entities/ToggleEventLogModification.ts +20 -13
  269. package/src/modifications/entities/UpdateEntityNameModification.ts +11 -10
  270. package/src/modifications/entities/UpdateEntityTableNameModification.ts +18 -13
  271. package/src/modifications/entities/UpdateViewModification.ts +7 -7
  272. package/src/modifications/enums/CreateEnumModification.ts +18 -13
  273. package/src/modifications/enums/RemoveEnumModification.ts +14 -12
  274. package/src/modifications/enums/UpdateEnumModification.ts +15 -13
  275. package/src/modifications/fields/RemoveFieldModification.ts +20 -17
  276. package/src/modifications/fields/UpdateFieldNameModification.ts +18 -18
  277. package/src/modifications/index.ts +13 -0
  278. package/src/modifications/indexes/CreateIndexModification.ts +13 -12
  279. package/src/modifications/indexes/RemoveIndexModification.ts +12 -8
  280. package/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.ts +48 -29
  281. package/src/modifications/relations/ConvertOneToManyRelationModification.ts +50 -27
  282. package/src/modifications/relations/CreateRelationInverseSideModification.ts +15 -13
  283. package/src/modifications/relations/CreateRelationModification.ts +65 -35
  284. package/src/modifications/relations/DisableOrphanRemovalModification.ts +15 -12
  285. package/src/modifications/relations/EnableOrphanRemovalModification.ts +16 -13
  286. package/src/modifications/relations/MakeRelationNotNullModification.ts +16 -14
  287. package/src/modifications/relations/MakeRelationNullableModification.ts +17 -13
  288. package/src/modifications/relations/{ToggleManyHasManyEventLogModification.ts → ToggleJunctionEventLogModification.ts} +21 -14
  289. package/src/modifications/relations/UpdateRelationOnDeleteModification.ts +16 -14
  290. package/src/modifications/relations/UpdateRelationOrderByModification.ts +17 -14
  291. package/src/modifications/relations/index.ts +1 -1
  292. package/src/modifications/settings/UpdateSettingsModification.ts +87 -0
  293. package/src/modifications/settings/index.ts +1 -0
  294. package/src/modifications/utils/columnUtils.ts +5 -0
  295. package/src/modifications/utils/createJunctionTable.ts +7 -5
  296. package/src/modifications/utils/diffUtils.ts +12 -12
  297. package/src/modifications/utils/schemaMeta.ts +18 -0
  298. package/src/modifications/utils/schemaUpdateUtils.ts +22 -2
  299. package/src/modifications/utils/viewDependencies.ts +28 -5
  300. package/src/modifications/validation/PatchValidationSchemaModification.ts +7 -7
  301. package/src/modifications/validation/UpdateValidationSchemaModification.ts +17 -14
  302. package/src/tsconfig.json +2 -2
  303. package/tests/cases/integration/convertOneHasManyToManyHasManyRelation.test.ts +3 -2
  304. package/tests/cases/integration/createColumn.test.ts +33 -0
  305. package/tests/cases/integration/createManyHasMany.test.ts +3 -2
  306. package/tests/cases/integration/createView.test.ts +70 -0
  307. package/tests/cases/integration/removeField.test.ts +58 -0
  308. package/tests/cases/integration/takenIndexName.test.ts +314 -0
  309. package/tests/cases/integration/updateColumnDefinition.test.ts +138 -1
  310. package/tests/scripts/checkCreateConsistentMigrations.ts +3 -2
  311. package/tests/src/tests.ts +21 -11
  312. package/dist/src/modifications/relations/ToggleManyHasManyEventLogModification.d.ts +0 -8
  313. package/dist/src/modifications/relations/ToggleManyHasManyEventLogModification.d.ts.map +0 -1
  314. package/dist/src/modifications/relations/ToggleManyHasManyEventLogModification.js +0 -81
  315. package/dist/src/modifications/relations/ToggleManyHasManyEventLogModification.js.map +0 -1
@@ -1,38 +1,28 @@
1
1
  import { MigrationVersionHelper } from './MigrationVersionHelper'
2
- import * as fs from 'fs'
3
- import { promisify } from 'util'
4
- import * as path from 'path'
5
-
6
- const readFile = promisify(fs.readFile)
7
- const fsWrite = promisify(fs.writeFile)
8
- const fsRemove = promisify(fs.unlink)
9
- const fsRealpath = promisify(fs.realpath)
10
- const mkdir = promisify(fs.mkdir)
11
- const lstatFile = promisify(fs.lstat)
12
- const readDir = promisify(fs.readdir)
13
- const mvFile = promisify(fs.rename)
2
+ import * as fs from 'node:fs/promises'
3
+ import * as path from 'node:path'
14
4
 
15
5
  class MigrationFilesManager {
16
6
  constructor(public readonly directory: string) {}
17
7
 
18
8
  public async createFile(content: string, name: string): Promise<string> {
19
9
  const path = this.formatPath(name)
20
- await fsWrite(path, content, { encoding: 'utf8' })
21
- return await fsRealpath(path)
10
+ await fs.writeFile(path, content, { encoding: 'utf8' })
11
+ return await fs.realpath(path)
22
12
  }
23
13
 
24
14
  public async removeFile(name: string) {
25
15
  const path = this.formatPath(name)
26
- await fsRemove(path)
16
+ await fs.unlink(path)
27
17
  }
28
18
 
29
19
  public async moveFile(oldName: string, newName: string) {
30
- await mvFile(this.formatPath(oldName), this.formatPath(newName))
20
+ await fs.rename(this.formatPath(oldName), this.formatPath(newName))
31
21
  }
32
22
 
33
23
  public async createDirIfNotExist(): Promise<void> {
34
24
  try {
35
- await mkdir(this.directory)
25
+ await fs.mkdir(this.directory)
36
26
  } catch (e) {
37
27
  if (!(e instanceof Error) || !('code' in e) || (e as any).code !== 'EEXIST') {
38
28
  throw e
@@ -47,7 +37,7 @@ class MigrationFilesManager {
47
37
  files
48
38
  .filter(file => file.endsWith(`.json`))
49
39
  .filter(async file => {
50
- return (await lstatFile(`${this.directory}/${file}`)).isFile()
40
+ return (await fs.lstat(`${this.directory}/${file}`)).isFile()
51
41
  }),
52
42
  )
53
43
  return filteredFiles.sort()
@@ -55,7 +45,7 @@ class MigrationFilesManager {
55
45
 
56
46
  private async tryReadDir(): Promise<string[]> {
57
47
  try {
58
- return await readDir(this.directory)
48
+ return await fs.readdir(this.directory)
59
49
  } catch (e) {
60
50
  if (e instanceof Error && 'code' in e && (e as any).code === 'ENOENT') {
61
51
  return []
@@ -72,7 +62,7 @@ class MigrationFilesManager {
72
62
  const filesWithContent = files.map(async filename => ({
73
63
  filename: filename,
74
64
  path: `${this.directory}/${filename}`,
75
- content: await readFile(`${this.directory}/${filename}`, { encoding: 'utf8' }),
65
+ content: await fs.readFile(`${this.directory}/${filename}`, { encoding: 'utf8' }),
76
66
  }))
77
67
 
78
68
  return await Promise.all(filesWithContent)
@@ -18,6 +18,7 @@ export class MigrationsResolver {
18
18
  name: MigrationVersionHelper.extractName(filename),
19
19
  formatVersion: parsed.formatVersion || VERSION_INITIAL,
20
20
  modifications: parsed.modifications,
21
+ ...(parsed.skippedErrors ? { skippedErrors: parsed.skippedErrors } : {}),
21
22
  }
22
23
  })
23
24
  }
@@ -10,114 +10,111 @@ import {
10
10
  import { SchemaMigrator } from './SchemaMigrator'
11
11
  import { Migration } from './Migration'
12
12
  import { ImplementationException } from './exceptions'
13
- import { VERSION_LATEST } from './modifications/ModificationVersions'
14
- import { CreateUniqueConstraintModification, RemoveUniqueConstraintModification } from './modifications/constraints'
15
- import { RemoveFieldModification } from './modifications/fields'
16
13
  import {
17
- CreateEntityModification,
18
- CreateViewModification,
19
- RemoveEntityModification,
20
- ToggleEventLogModification,
21
- UpdateEntityTableNameModification,
22
- } from './modifications/entities'
23
- import { CreateEnumModification, RemoveEnumModification, UpdateEnumModification } from './modifications/enums'
24
- import {
25
- CreateColumnModification,
26
- UpdateColumnDefinitionModification,
27
- UpdateColumnNameModification,
28
- } from './modifications/columns'
29
- import {
30
- ConvertOneHasManyToManyHasManyRelationModification,
31
- ConvertOneToManyRelationModification,
32
- CreateRelationInverseSideModification,
33
- CreateRelationModification,
34
- DisableOrphanRemovalModification,
35
- EnableOrphanRemovalModification,
36
- MakeRelationNotNullModification,
37
- MakeRelationNullableModification,
38
- ToggleJunctionEventLogModification,
39
- UpdateRelationOnDeleteModification,
40
- UpdateRelationOrderByModification,
41
- } from './modifications/relations'
42
- import { PatchAclSchemaModification, UpdateAclSchemaModification } from './modifications/acl'
43
- import { PatchValidationSchemaModification, UpdateValidationSchemaModification } from './modifications/validation'
44
- import { CreateDiff, Differ } from './modifications/ModificationHandler'
45
- import { isDefined } from './utils/isDefined'
14
+ ConvertOneHasManyToManyHasManyRelationDiffer,
15
+ ConvertOneToManyRelationDiffer,
16
+ CreateColumnDiffer,
17
+ CreateEntityDiffer,
18
+ CreateEnumDiffer,
19
+ CreateRelationDiffer,
20
+ CreateRelationInverseSideDiffer,
21
+ CreateUniqueConstraintDiffer,
22
+ CreateViewDiffer,
23
+ Differ,
24
+ DisableOrphanRemovalDiffer,
25
+ EnableOrphanRemovalDiffer,
26
+ MakeRelationNotNullDiffer,
27
+ MakeRelationNullableDiffer,
28
+ RemoveEntityDiffer,
29
+ RemoveEnumDiffer,
30
+ RemoveFieldDiffer,
31
+ RemoveUniqueConstraintDiffer,
32
+ ToggleEventLogDiffer,
33
+ ToggleJunctionEventLogDiffer,
34
+ UpdateAclSchemaDiffer,
35
+ UpdateColumnDefinitionDiffer,
36
+ UpdateColumnNameDiffer,
37
+ UpdateEntityTableNameDiffer,
38
+ UpdateEnumDiffer,
39
+ UpdateRelationOnDeleteDiffer,
40
+ UpdateRelationOrderByDiffer,
41
+ UpdateValidationSchemaDiffer,
42
+ VERSION_LATEST,
43
+ } from './modifications'
46
44
  import { ChangeViewNonViewDiffer, RemoveChangedFieldDiffer, RemoveChangedViewDiffer } from './modifications/differs'
47
- import { CreateIndexModification, RemoveIndexModification } from './modifications/indexes'
45
+ import { CreateIndexDiffer, RemoveIndexDiffer } from './modifications/indexes'
46
+ import { SchemaWithMeta } from './modifications/utils/schemaMeta'
47
+ import { UpdateSettingsDiffer } from './modifications/settings'
48
+
49
+ type DiffOptions = { skipRecreateValidation?: boolean; skipInitialSchemaValidation?: boolean }
48
50
 
49
51
  export class SchemaDiffer {
50
52
  constructor(private readonly schemaMigrator: SchemaMigrator) {}
51
53
 
52
- diffSchemas(originalSchema: Schema, updatedSchema: Schema, checkRecreate: boolean = true): Migration.Modification[] {
53
- const originalErrors = SchemaValidator.validate(originalSchema)
54
- if (originalErrors.length > 0) {
55
- throw new InvalidSchemaException('original schema is not valid', originalErrors)
54
+ diffSchemas(originalSchema: Schema, updatedSchema: Schema, {
55
+ skipInitialSchemaValidation = false,
56
+ skipRecreateValidation = false,
57
+ }: DiffOptions = {}): Migration.Modification[] {
58
+ if (!skipInitialSchemaValidation) {
59
+ const originalErrors = SchemaValidator.validate(originalSchema)
60
+ if (originalErrors.length > 0) {
61
+ throw new InvalidSchemaException('original schema is not valid', originalErrors)
62
+ }
56
63
  }
57
64
  const updatedErrors = SchemaValidator.validate(updatedSchema)
58
65
  if (updatedErrors.length > 0) {
59
66
  throw new InvalidSchemaException('updated schema is not valid', updatedErrors)
60
67
  }
61
68
 
62
- const differs: (CreateDiff | Differ)[] = [
63
- ConvertOneToManyRelationModification.createDiff,
64
- ConvertOneHasManyToManyHasManyRelationModification.createDiff,
65
-
66
- RemoveUniqueConstraintModification.createDiff,
67
- RemoveIndexModification.createDiff,
68
- new ChangeViewNonViewDiffer().createDiff,
69
- new RemoveChangedViewDiffer().createDiff,
70
- RemoveEntityModification.createDiff,
71
- RemoveFieldModification.createDiff,
72
- CreateEnumModification.createDiff,
73
-
74
- UpdateEntityTableNameModification.createDiff,
75
- ToggleEventLogModification.createDiff,
76
- ToggleJunctionEventLogModification.createDiff,
77
- UpdateColumnDefinitionModification.createDiff,
78
- UpdateColumnNameModification.createDiff,
79
- UpdateRelationOnDeleteModification.createDiff,
80
- MakeRelationNotNullModification.createDiff,
81
- MakeRelationNullableModification.createDiff,
82
- EnableOrphanRemovalModification.createDiff,
83
- DisableOrphanRemovalModification.createDiff,
84
- UpdateRelationOrderByModification.createDiff,
85
- UpdateEnumModification.createDiff,
86
-
69
+ const differs: Differ[] = [
70
+ new UpdateSettingsDiffer(),
71
+ new ConvertOneToManyRelationDiffer(),
72
+ new ConvertOneHasManyToManyHasManyRelationDiffer(),
73
+ new RemoveUniqueConstraintDiffer(),
74
+ new RemoveIndexDiffer(),
75
+ new ChangeViewNonViewDiffer(),
76
+ new RemoveChangedViewDiffer(),
77
+ new RemoveEntityDiffer(),
78
+ new RemoveFieldDiffer(),
79
+ new CreateEnumDiffer(),
80
+ new UpdateEntityTableNameDiffer(),
81
+ new ToggleEventLogDiffer(),
82
+ new ToggleJunctionEventLogDiffer(),
83
+ new UpdateColumnDefinitionDiffer(),
84
+ new UpdateColumnNameDiffer(),
85
+ new UpdateRelationOnDeleteDiffer(),
86
+ new MakeRelationNotNullDiffer(),
87
+ new MakeRelationNullableDiffer(),
88
+ new EnableOrphanRemovalDiffer(),
89
+ new DisableOrphanRemovalDiffer(),
90
+ new UpdateRelationOrderByDiffer(),
91
+ new UpdateEnumDiffer(),
87
92
  new RemoveChangedFieldDiffer(it => !isRelation(it) || isOwningRelation(it)),
88
93
  new RemoveChangedFieldDiffer(it => isRelation(it) && isInverseRelation(it)),
89
- CreateEntityModification.createDiff,
90
- CreateColumnModification.createDiff,
91
- CreateViewModification.createDiff,
92
-
93
- CreateRelationModification.createDiff,
94
- CreateRelationInverseSideModification.createDiff,
95
-
96
- CreateUniqueConstraintModification.createDiff,
97
- CreateIndexModification.createDiff,
98
-
99
- RemoveEnumModification.createDiff,
100
-
101
- UpdateAclSchemaModification.createDiff,
102
- PatchAclSchemaModification.createDiff,
103
-
104
- UpdateValidationSchemaModification.createDiff,
105
- PatchValidationSchemaModification.createDiff,
106
- ].filter(isDefined)
94
+ new CreateEntityDiffer(),
95
+ new CreateColumnDiffer(),
96
+ new CreateRelationDiffer(),
97
+ new CreateViewDiffer(),
98
+ new CreateRelationInverseSideDiffer(),
99
+ new CreateUniqueConstraintDiffer(),
100
+ new CreateIndexDiffer(),
101
+ new RemoveEnumDiffer(),
102
+ new UpdateAclSchemaDiffer(),
103
+ new UpdateValidationSchemaDiffer(),
104
+ ]
107
105
 
108
106
  const diffs: Migration.Modification[] = []
109
107
  let appliedDiffsSchema = originalSchema
110
108
  for (const differ of differs) {
111
- const differDiffs = 'createDiff' in differ
112
- ? differ.createDiff(appliedDiffsSchema, updatedSchema)
113
- : differ(appliedDiffsSchema, updatedSchema)
109
+ const differDiffs = differ.createDiff(appliedDiffsSchema, updatedSchema)
114
110
  appliedDiffsSchema = this.schemaMigrator.applyModifications(appliedDiffsSchema, differDiffs, VERSION_LATEST)
115
111
  diffs.push(...differDiffs)
116
112
  }
117
113
 
118
114
 
119
- if (checkRecreate) {
120
- const errors = deepCompare(updatedSchema, appliedDiffsSchema, [])
115
+ if (!skipRecreateValidation) {
116
+ const { meta, ...appliedDiffsSchema2 } = appliedDiffsSchema as SchemaWithMeta
117
+ const errors = deepCompare(updatedSchema, appliedDiffsSchema2, [])
121
118
  if (errors.length === 0) {
122
119
  return diffs
123
120
  }
@@ -1,11 +1,12 @@
1
1
  import { Schema } from '@contember/schema'
2
- import ModificationHandlerFactory from './modifications/ModificationHandlerFactory'
2
+ import { ModificationHandlerFactory } from './modifications'
3
3
  import { Migration } from './Migration'
4
+ import { SchemaWithMeta } from './modifications/utils/schemaMeta'
4
5
 
5
6
  export class SchemaMigrator {
6
7
  constructor(private readonly modificationHandlerFactory: ModificationHandlerFactory) {}
7
8
 
8
- public applyModifications(schema: Schema, diff: readonly Migration.Modification[], formatVersion: number): Schema {
9
+ public applyModifications(schema: Schema, diff: readonly Migration.Modification[], formatVersion: number): SchemaWithMeta {
9
10
  for (const modification of diff) {
10
11
  const { modification: name, ...data } = modification
11
12
  const modificationHandler = this.modificationHandlerFactory.create(name, data, schema, {
package/src/index.ts CHANGED
@@ -6,10 +6,6 @@ export * from './SchemaMigrator'
6
6
  export * from './SchemaDiffer'
7
7
  export * from './MigrationCreator'
8
8
  export * from './MigrationDescriber'
9
- export { default as ModificationHandlerFactory } from './modifications/ModificationHandlerFactory'
10
- export * from './modifications/ModificationVersions'
11
- export * from './modifications/ModificationHandler'
12
- export * from './modifications/utils/sqlUpdateUtils'
9
+ export * from './modifications'
13
10
  export * from './MigrationFilesManager'
14
11
  export * from './MigrationVersionHelper'
15
- export { SchemaUpdateError } from './modifications/exceptions'
@@ -2,6 +2,7 @@ import { MigrationBuilder } from '@contember/database-migrations'
2
2
  import { SchemaUpdater } from './utils/schemaUpdateUtils'
3
3
  import { Schema } from '@contember/schema'
4
4
  import { Migration } from '../Migration'
5
+ import { SchemaWithMeta } from './utils/schemaMeta'
5
6
 
6
7
  export interface ModificationDescription {
7
8
  message: string
@@ -20,21 +21,33 @@ export interface ModificationHandler<Data> {
20
21
  describe(context: ModificationDescriptionContext): ModificationDescription
21
22
  }
22
23
 
23
- export type CreateDiff = (originalSchema: Schema, updatedSchema: Schema) => Migration.Modification[]
24
-
25
24
  export interface ModificationHandlerOptions {
26
25
  formatVersion: number
27
26
  systemSchema: string
28
27
  }
29
28
 
30
- export interface ModificationHandlerStatic<Data> {
31
- id: string
32
- createModification: (data: Data) => Migration.Modification<Data>
33
- createDiff?: CreateDiff
29
+ export interface ModificationHandlerConstructor<Data> {
30
+ new(data: Data, schema: SchemaWithMeta, options: ModificationHandlerOptions): ModificationHandler<Data>
31
+ }
34
32
 
35
- new(data: Data, schema: Schema, options: ModificationHandlerOptions): ModificationHandler<Data>
33
+ export interface Differ<Data = { [field: string]: any }> {
34
+ createDiff: (originalSchema: Schema, updatedSchema: Schema) => Migration.Modification<Data>[]
35
+ }
36
+
37
+
38
+ export interface ModificationType<Id extends String, Data> {
39
+ id: Id
40
+ createModification: (data: Data) => Migration.Modification<Data>
41
+ createHandler: (data: Data, schema: SchemaWithMeta, options: ModificationHandlerOptions) => ModificationHandler<Data>
36
42
  }
37
43
 
38
- export interface Differ {
39
- createDiff: CreateDiff
44
+ export const createModificationType = <Data, Id extends string>({ handler, id }: {
45
+ id: Id
46
+ handler: ModificationHandlerConstructor<Data>
47
+ }): ModificationType<Id, Data> => {
48
+ return {
49
+ id,
50
+ createModification: data => ({ modification: id, ...data }),
51
+ createHandler: (data, schema, options) => new handler(data, schema, options),
52
+ }
40
53
  }
@@ -1,87 +1,91 @@
1
1
  import { Schema } from '@contember/schema'
2
- import { ModificationHandler, ModificationHandlerOptions, ModificationHandlerStatic } from './ModificationHandler'
3
- import { CreateColumnModification, UpdateColumnDefinitionModification, UpdateColumnNameModification } from './columns'
4
- import { PatchValidationSchemaModification, UpdateValidationSchemaModification } from './validation'
5
- import { PatchAclSchemaModification, UpdateAclSchemaModification } from './acl'
6
- import { CreateUniqueConstraintModification, RemoveUniqueConstraintModification } from './constraints'
2
+ import { ModificationHandler, ModificationHandlerOptions, ModificationType } from './ModificationHandler'
3
+ import { patchAclSchemaModification, updateAclSchemaModification } from './acl'
4
+ import { createColumnModification, updateColumnDefinitionModification, updateColumnNameModification } from './columns'
5
+ import { createUniqueConstraintModification, removeUniqueConstraintModification } from './constraints'
7
6
  import {
8
- CreateEntityModification,
9
- CreateViewModification,
10
- RemoveEntityModification,
11
- ToggleEventLogModification,
12
- UpdateEntityNameModification,
13
- UpdateEntityTableNameModification,
7
+ createEntityModification, createViewModification,
8
+ removeEntityModification, toggleEventLogModification,
9
+ updateEntityNameModification,
10
+ updateEntityTableNameModification,
14
11
  } from './entities'
15
- import { CreateEnumModification, RemoveEnumModification, UpdateEnumModification } from './enums'
16
- import { RemoveFieldModification, UpdateFieldNameModification } from './fields'
12
+ import { updateViewModification } from './entities/UpdateViewModification'
17
13
  import {
18
- ConvertOneHasManyToManyHasManyRelationModification,
19
- ConvertOneToManyRelationModification,
20
- CreateRelationInverseSideModification,
21
- CreateRelationModification,
22
- DisableOrphanRemovalModification,
23
- EnableOrphanRemovalModification,
24
- MakeRelationNotNullModification,
25
- MakeRelationNullableModification,
26
- ToggleJunctionEventLogModification,
27
- UpdateRelationOnDeleteModification,
28
- UpdateRelationOrderByModification,
14
+ createEnumModification,
15
+ removeEnumModification,
16
+ updateEnumModification,
17
+ } from './enums'
18
+ import { removeFieldModification, updateFieldNameModification } from './fields'
19
+ import {
20
+ convertOneHasManyToManyHasManyRelationModification,
21
+ convertOneToManyRelationModification,
22
+ createRelationInverseSideModification,
23
+ createRelationModification, disableOrphanRemovalModification,
24
+ enableOrphanRemovalModification,
25
+ makeRelationNotNullModification,
26
+ makeRelationNullableModification, toggleJunctionEventLogModification,
27
+ updateRelationOnDeleteModification,
28
+ updateRelationOrderByModification,
29
29
  } from './relations'
30
- import { UpdateViewModification } from './entities/UpdateViewModification'
31
- import { CreateIndexModification, RemoveIndexModification } from './indexes'
30
+ import { patchValidationSchemaModification, updateValidationSchemaModification } from './validation'
31
+ import { createIndexModification, removeIndexModification } from './indexes'
32
+ import { SchemaWithMeta } from './utils/schemaMeta'
33
+ import { updateSettingsModification } from './settings'
34
+
32
35
 
33
36
  class ModificationHandlerFactory {
34
- constructor(private readonly map: Record<string, ModificationHandlerStatic<any>>) {}
37
+ constructor(private readonly map: Record<string, ModificationType<string, any>>) {}
35
38
 
36
- public create<D>(name: string, data: D, schema: Schema, options: ModificationHandlerOptions): ModificationHandler<D> {
39
+ public create<D>(name: string, data: D, schema: SchemaWithMeta, options: ModificationHandlerOptions): ModificationHandler<D> {
37
40
  if (!this.map[name]) {
38
41
  throw new Error(`Undefined modification handler for ${name}`)
39
42
  }
40
- return new this.map[name](data, schema, options)
43
+ return this.map[name].createHandler(data, schema, options)
41
44
  }
42
45
  }
43
46
 
44
47
  namespace ModificationHandlerFactory {
45
- export type HandlerMap<D> = { [modificationName: string]: ModificationHandlerStatic<D> }
48
+ type HandlerMap<D> = { [modificationName: string]: ModificationType<string, D> }
46
49
 
47
50
  const handlers = [
48
- UpdateAclSchemaModification,
49
- PatchAclSchemaModification,
50
- CreateColumnModification,
51
- UpdateColumnDefinitionModification,
52
- UpdateColumnNameModification,
53
- CreateUniqueConstraintModification,
54
- RemoveUniqueConstraintModification,
55
- CreateIndexModification,
56
- RemoveIndexModification,
57
- CreateEntityModification,
58
- RemoveEntityModification,
59
- UpdateEntityNameModification,
60
- UpdateEntityTableNameModification,
61
- UpdateViewModification,
62
- CreateViewModification,
63
- CreateEnumModification,
64
- RemoveEnumModification,
65
- UpdateEnumModification,
66
- RemoveFieldModification,
67
- UpdateFieldNameModification,
68
- CreateRelationInverseSideModification,
69
- CreateRelationModification,
70
- UpdateRelationOnDeleteModification,
71
- UpdateRelationOrderByModification,
72
- MakeRelationNotNullModification,
73
- MakeRelationNullableModification,
74
- EnableOrphanRemovalModification,
75
- DisableOrphanRemovalModification,
76
- UpdateValidationSchemaModification,
77
- PatchValidationSchemaModification,
78
- ConvertOneToManyRelationModification,
79
- ToggleEventLogModification,
80
- ToggleJunctionEventLogModification,
81
- ConvertOneHasManyToManyHasManyRelationModification,
51
+ updateSettingsModification,
52
+ updateAclSchemaModification,
53
+ patchAclSchemaModification,
54
+ createColumnModification,
55
+ updateColumnDefinitionModification,
56
+ updateColumnNameModification,
57
+ createUniqueConstraintModification,
58
+ removeUniqueConstraintModification,
59
+ createIndexModification,
60
+ removeIndexModification,
61
+ createEntityModification,
62
+ removeEntityModification,
63
+ updateEntityNameModification,
64
+ updateEntityTableNameModification,
65
+ updateViewModification,
66
+ createViewModification,
67
+ createEnumModification,
68
+ removeEnumModification,
69
+ updateEnumModification,
70
+ removeFieldModification,
71
+ updateFieldNameModification,
72
+ createRelationInverseSideModification,
73
+ createRelationModification,
74
+ updateRelationOnDeleteModification,
75
+ updateRelationOrderByModification,
76
+ makeRelationNotNullModification,
77
+ makeRelationNullableModification,
78
+ enableOrphanRemovalModification,
79
+ disableOrphanRemovalModification,
80
+ updateValidationSchemaModification,
81
+ patchValidationSchemaModification,
82
+ convertOneToManyRelationModification,
83
+ toggleEventLogModification,
84
+ toggleJunctionEventLogModification,
85
+ convertOneHasManyToManyHasManyRelationModification,
82
86
  ]
83
87
 
84
88
  export const defaultFactoryMap: HandlerMap<any> = Object.fromEntries(handlers.map(it => [it.id, it]))
85
89
  }
86
90
 
87
- export default ModificationHandlerFactory
91
+ export { ModificationHandlerFactory }
@@ -1,12 +1,10 @@
1
1
  import { MigrationBuilder } from '@contember/database-migrations'
2
2
  import { SchemaUpdater } from '../utils/schemaUpdateUtils'
3
- import { ModificationHandlerStatic } from '../ModificationHandler'
3
+ import { createModificationType, ModificationHandler } from '../ModificationHandler'
4
4
  import { applyPatch, Operation } from 'rfc6902'
5
5
  import deepCopy from '../../utils/deepCopy'
6
6
 
7
- export const PatchAclSchemaModification: ModificationHandlerStatic<PatchAclSchemaModificationData> = class {
8
- static id = 'patchAclSchema'
9
-
7
+ export class PatchAclSchemaModificationHandler implements ModificationHandler<PatchAclSchemaModificationData>{
10
8
  constructor(private readonly data: PatchAclSchemaModificationData) {}
11
9
 
12
10
  public createSql(builder: MigrationBuilder): void {}
@@ -29,12 +27,13 @@ export const PatchAclSchemaModification: ModificationHandlerStatic<PatchAclSchem
29
27
  describe() {
30
28
  return { message: 'Update ACL schema' }
31
29
  }
32
-
33
- static createModification(data: PatchAclSchemaModificationData) {
34
- return { modification: this.id, ...data }
35
- }
36
30
  }
37
31
 
32
+ export const patchAclSchemaModification = createModificationType({
33
+ id: 'patchAclSchema',
34
+ handler: PatchAclSchemaModificationHandler,
35
+ })
36
+
38
37
  export interface PatchAclSchemaModificationData {
39
38
  patch: Operation[]
40
39
  }
@@ -1,14 +1,12 @@
1
1
  import { MigrationBuilder } from '@contember/database-migrations'
2
2
  import { Acl, Schema } from '@contember/schema'
3
3
  import { SchemaUpdater } from '../utils/schemaUpdateUtils'
4
- import { ModificationHandlerStatic } from '../ModificationHandler'
4
+ import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
5
5
  import deepEqual from 'fast-deep-equal'
6
6
  import { createPatch } from 'rfc6902'
7
- import { PatchAclSchemaModification } from './PatchAclSchemaModification'
8
-
9
- export const UpdateAclSchemaModification: ModificationHandlerStatic<UpdateAclSchemaModificationData> = class {
10
- public static id = 'updateAclSchema'
7
+ import { patchAclSchemaModification } from './PatchAclSchemaModification'
11
8
 
9
+ export class UpdateAclSchemaModificationHandler implements ModificationHandler<UpdateAclSchemaModificationData>{
12
10
  constructor(private readonly data: UpdateAclSchemaModificationData) {}
13
11
 
14
12
  public createSql(builder: MigrationBuilder): void {}
@@ -23,23 +21,26 @@ export const UpdateAclSchemaModification: ModificationHandlerStatic<UpdateAclSch
23
21
  describe() {
24
22
  return { message: 'Update ACL schema' }
25
23
  }
24
+ }
26
25
 
27
- static createModification(data: UpdateAclSchemaModificationData) {
28
- return { modification: this.id, ...data }
29
- }
26
+ export interface UpdateAclSchemaModificationData {
27
+ schema: Acl.Schema
28
+ }
30
29
 
31
- static createDiff(originalSchema: Schema, updatedSchema: Schema) {
30
+ export const updateAclSchemaModification = createModificationType({
31
+ id: 'updateAclSchema',
32
+ handler: UpdateAclSchemaModificationHandler,
33
+ })
34
+
35
+ export class UpdateAclSchemaDiffer implements Differ {
36
+ createDiff(originalSchema: Schema, updatedSchema: Schema) {
32
37
  if (deepEqual(originalSchema.acl, updatedSchema.acl)) {
33
38
  return []
34
39
  }
35
40
  const patch = createPatch(originalSchema.acl, updatedSchema.acl)
36
41
  if (patch.length <= 100) {
37
- return [PatchAclSchemaModification.createModification({ patch })]
42
+ return [patchAclSchemaModification.createModification({ patch })]
38
43
  }
39
- return [UpdateAclSchemaModification.createModification({ schema: updatedSchema.acl })]
44
+ return [updateAclSchemaModification.createModification({ schema: updatedSchema.acl })]
40
45
  }
41
46
  }
42
-
43
- export interface UpdateAclSchemaModificationData {
44
- schema: Acl.Schema
45
- }