@contember/schema-migrations 1.1.1 → 1.2.0-alpha.10

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 (256) hide show
  1. package/dist/src/MigrationDescriber.d.ts +1 -2
  2. package/dist/src/MigrationDescriber.d.ts.map +1 -1
  3. package/dist/src/MigrationDescriber.js +5 -7
  4. package/dist/src/MigrationDescriber.js.map +1 -1
  5. package/dist/src/SchemaDiffer.d.ts.map +1 -1
  6. package/dist/src/SchemaDiffer.js +36 -46
  7. package/dist/src/SchemaDiffer.js.map +1 -1
  8. package/dist/src/SchemaMigrator.d.ts +1 -1
  9. package/dist/src/SchemaMigrator.d.ts.map +1 -1
  10. package/dist/src/index.d.ts +1 -5
  11. package/dist/src/index.d.ts.map +1 -1
  12. package/dist/src/index.js +1 -11
  13. package/dist/src/index.js.map +1 -1
  14. package/dist/src/modifications/ModificationHandler.d.ts +11 -6
  15. package/dist/src/modifications/ModificationHandler.d.ts.map +1 -1
  16. package/dist/src/modifications/ModificationHandler.js +9 -1
  17. package/dist/src/modifications/ModificationHandler.js.map +1 -1
  18. package/dist/src/modifications/ModificationHandlerFactory.d.ts +6 -5
  19. package/dist/src/modifications/ModificationHandlerFactory.d.ts.map +1 -1
  20. package/dist/src/modifications/ModificationHandlerFactory.js +42 -37
  21. package/dist/src/modifications/ModificationHandlerFactory.js.map +1 -1
  22. package/dist/src/modifications/acl/PatchAclSchemaModification.d.ts +13 -2
  23. package/dist/src/modifications/acl/PatchAclSchemaModification.d.ts.map +1 -1
  24. package/dist/src/modifications/acl/PatchAclSchemaModification.js +28 -28
  25. package/dist/src/modifications/acl/PatchAclSchemaModification.js.map +1 -1
  26. package/dist/src/modifications/acl/UpdateAclSchemaModification.d.ts +17 -3
  27. package/dist/src/modifications/acl/UpdateAclSchemaModification.d.ts.map +1 -1
  28. package/dist/src/modifications/acl/UpdateAclSchemaModification.js +33 -30
  29. package/dist/src/modifications/acl/UpdateAclSchemaModification.js.map +1 -1
  30. package/dist/src/modifications/columns/CreateColumnModification.d.ts +23 -3
  31. package/dist/src/modifications/columns/CreateColumnModification.d.ts.map +1 -1
  32. package/dist/src/modifications/columns/CreateColumnModification.js +70 -67
  33. package/dist/src/modifications/columns/CreateColumnModification.js.map +1 -1
  34. package/dist/src/modifications/columns/UpdateColumnDefinitionModification.d.ts +21 -3
  35. package/dist/src/modifications/columns/UpdateColumnDefinitionModification.d.ts.map +1 -1
  36. package/dist/src/modifications/columns/UpdateColumnDefinitionModification.js +73 -70
  37. package/dist/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
  38. package/dist/src/modifications/columns/UpdateColumnNameModification.d.ts +20 -2
  39. package/dist/src/modifications/columns/UpdateColumnNameModification.d.ts.map +1 -1
  40. package/dist/src/modifications/columns/UpdateColumnNameModification.js +97 -94
  41. package/dist/src/modifications/columns/UpdateColumnNameModification.js.map +1 -1
  42. package/dist/src/modifications/constraints/CreateUniqueConstraintModification.d.ts +21 -3
  43. package/dist/src/modifications/constraints/CreateUniqueConstraintModification.d.ts.map +1 -1
  44. package/dist/src/modifications/constraints/CreateUniqueConstraintModification.js +72 -66
  45. package/dist/src/modifications/constraints/CreateUniqueConstraintModification.js.map +1 -1
  46. package/dist/src/modifications/constraints/RemoveUniqueConstraintModification.d.ts +18 -2
  47. package/dist/src/modifications/constraints/RemoveUniqueConstraintModification.d.ts.map +1 -1
  48. package/dist/src/modifications/constraints/RemoveUniqueConstraintModification.js +45 -42
  49. package/dist/src/modifications/constraints/RemoveUniqueConstraintModification.js.map +1 -1
  50. package/dist/src/modifications/differs/ChangeViewNonViewDiffer.js +1 -1
  51. package/dist/src/modifications/differs/RemoveChangedFieldDiffer.js +1 -1
  52. package/dist/src/modifications/differs/RemoveChangedViewDiffer.js +1 -1
  53. package/dist/src/modifications/entities/CreateEntityModification.d.ts +21 -6
  54. package/dist/src/modifications/entities/CreateEntityModification.d.ts.map +1 -1
  55. package/dist/src/modifications/entities/CreateEntityModification.js +65 -61
  56. package/dist/src/modifications/entities/CreateEntityModification.js.map +1 -1
  57. package/dist/src/modifications/entities/CreateViewModification.d.ts +23 -6
  58. package/dist/src/modifications/entities/CreateViewModification.d.ts.map +1 -1
  59. package/dist/src/modifications/entities/CreateViewModification.js +59 -55
  60. package/dist/src/modifications/entities/CreateViewModification.js.map +1 -1
  61. package/dist/src/modifications/entities/RemoveEntityModification.d.ts +21 -2
  62. package/dist/src/modifications/entities/RemoveEntityModification.d.ts.map +1 -1
  63. package/dist/src/modifications/entities/RemoveEntityModification.js +73 -70
  64. package/dist/src/modifications/entities/RemoveEntityModification.js.map +1 -1
  65. package/dist/src/modifications/entities/ToggleEventLogModification.d.ts +19 -2
  66. package/dist/src/modifications/entities/ToggleEventLogModification.d.ts.map +1 -1
  67. package/dist/src/modifications/entities/ToggleEventLogModification.js +57 -54
  68. package/dist/src/modifications/entities/ToggleEventLogModification.js.map +1 -1
  69. package/dist/src/modifications/entities/UpdateEntityNameModification.d.ts +18 -2
  70. package/dist/src/modifications/entities/UpdateEntityNameModification.d.ts.map +1 -1
  71. package/dist/src/modifications/entities/UpdateEntityNameModification.js +78 -78
  72. package/dist/src/modifications/entities/UpdateEntityNameModification.js.map +1 -1
  73. package/dist/src/modifications/entities/UpdateEntityTableNameModification.d.ts +18 -2
  74. package/dist/src/modifications/entities/UpdateEntityTableNameModification.d.ts.map +1 -1
  75. package/dist/src/modifications/entities/UpdateEntityTableNameModification.js +40 -34
  76. package/dist/src/modifications/entities/UpdateEntityTableNameModification.js.map +1 -1
  77. package/dist/src/modifications/entities/UpdateViewModification.d.ts +15 -3
  78. package/dist/src/modifications/entities/UpdateViewModification.d.ts.map +1 -1
  79. package/dist/src/modifications/entities/UpdateViewModification.js +28 -28
  80. package/dist/src/modifications/entities/UpdateViewModification.js.map +1 -1
  81. package/dist/src/modifications/enums/CreateEnumModification.d.ts +18 -2
  82. package/dist/src/modifications/enums/CreateEnumModification.d.ts.map +1 -1
  83. package/dist/src/modifications/enums/CreateEnumModification.js +42 -36
  84. package/dist/src/modifications/enums/CreateEnumModification.js.map +1 -1
  85. package/dist/src/modifications/enums/RemoveEnumModification.d.ts +18 -2
  86. package/dist/src/modifications/enums/RemoveEnumModification.d.ts.map +1 -1
  87. package/dist/src/modifications/enums/RemoveEnumModification.js +36 -33
  88. package/dist/src/modifications/enums/RemoveEnumModification.js.map +1 -1
  89. package/dist/src/modifications/enums/UpdateEnumModification.d.ts +19 -2
  90. package/dist/src/modifications/enums/UpdateEnumModification.d.ts.map +1 -1
  91. package/dist/src/modifications/enums/UpdateEnumModification.js +43 -40
  92. package/dist/src/modifications/enums/UpdateEnumModification.js.map +1 -1
  93. package/dist/src/modifications/fields/RemoveFieldModification.d.ts +20 -2
  94. package/dist/src/modifications/fields/RemoveFieldModification.d.ts.map +1 -1
  95. package/dist/src/modifications/fields/RemoveFieldModification.js +67 -64
  96. package/dist/src/modifications/fields/RemoveFieldModification.js.map +1 -1
  97. package/dist/src/modifications/fields/UpdateFieldNameModification.d.ts +18 -2
  98. package/dist/src/modifications/fields/UpdateFieldNameModification.d.ts.map +1 -1
  99. package/dist/src/modifications/fields/UpdateFieldNameModification.js +132 -132
  100. package/dist/src/modifications/fields/UpdateFieldNameModification.js.map +1 -1
  101. package/dist/src/modifications/index.d.ts +14 -0
  102. package/dist/src/modifications/index.d.ts.map +1 -0
  103. package/dist/src/modifications/index.js +32 -0
  104. package/dist/src/modifications/index.js.map +1 -0
  105. package/dist/src/modifications/indexes/CreateIndexModification.d.ts +23 -0
  106. package/dist/src/modifications/indexes/CreateIndexModification.d.ts.map +1 -0
  107. package/dist/src/modifications/indexes/CreateIndexModification.js +75 -0
  108. package/dist/src/modifications/indexes/CreateIndexModification.js.map +1 -0
  109. package/dist/src/modifications/indexes/RemoveIndexModification.d.ts +23 -0
  110. package/dist/src/modifications/indexes/RemoveIndexModification.d.ts.map +1 -0
  111. package/dist/src/modifications/indexes/RemoveIndexModification.js +56 -0
  112. package/dist/src/modifications/indexes/RemoveIndexModification.js.map +1 -0
  113. package/dist/src/modifications/indexes/index.d.ts +3 -0
  114. package/dist/src/modifications/indexes/index.d.ts.map +1 -0
  115. package/dist/src/modifications/indexes/index.js +19 -0
  116. package/dist/src/modifications/indexes/index.js.map +1 -0
  117. package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts +23 -3
  118. package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts.map +1 -1
  119. package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js +68 -65
  120. package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js.map +1 -1
  121. package/dist/src/modifications/relations/ConvertOneToManyRelationModification.d.ts +23 -2
  122. package/dist/src/modifications/relations/ConvertOneToManyRelationModification.d.ts.map +1 -1
  123. package/dist/src/modifications/relations/ConvertOneToManyRelationModification.js +73 -70
  124. package/dist/src/modifications/relations/ConvertOneToManyRelationModification.js.map +1 -1
  125. package/dist/src/modifications/relations/CreateRelationInverseSideModification.d.ts +20 -3
  126. package/dist/src/modifications/relations/CreateRelationInverseSideModification.d.ts.map +1 -1
  127. package/dist/src/modifications/relations/CreateRelationInverseSideModification.js +36 -33
  128. package/dist/src/modifications/relations/CreateRelationInverseSideModification.js.map +1 -1
  129. package/dist/src/modifications/relations/CreateRelationModification.d.ts +25 -3
  130. package/dist/src/modifications/relations/CreateRelationModification.d.ts.map +1 -1
  131. package/dist/src/modifications/relations/CreateRelationModification.js +88 -85
  132. package/dist/src/modifications/relations/CreateRelationModification.js.map +1 -1
  133. package/dist/src/modifications/relations/DisableOrphanRemovalModification.d.ts +20 -2
  134. package/dist/src/modifications/relations/DisableOrphanRemovalModification.d.ts.map +1 -1
  135. package/dist/src/modifications/relations/DisableOrphanRemovalModification.js +42 -39
  136. package/dist/src/modifications/relations/DisableOrphanRemovalModification.js.map +1 -1
  137. package/dist/src/modifications/relations/EnableOrphanRemovalModification.d.ts +20 -2
  138. package/dist/src/modifications/relations/EnableOrphanRemovalModification.d.ts.map +1 -1
  139. package/dist/src/modifications/relations/EnableOrphanRemovalModification.js +45 -42
  140. package/dist/src/modifications/relations/EnableOrphanRemovalModification.js.map +1 -1
  141. package/dist/src/modifications/relations/MakeRelationNotNullModification.d.ts +21 -2
  142. package/dist/src/modifications/relations/MakeRelationNotNullModification.d.ts.map +1 -1
  143. package/dist/src/modifications/relations/MakeRelationNotNullModification.js +55 -52
  144. package/dist/src/modifications/relations/MakeRelationNotNullModification.js.map +1 -1
  145. package/dist/src/modifications/relations/MakeRelationNullableModification.d.ts +20 -2
  146. package/dist/src/modifications/relations/MakeRelationNullableModification.d.ts.map +1 -1
  147. package/dist/src/modifications/relations/MakeRelationNullableModification.js +54 -51
  148. package/dist/src/modifications/relations/MakeRelationNullableModification.js.map +1 -1
  149. package/dist/src/modifications/relations/ToggleJunctionEventLogModification.d.ts +27 -0
  150. package/dist/src/modifications/relations/ToggleJunctionEventLogModification.d.ts.map +1 -0
  151. package/dist/src/modifications/relations/ToggleJunctionEventLogModification.js +84 -0
  152. package/dist/src/modifications/relations/ToggleJunctionEventLogModification.js.map +1 -0
  153. package/dist/src/modifications/relations/UpdateRelationOnDeleteModification.d.ts +20 -3
  154. package/dist/src/modifications/relations/UpdateRelationOnDeleteModification.d.ts.map +1 -1
  155. package/dist/src/modifications/relations/UpdateRelationOnDeleteModification.js +42 -39
  156. package/dist/src/modifications/relations/UpdateRelationOnDeleteModification.js.map +1 -1
  157. package/dist/src/modifications/relations/UpdateRelationOrderByModification.d.ts +20 -3
  158. package/dist/src/modifications/relations/UpdateRelationOrderByModification.d.ts.map +1 -1
  159. package/dist/src/modifications/relations/UpdateRelationOrderByModification.js +43 -40
  160. package/dist/src/modifications/relations/UpdateRelationOrderByModification.js.map +1 -1
  161. package/dist/src/modifications/relations/index.d.ts +1 -1
  162. package/dist/src/modifications/relations/index.d.ts.map +1 -1
  163. package/dist/src/modifications/relations/index.js +1 -1
  164. package/dist/src/modifications/relations/index.js.map +1 -1
  165. package/dist/src/modifications/validation/PatchValidationSchemaModification.d.ts +13 -2
  166. package/dist/src/modifications/validation/PatchValidationSchemaModification.d.ts.map +1 -1
  167. package/dist/src/modifications/validation/PatchValidationSchemaModification.js +28 -28
  168. package/dist/src/modifications/validation/PatchValidationSchemaModification.js.map +1 -1
  169. package/dist/src/modifications/validation/UpdateValidationSchemaModification.d.ts +17 -3
  170. package/dist/src/modifications/validation/UpdateValidationSchemaModification.d.ts.map +1 -1
  171. package/dist/src/modifications/validation/UpdateValidationSchemaModification.js +33 -30
  172. package/dist/src/modifications/validation/UpdateValidationSchemaModification.js.map +1 -1
  173. package/dist/src/tsconfig.tsbuildinfo +1 -1
  174. package/dist/src/utils/PartialEntity.d.ts +5 -0
  175. package/dist/src/utils/PartialEntity.d.ts.map +1 -0
  176. package/dist/src/utils/PartialEntity.js +3 -0
  177. package/dist/src/utils/PartialEntity.js.map +1 -0
  178. package/dist/tests/cases/integration/createAndDropIndex.test.d.ts +2 -0
  179. package/dist/tests/cases/integration/createAndDropIndex.test.d.ts.map +1 -0
  180. package/dist/tests/cases/integration/createAndDropIndex.test.js +57 -0
  181. package/dist/tests/cases/integration/createAndDropIndex.test.js.map +1 -0
  182. package/dist/tests/cases/integration/createEntity.test.js +2 -0
  183. package/dist/tests/cases/integration/createEntity.test.js.map +1 -1
  184. package/dist/tests/cases/integration/createManyHasMany.test.js +1 -0
  185. package/dist/tests/cases/integration/createManyHasMany.test.js.map +1 -1
  186. package/dist/tests/cases/integration/createManyHasOne.test.js +1 -0
  187. package/dist/tests/cases/integration/createManyHasOne.test.js.map +1 -1
  188. package/dist/tests/cases/integration/createOneHasMany.test.js +1 -0
  189. package/dist/tests/cases/integration/createOneHasMany.test.js.map +1 -1
  190. package/dist/tests/cases/integration/createOneHasOne.test.js +2 -0
  191. package/dist/tests/cases/integration/createOneHasOne.test.js.map +1 -1
  192. package/dist/tests/cases/integration/createView.test.js +1 -0
  193. package/dist/tests/cases/integration/createView.test.js.map +1 -1
  194. package/dist/tests/cases/integration/updateView.test.js +9 -0
  195. package/dist/tests/cases/integration/updateView.test.js.map +1 -1
  196. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  197. package/package.json +7 -7
  198. package/src/MigrationDescriber.ts +8 -8
  199. package/src/SchemaDiffer.ts +65 -76
  200. package/src/SchemaMigrator.ts +1 -1
  201. package/src/index.ts +1 -5
  202. package/src/modifications/ModificationHandler.ts +20 -8
  203. package/src/modifications/ModificationHandlerFactory.ts +65 -61
  204. package/src/modifications/acl/PatchAclSchemaModification.ts +7 -8
  205. package/src/modifications/acl/UpdateAclSchemaModification.ts +16 -15
  206. package/src/modifications/columns/CreateColumnModification.ts +18 -16
  207. package/src/modifications/columns/UpdateColumnDefinitionModification.ts +27 -25
  208. package/src/modifications/columns/UpdateColumnNameModification.ts +23 -16
  209. package/src/modifications/constraints/CreateUniqueConstraintModification.ts +21 -15
  210. package/src/modifications/constraints/RemoveUniqueConstraintModification.ts +18 -14
  211. package/src/modifications/differs/ChangeViewNonViewDiffer.ts +2 -2
  212. package/src/modifications/differs/RemoveChangedFieldDiffer.ts +2 -2
  213. package/src/modifications/differs/RemoveChangedViewDiffer.ts +2 -2
  214. package/src/modifications/entities/CreateEntityModification.ts +19 -11
  215. package/src/modifications/entities/CreateViewModification.ts +13 -11
  216. package/src/modifications/entities/RemoveEntityModification.ts +22 -15
  217. package/src/modifications/entities/ToggleEventLogModification.ts +20 -13
  218. package/src/modifications/entities/UpdateEntityNameModification.ts +9 -9
  219. package/src/modifications/entities/UpdateEntityTableNameModification.ts +18 -13
  220. package/src/modifications/entities/UpdateViewModification.ts +7 -7
  221. package/src/modifications/enums/CreateEnumModification.ts +18 -13
  222. package/src/modifications/enums/RemoveEnumModification.ts +14 -12
  223. package/src/modifications/enums/UpdateEnumModification.ts +15 -13
  224. package/src/modifications/fields/RemoveFieldModification.ts +16 -13
  225. package/src/modifications/fields/UpdateFieldNameModification.ts +9 -10
  226. package/src/modifications/index.ts +13 -0
  227. package/src/modifications/indexes/CreateIndexModification.ts +83 -0
  228. package/src/modifications/indexes/RemoveIndexModification.ts +68 -0
  229. package/src/modifications/indexes/index.ts +2 -0
  230. package/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.ts +35 -25
  231. package/src/modifications/relations/ConvertOneToManyRelationModification.ts +31 -24
  232. package/src/modifications/relations/CreateRelationInverseSideModification.ts +15 -13
  233. package/src/modifications/relations/CreateRelationModification.ts +32 -24
  234. package/src/modifications/relations/DisableOrphanRemovalModification.ts +15 -12
  235. package/src/modifications/relations/EnableOrphanRemovalModification.ts +16 -13
  236. package/src/modifications/relations/MakeRelationNotNullModification.ts +16 -14
  237. package/src/modifications/relations/MakeRelationNullableModification.ts +17 -13
  238. package/src/modifications/relations/{ToggleManyHasManyEventLogModification.ts → ToggleJunctionEventLogModification.ts} +21 -14
  239. package/src/modifications/relations/UpdateRelationOnDeleteModification.ts +16 -14
  240. package/src/modifications/relations/UpdateRelationOrderByModification.ts +17 -14
  241. package/src/modifications/relations/index.ts +1 -1
  242. package/src/modifications/validation/PatchValidationSchemaModification.ts +7 -7
  243. package/src/modifications/validation/UpdateValidationSchemaModification.ts +17 -14
  244. package/src/utils/PartialEntity.ts +5 -0
  245. package/tests/cases/integration/createAndDropIndex.test.ts +44 -0
  246. package/tests/cases/integration/createEntity.test.ts +2 -0
  247. package/tests/cases/integration/createManyHasMany.test.ts +1 -0
  248. package/tests/cases/integration/createManyHasOne.test.ts +1 -0
  249. package/tests/cases/integration/createOneHasMany.test.ts +1 -0
  250. package/tests/cases/integration/createOneHasOne.test.ts +2 -0
  251. package/tests/cases/integration/createView.test.ts +1 -0
  252. package/tests/cases/integration/updateView.test.ts +9 -0
  253. package/dist/src/modifications/relations/ToggleManyHasManyEventLogModification.d.ts +0 -8
  254. package/dist/src/modifications/relations/ToggleManyHasManyEventLogModification.d.ts.map +0 -1
  255. package/dist/src/modifications/relations/ToggleManyHasManyEventLogModification.js +0 -81
  256. package/dist/src/modifications/relations/ToggleManyHasManyEventLogModification.js.map +0 -1
@@ -1,13 +1,13 @@
1
1
  import { MigrationBuilder } from '@contember/database-migrations'
2
2
  import { Model, Schema } from '@contember/schema'
3
3
  import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'
4
- import { ModificationHandlerStatic } from '../ModificationHandler'
4
+ import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
5
5
  import { updateColumns } from '../utils/diffUtils'
6
6
  import { acceptFieldVisitor } from '@contember/schema-utils'
7
7
 
8
- export const UpdateColumnNameModification: ModificationHandlerStatic<UpdateColumnNameModificationData> = class {
9
- static id = 'updateColumnName'
10
- constructor(private readonly data: UpdateColumnNameModificationData, private readonly schema: Schema) {}
8
+ export class UpdateColumnNameModificationHandler implements ModificationHandler<UpdateColumnNameModificationData> {
9
+ constructor(private readonly data: UpdateColumnNameModificationData, private readonly schema: Schema) {
10
+ }
11
11
 
12
12
  public createSql(builder: MigrationBuilder): void {
13
13
  const entity = this.schema.model.entities[this.data.entityName]
@@ -21,7 +21,7 @@ export const UpdateColumnNameModification: ModificationHandlerStatic<UpdateColum
21
21
  visitManyHasOne: (entity, relation) => {
22
22
  builder.renameColumn(entity.tableName, relation.joiningColumn.columnName, this.data.columnName)
23
23
  },
24
- visitOneHasOneOwning: (entity, relation) => {
24
+ visitOneHasOneOwning: (entity, relation) => {
25
25
  builder.renameColumn(entity.tableName, relation.joiningColumn.columnName, this.data.columnName)
26
26
  },
27
27
  visitManyHasManyInverse: () => {
@@ -43,7 +43,10 @@ export const UpdateColumnNameModification: ModificationHandlerStatic<UpdateColum
43
43
  return updateModel(
44
44
  updateEntity(
45
45
  this.data.entityName,
46
- updateField(this.data.fieldName, ({ field, entity }) => acceptFieldVisitor<Model.AnyField>(this.schema.model, entity, field, {
46
+ updateField(this.data.fieldName, ({
47
+ field,
48
+ entity,
49
+ }) => acceptFieldVisitor<Model.AnyField>(this.schema.model, entity, field, {
47
50
  visitColumn: (entity, column) => {
48
51
  return {
49
52
  ...column,
@@ -88,17 +91,26 @@ export const UpdateColumnNameModification: ModificationHandlerStatic<UpdateColum
88
91
  describe() {
89
92
  return { message: `Change column name of field ${this.data.entityName}.${this.data.fieldName}` }
90
93
  }
94
+ }
91
95
 
92
- static createModification(data: UpdateColumnNameModificationData) {
93
- return { modification: this.id, ...data }
94
- }
96
+ export interface UpdateColumnNameModificationData {
97
+ entityName: string
98
+ fieldName: string
99
+ columnName: string
100
+ }
101
+
102
+ export const updateColumnNameModification = createModificationType({
103
+ id: 'updateColumnName',
104
+ handler: UpdateColumnNameModificationHandler,
105
+ })
95
106
 
96
- static createDiff(originalSchema: Schema, updatedSchema: Schema) {
107
+ export class UpdateColumnNameDiffer implements Differ {
108
+ createDiff(originalSchema: Schema, updatedSchema: Schema) {
97
109
  return updateColumns(originalSchema, updatedSchema, ({ originalColumn, updatedColumn, updatedEntity }) => {
98
110
  if (originalColumn.columnName === updatedColumn.columnName) {
99
111
  return undefined
100
112
  }
101
- return UpdateColumnNameModification.createModification({
113
+ return updateColumnNameModification.createModification({
102
114
  entityName: updatedEntity.name,
103
115
  fieldName: updatedColumn.name,
104
116
  columnName: updatedColumn.columnName,
@@ -106,8 +118,3 @@ export const UpdateColumnNameModification: ModificationHandlerStatic<UpdateColum
106
118
  })
107
119
  }
108
120
  }
109
- export interface UpdateColumnNameModificationData {
110
- entityName: string
111
- fieldName: string
112
- columnName: string
113
- }
@@ -1,13 +1,12 @@
1
1
  import { MigrationBuilder } from '@contember/database-migrations'
2
2
  import { Model, Schema } from '@contember/schema'
3
3
  import { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'
4
- import { ModificationHandlerStatic } from '../ModificationHandler'
4
+ import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
5
5
  import { acceptFieldVisitor } from '@contember/schema-utils'
6
6
 
7
- export const CreateUniqueConstraintModification: ModificationHandlerStatic<CreateUniqueConstraintModificationData> = class {
8
- static id = 'createUniqueConstraint'
9
-
10
- constructor(private readonly data: CreateUniqueConstraintModificationData, private readonly schema: Schema) {}
7
+ export class CreateUniqueConstraintModificationHandler implements ModificationHandler<CreateUniqueConstraintModificationData> {
8
+ constructor(private readonly data: CreateUniqueConstraintModificationData, private readonly schema: Schema) {
9
+ }
11
10
 
12
11
  public createSql(builder: MigrationBuilder): void {
13
12
  const entity = this.schema.model.entities[this.data.entityName]
@@ -66,20 +65,27 @@ export const CreateUniqueConstraintModification: ModificationHandlerStatic<Creat
66
65
  }
67
66
  }
68
67
 
69
- static createModification(data: CreateUniqueConstraintModificationData) {
70
- return { modification: this.id, ...data }
71
- }
68
+ }
72
69
 
73
- static createDiff(originalSchema: Schema, updatedSchema: Schema) {
70
+ export interface CreateUniqueConstraintModificationData {
71
+ entityName: string
72
+ unique: Model.UniqueConstraint
73
+ }
74
+
75
+ export const createUniqueConstraintModification = createModificationType({
76
+ id: 'createUniqueConstraint',
77
+ handler: CreateUniqueConstraintModificationHandler,
78
+ })
79
+
80
+ export class CreateUniqueConstraintDiffer implements Differ {
81
+ createDiff(originalSchema: Schema, updatedSchema: Schema) {
74
82
  return Object.values(updatedSchema.model.entities).flatMap(entity =>
75
83
  Object.values(entity.unique)
76
84
  .filter(it => !originalSchema.model.entities[entity.name].unique[it.name])
77
- .map(unique => CreateUniqueConstraintModification.createModification({ entityName: entity.name, unique })),
85
+ .map(unique => createUniqueConstraintModification.createModification({
86
+ entityName: entity.name,
87
+ unique,
88
+ })),
78
89
  )
79
90
  }
80
91
  }
81
-
82
- export interface CreateUniqueConstraintModificationData {
83
- entityName: string
84
- unique: Model.UniqueConstraint
85
- }
@@ -1,12 +1,12 @@
1
1
  import { MigrationBuilder } from '@contember/database-migrations'
2
2
  import { Schema } from '@contember/schema'
3
3
  import { SchemaUpdater, updateEntity, updateModel } 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
 
7
- export const RemoveUniqueConstraintModification: ModificationHandlerStatic<RemoveUniqueConstraintModificationData> = class {
8
- static id = 'removeUniqueConstraint'
9
- constructor(private readonly data: RemoveUniqueConstraintModificationData, private readonly schema: Schema) {}
7
+ export class RemoveUniqueConstraintModificationHandler implements ModificationHandler<RemoveUniqueConstraintModificationData> {
8
+ constructor(private readonly data: RemoveUniqueConstraintModificationData, private readonly schema: Schema) {
9
+ }
10
10
 
11
11
  public createSql(builder: MigrationBuilder): void {
12
12
  const entity = this.schema.model.entities[this.data.entityName]
@@ -32,12 +32,21 @@ export const RemoveUniqueConstraintModification: ModificationHandlerStatic<Remov
32
32
  const fields = this.schema.model.entities[this.data.entityName].unique[this.data.constraintName].fields
33
33
  return { message: `Remove unique constraint (${fields.join(', ')}) on entity ${this.data.entityName}` }
34
34
  }
35
+ }
35
36
 
36
- static createModification(data: RemoveUniqueConstraintModificationData) {
37
- return { modification: this.id, ...data }
38
- }
37
+ export interface RemoveUniqueConstraintModificationData {
38
+ entityName: string
39
+ constraintName: string
40
+ }
39
41
 
40
- static createDiff(originalSchema: Schema, updatedSchema: Schema) {
42
+ export const removeUniqueConstraintModification = createModificationType({
43
+ id: 'removeUniqueConstraint',
44
+ handler: RemoveUniqueConstraintModificationHandler,
45
+ })
46
+
47
+
48
+ export class RemoveUniqueConstraintDiffer implements Differ {
49
+ createDiff(originalSchema: Schema, updatedSchema: Schema) {
41
50
  return Object.values(originalSchema.model.entities).flatMap(entity =>
42
51
  Object.values(entity.unique)
43
52
  .filter(
@@ -47,7 +56,7 @@ export const RemoveUniqueConstraintModification: ModificationHandlerStatic<Remov
47
56
  !deepEqual(it.fields, updatedSchema.model.entities[entity.name].unique[it.name].fields)),
48
57
  )
49
58
  .map(unique =>
50
- RemoveUniqueConstraintModification.createModification({
59
+ removeUniqueConstraintModification.createModification({
51
60
  entityName: entity.name,
52
61
  constraintName: unique.name,
53
62
  }),
@@ -55,8 +64,3 @@ export const RemoveUniqueConstraintModification: ModificationHandlerStatic<Remov
55
64
  )
56
65
  }
57
66
  }
58
-
59
- export interface RemoveUniqueConstraintModificationData {
60
- entityName: string
61
- constraintName: string
62
- }
@@ -1,6 +1,6 @@
1
1
  import { Differ } from '../ModificationHandler'
2
2
  import { Schema } from '@contember/schema'
3
- import { RemoveEntityModification } from '../entities'
3
+ import { removeEntityModification } from '../entities'
4
4
 
5
5
  export class ChangeViewNonViewDiffer implements Differ {
6
6
  createDiff(originalSchema: Schema, updatedSchema: Schema) {
@@ -12,6 +12,6 @@ export class ChangeViewNonViewDiffer implements Differ {
12
12
  }
13
13
  return !!origEntity.view !== !!it.view
14
14
  })
15
- .map(it => RemoveEntityModification.createModification({ entityName: it.name }))
15
+ .map(it => removeEntityModification.createModification({ entityName: it.name }))
16
16
  }
17
17
  }
@@ -2,7 +2,7 @@ import { Differ } from '../ModificationHandler'
2
2
  import { Model, Schema } from '@contember/schema'
3
3
  import { updateFields } from '../utils/diffUtils'
4
4
  import deepEqual from 'fast-deep-equal'
5
- import { RemoveFieldModification } from '../fields'
5
+ import { removeFieldModification } from '../fields'
6
6
 
7
7
  export class RemoveChangedFieldDiffer implements Differ {
8
8
  constructor(
@@ -17,7 +17,7 @@ export class RemoveChangedFieldDiffer implements Differ {
17
17
  }
18
18
  if (!deepEqual({ ...updatedField, inversedBy: undefined }, { ...originalField, inversedBy: undefined })) {
19
19
  return [
20
- RemoveFieldModification.createModification({
20
+ removeFieldModification.createModification({
21
21
  entityName: updatedEntity.name,
22
22
  fieldName: updatedField.name,
23
23
  }),
@@ -1,7 +1,7 @@
1
1
  import { Differ } from '../ModificationHandler'
2
2
  import { Model, Schema } from '@contember/schema'
3
3
  import deepEqual from 'fast-deep-equal'
4
- import { RemoveEntityModification } from '../entities'
4
+ import { removeEntityModification } from '../entities'
5
5
  import { getViewDirectDependants } from '../utils/viewDependencies'
6
6
  import { Migration } from '../../Migration'
7
7
 
@@ -32,7 +32,7 @@ export class RemoveChangedViewDiffer implements Differ {
32
32
  for (const dependant of dependants.get(entity.name) ?? []) {
33
33
  removeCascade(dependant)
34
34
  }
35
- modifications.push(RemoveEntityModification.createModification({ entityName: entity.name }))
35
+ modifications.push(removeEntityModification.createModification({ entityName: entity.name }))
36
36
  }
37
37
  for (const changed of changedViews) {
38
38
  removeCascade(changed)
@@ -1,11 +1,16 @@
1
1
  import { MigrationBuilder } from '@contember/database-migrations'
2
2
  import { Model, Schema } from '@contember/schema'
3
3
  import { SchemaUpdater, updateModel } from '../utils/schemaUpdateUtils'
4
- import { ModificationHandlerOptions, ModificationHandlerStatic } from '../ModificationHandler'
4
+ import {
5
+ createModificationType,
6
+ Differ,
7
+ ModificationHandler,
8
+ ModificationHandlerOptions,
9
+ } from '../ModificationHandler'
5
10
  import { createEventTrigger, createEventTrxTrigger } from '../utils/sqlUpdateUtils'
11
+ import { PartialEntity } from '../../utils/PartialEntity.js'
6
12
 
7
- export const CreateEntityModification: ModificationHandlerStatic<CreateEntityModificationData> = class {
8
- static id = 'createEntity'
13
+ export class CreateEntityModificationHandler implements ModificationHandler<CreateEntityModificationData> {
9
14
  constructor(
10
15
  private readonly data: CreateEntityModificationData,
11
16
  private readonly schema: Schema,
@@ -43,6 +48,7 @@ export const CreateEntityModification: ModificationHandlerStatic<CreateEntityMod
43
48
  ...model.entities,
44
49
  [this.data.entity.name]: {
45
50
  eventLog: { enabled: true },
51
+ indexes: {},
46
52
  ...this.data.entity,
47
53
  },
48
54
  },
@@ -54,16 +60,20 @@ export const CreateEntityModification: ModificationHandlerStatic<CreateEntityMod
54
60
  return { message: `Add entity ${this.data.entity.name}` }
55
61
  }
56
62
 
57
- static createModification(data: CreateEntityModificationData) {
58
- return { modification: this.id, ...data }
59
- }
63
+ }
60
64
 
61
- static createDiff(originalSchema: Schema, updatedSchema: Schema) {
65
+ export const createEntityModification = createModificationType({
66
+ id: 'createEntity',
67
+ handler: CreateEntityModificationHandler,
68
+ })
69
+
70
+ export class CreateEntityDiffer implements Differ {
71
+ createDiff(originalSchema: Schema, updatedSchema: Schema) {
62
72
  return Object.values(updatedSchema.model.entities)
63
73
  .filter(it => !originalSchema.model.entities[it.name])
64
74
  .filter(it => !it.view)
65
75
  .map(entity =>
66
- CreateEntityModification.createModification({
76
+ createEntityModification.createModification({
67
77
  entity: {
68
78
  ...entity,
69
79
  fields: {
@@ -76,8 +86,6 @@ export const CreateEntityModification: ModificationHandlerStatic<CreateEntityMod
76
86
  }
77
87
  }
78
88
 
79
- type SomePartial<E, K extends keyof E> = Omit<E, K> & Partial<Pick<E, K>>
80
-
81
89
  export interface CreateEntityModificationData {
82
- entity: SomePartial<Model.Entity, 'eventLog'>
90
+ entity: PartialEntity
83
91
  }
@@ -1,11 +1,11 @@
1
1
  import { MigrationBuilder } from '@contember/database-migrations'
2
2
  import { Model, Schema } from '@contember/schema'
3
3
  import { SchemaUpdater, updateModel } from '../utils/schemaUpdateUtils'
4
- import { ModificationHandlerStatic } from '../ModificationHandler'
4
+ import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
5
5
  import { Migration } from '../../Migration'
6
+ import { PartialEntity } from '../../utils/PartialEntity.js'
6
7
 
7
- export const CreateViewModification: ModificationHandlerStatic<CreateViewModificationData> = class {
8
- static id = 'createView'
8
+ export class CreateViewModificationHandler implements ModificationHandler<CreateViewModificationData> {
9
9
  constructor(private readonly data: CreateViewModificationData, private readonly schema: Schema) {}
10
10
 
11
11
  public createSql(builder: MigrationBuilder): void {
@@ -22,6 +22,7 @@ export const CreateViewModification: ModificationHandlerStatic<CreateViewModific
22
22
  entities: {
23
23
  ...model.entities,
24
24
  [this.data.entity.name]: {
25
+ indexes: {},
25
26
  eventLog: { enabled: true }, // not relevant here...
26
27
  ...this.data.entity,
27
28
  },
@@ -33,12 +34,15 @@ export const CreateViewModification: ModificationHandlerStatic<CreateViewModific
33
34
  describe() {
34
35
  return { message: `Add view ${this.data.entity.name}` }
35
36
  }
37
+ }
36
38
 
37
- static createModification(data: CreateViewModificationData) {
38
- return { modification: this.id, ...data }
39
- }
39
+ export const createViewModification = createModificationType({
40
+ id: 'createView',
41
+ handler: CreateViewModificationHandler,
42
+ })
40
43
 
41
- static createDiff(originalSchema: Schema, updatedSchema: Schema) {
44
+ export class CreateViewDiffer implements Differ {
45
+ createDiff(originalSchema: Schema, updatedSchema: Schema) {
42
46
  const newViews = Object.values(updatedSchema.model.entities)
43
47
  .filter(it => !originalSchema.model.entities[it.name])
44
48
  .filter(it => !!it.view)
@@ -52,7 +56,7 @@ export const CreateViewModification: ModificationHandlerStatic<CreateViewModific
52
56
  for (const dependency of entity.view?.dependencies ?? []) {
53
57
  cascadeCreate(updatedSchema.model.entities[dependency])
54
58
  }
55
- modifications.push(CreateViewModification.createModification({
59
+ modifications.push(createViewModification.createModification({
56
60
  entity: entity,
57
61
  }))
58
62
  }
@@ -63,8 +67,6 @@ export const CreateViewModification: ModificationHandlerStatic<CreateViewModific
63
67
  }
64
68
  }
65
69
 
66
- type SomePartial<E, K extends keyof E> = Omit<E, K> & Partial<Pick<E, K>>
67
-
68
70
  export interface CreateViewModificationData {
69
- entity: SomePartial<Model.Entity, 'eventLog'>
71
+ entity: PartialEntity
70
72
  }
@@ -11,14 +11,17 @@ import {
11
11
  updateModel,
12
12
  updateSchema,
13
13
  } from '../utils/schemaUpdateUtils'
14
- import { ModificationHandlerOptions, ModificationHandlerStatic } from '../ModificationHandler'
14
+ import {
15
+ createModificationType,
16
+ Differ,
17
+ ModificationHandler,
18
+ ModificationHandlerOptions,
19
+ } from '../ModificationHandler'
15
20
  import { VERSION_ACL_PATCH, VERSION_REMOVE_REFERENCING_RELATIONS } from '../ModificationVersions'
16
21
  import { isRelation, PredicateDefinitionProcessor } from '@contember/schema-utils'
17
- import { RemoveFieldModification } from '../fields'
18
-
19
- export const RemoveEntityModification: ModificationHandlerStatic<RemoveEntityModificationData> = class {
20
- static id = 'removeEntity'
22
+ import { removeFieldModification } from '../fields'
21
23
 
24
+ export class RemoveEntityModificationHandler implements ModificationHandler<RemoveEntityModificationData> {
22
25
  constructor(
23
26
  private readonly data: RemoveEntityModificationData,
24
27
  private readonly schema: Schema,
@@ -33,7 +36,7 @@ export const RemoveEntityModification: ModificationHandlerStatic<RemoveEntityMod
33
36
  }
34
37
  if (this.options.formatVersion >= VERSION_REMOVE_REFERENCING_RELATIONS) {
35
38
  this.getFieldsToRemove(this.schema).forEach(([entityName, fieldName]) => {
36
- (new RemoveFieldModification({ entityName, fieldName }, this.schema, this.options)).createSql(builder)
39
+ removeFieldModification.createHandler({ entityName, fieldName }, this.schema, this.options).createSql(builder)
37
40
  })
38
41
  }
39
42
  builder.dropTable(entity.tableName)
@@ -104,17 +107,21 @@ export const RemoveEntityModification: ModificationHandlerStatic<RemoveEntityMod
104
107
  return { message: `Remove entity ${this.data.entityName}`, isDestructive: true }
105
108
  }
106
109
 
107
- static createModification(data: RemoveEntityModificationData) {
108
- return { modification: this.id, ...data }
109
- }
110
-
111
- static createDiff(originalSchema: Schema, updatedSchema: Schema) {
112
- return Object.keys(originalSchema.model.entities)
113
- .filter(name => !updatedSchema.model.entities[name])
114
- .map(entityName => RemoveEntityModification.createModification({ entityName }))
115
- }
116
110
  }
117
111
 
118
112
  export interface RemoveEntityModificationData {
119
113
  entityName: string
120
114
  }
115
+
116
+ export const removeEntityModification = createModificationType({
117
+ id: 'removeEntity',
118
+ handler: RemoveEntityModificationHandler,
119
+ })
120
+
121
+ export class RemoveEntityDiffer implements Differ {
122
+ createDiff(originalSchema: Schema, updatedSchema: Schema) {
123
+ return Object.keys(originalSchema.model.entities)
124
+ .filter(name => !updatedSchema.model.entities[name])
125
+ .map(entityName => removeEntityModification.createModification({ entityName }))
126
+ }
127
+ }
@@ -1,7 +1,12 @@
1
1
  import { MigrationBuilder } from '@contember/database-migrations'
2
2
  import { Schema } from '@contember/schema'
3
3
  import { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'
4
- import { ModificationHandlerOptions, ModificationHandlerStatic } from '../ModificationHandler'
4
+ import {
5
+ createModificationType,
6
+ Differ,
7
+ ModificationHandler,
8
+ ModificationHandlerOptions,
9
+ } from '../ModificationHandler'
5
10
  import {
6
11
  createEventTrigger,
7
12
  createEventTrxTrigger,
@@ -9,8 +14,7 @@ import {
9
14
  dropEventTrxTrigger,
10
15
  } from '../utils/sqlUpdateUtils'
11
16
 
12
- export const ToggleEventLogModification: ModificationHandlerStatic<ToggleEventLogModificationData> = class {
13
- static id = 'toggleEventLog'
17
+ export class ToggleEventLogModificationHandler implements ModificationHandler<ToggleEventLogModificationData> {
14
18
 
15
19
  constructor(
16
20
  private readonly data: ToggleEventLogModificationData,
@@ -51,12 +55,20 @@ export const ToggleEventLogModification: ModificationHandlerStatic<ToggleEventLo
51
55
  message: `${this.data.enabled ? 'Enable' : 'Disable'} event log for ${this.data.entityName}`,
52
56
  }
53
57
  }
58
+ }
54
59
 
55
- static createModification(data: ToggleEventLogModificationData) {
56
- return { modification: this.id, ...data }
57
- }
60
+ export interface ToggleEventLogModificationData {
61
+ entityName: string
62
+ enabled: boolean
63
+ }
58
64
 
59
- static createDiff(originalSchema: Schema, updatedSchema: Schema) {
65
+ export const toggleEventLogModification = createModificationType({
66
+ id: 'toggleEventLog',
67
+ handler: ToggleEventLogModificationHandler,
68
+ })
69
+
70
+ export class ToggleEventLogDiffer implements Differ {
71
+ createDiff(originalSchema: Schema, updatedSchema: Schema) {
60
72
  return Object.values(updatedSchema.model.entities)
61
73
  .flatMap(updatedEntity => {
62
74
  const origEntity = originalSchema.model.entities[updatedEntity.name]
@@ -66,7 +78,7 @@ export const ToggleEventLogModification: ModificationHandlerStatic<ToggleEventLo
66
78
  const newValue = updatedEntity.eventLog.enabled
67
79
  const oldValue = origEntity.eventLog.enabled
68
80
  if (newValue !== oldValue) {
69
- return [ToggleEventLogModification.createModification({
81
+ return [toggleEventLogModification.createModification({
70
82
  entityName: updatedEntity.name,
71
83
  enabled: newValue,
72
84
  })]
@@ -76,8 +88,3 @@ export const ToggleEventLogModification: ModificationHandlerStatic<ToggleEventLo
76
88
 
77
89
  }
78
90
  }
79
-
80
- export interface ToggleEventLogModificationData {
81
- entityName: string
82
- enabled: boolean
83
- }
@@ -11,17 +11,16 @@ import {
11
11
  updateModel,
12
12
  updateSchema,
13
13
  } from '../utils/schemaUpdateUtils'
14
- import { ModificationHandler, ModificationHandlerOptions, ModificationHandlerStatic } from '../ModificationHandler'
14
+ import { createModificationType, ModificationHandler, ModificationHandlerOptions } from '../ModificationHandler'
15
15
  import { isIt } from '../../utils/isIt'
16
16
  import { VERSION_ACL_PATCH, VERSION_UPDATE_CONSTRAINT_NAME } from '../ModificationVersions'
17
17
  import { NamingHelper } from '@contember/schema-utils'
18
- import { UpdateEntityTableNameModification } from './UpdateEntityTableNameModification'
19
18
  import { NoopModification } from '../NoopModification'
20
19
  import { renameConstraintSchemaUpdater, renameConstraintsSqlBuilder } from '../utils/renameConstraintsHelper'
21
20
  import { changeValue } from '../utils/valueUtils'
21
+ import { updateEntityTableNameModification } from './UpdateEntityTableNameModification'
22
22
 
23
- export const UpdateEntityNameModification: ModificationHandlerStatic<UpdateEntityNameModificationData> = class {
24
- static id = 'updateEntityName'
23
+ export class UpdateEntityNameModificationHandler implements ModificationHandler<UpdateEntityNameModificationData> {
25
24
  private subModification: ModificationHandler<any>
26
25
 
27
26
  constructor(
@@ -30,7 +29,7 @@ export const UpdateEntityNameModification: ModificationHandlerStatic<UpdateEntit
30
29
  private readonly options: ModificationHandlerOptions,
31
30
  ) {
32
31
  this.subModification = data.tableName
33
- ? new UpdateEntityTableNameModification(
32
+ ? updateEntityTableNameModification.createHandler(
34
33
  { entityName: data.entityName, tableName: data.tableName },
35
34
  schema,
36
35
  this.options,
@@ -124,10 +123,6 @@ export const UpdateEntityNameModification: ModificationHandlerStatic<UpdateEntit
124
123
  describe() {
125
124
  return { message: `Change entity name from ${this.data.entityName} to ${this.data.newEntityName}` }
126
125
  }
127
-
128
- static createModification(data: UpdateEntityNameModificationData) {
129
- return { modification: this.id, ...data }
130
- }
131
126
  }
132
127
 
133
128
  export interface UpdateEntityNameModificationData {
@@ -135,3 +130,8 @@ export interface UpdateEntityNameModificationData {
135
130
  newEntityName: string
136
131
  tableName?: string
137
132
  }
133
+
134
+ export const updateEntityNameModification = createModificationType({
135
+ id: 'updateEntityName',
136
+ handler: UpdateEntityNameModificationHandler,
137
+ })
@@ -1,10 +1,9 @@
1
1
  import { MigrationBuilder } from '@contember/database-migrations'
2
2
  import { Schema } from '@contember/schema'
3
3
  import { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'
4
- import { ModificationHandlerStatic } from '../ModificationHandler'
4
+ import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
5
5
 
6
- export const UpdateEntityTableNameModification: ModificationHandlerStatic<UpdateEntityTableNameModificationData> = class {
7
- static id = 'updateEntityTableName'
6
+ export class UpdateEntityTableNameModificationHandler implements ModificationHandler<UpdateEntityTableNameModificationData> {
8
7
  constructor(private readonly data: UpdateEntityTableNameModificationData, private readonly schema: Schema) {}
9
8
 
10
9
  public createSql(builder: MigrationBuilder): void {
@@ -28,22 +27,28 @@ export const UpdateEntityTableNameModification: ModificationHandlerStatic<Update
28
27
  describe() {
29
28
  return { message: `Change table name of entity ${this.data.entityName}` }
30
29
  }
30
+ }
31
31
 
32
- static createModification(data: UpdateEntityTableNameModificationData) {
33
- return { modification: this.id, ...data }
34
- }
32
+ export interface UpdateEntityTableNameModificationData {
33
+ entityName: string
34
+ tableName: string
35
+ }
35
36
 
36
- static createDiff(originalSchema: Schema, updatedSchema: Schema) {
37
+ export const updateEntityTableNameModification = createModificationType({
38
+ id: 'updateEntityTableName',
39
+ handler: UpdateEntityTableNameModificationHandler,
40
+ })
41
+
42
+ export class UpdateEntityTableNameDiffer implements Differ {
43
+ createDiff(originalSchema: Schema, updatedSchema: Schema) {
37
44
  return Object.values(updatedSchema.model.entities)
38
45
  .filter(
39
46
  it =>
40
47
  originalSchema.model.entities[it.name] && originalSchema.model.entities[it.name].tableName !== it.tableName,
41
48
  )
42
- .map(it => UpdateEntityTableNameModification.createModification({ entityName: it.name, tableName: it.tableName }))
49
+ .map(it => updateEntityTableNameModification.createModification({
50
+ entityName: it.name,
51
+ tableName: it.tableName,
52
+ }))
43
53
  }
44
54
  }
45
-
46
- export interface UpdateEntityTableNameModificationData {
47
- entityName: string
48
- tableName: string
49
- }
@@ -1,11 +1,9 @@
1
1
  import { MigrationBuilder } from '@contember/database-migrations'
2
2
  import { Model, Schema } from '@contember/schema'
3
- import { ModificationHandlerStatic } from '../ModificationHandler'
3
+ import { createModificationType, ModificationHandler } from '../ModificationHandler'
4
4
  import { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'
5
5
 
6
- export const UpdateViewModification: ModificationHandlerStatic<UpdateViewModificationData> = class {
7
- static id = 'updateView'
8
-
6
+ export class UpdateViewModificationHandler implements ModificationHandler<UpdateViewModificationData> {
9
7
  constructor(private readonly data: UpdateViewModificationData, private readonly schema: Schema) {}
10
8
 
11
9
  public createSql(builder: MigrationBuilder): void {
@@ -32,12 +30,14 @@ export const UpdateViewModification: ModificationHandlerStatic<UpdateViewModific
32
30
  return { message: `Update SQL definition of a view` }
33
31
  }
34
32
 
35
- static createModification(data: UpdateViewModificationData) {
36
- return { modification: this.id, ...data }
37
- }
38
33
  }
39
34
 
40
35
  export interface UpdateViewModificationData {
41
36
  entityName: string
42
37
  view: Model.View
43
38
  }
39
+
40
+ export const updateViewModification = createModificationType({
41
+ id: 'updateView',
42
+ handler: UpdateViewModificationHandler,
43
+ })