@contember/schema-migrations 1.1.2 → 1.2.0-alpha.11
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.
- package/dist/src/MigrationDescriber.d.ts +1 -2
- package/dist/src/MigrationDescriber.d.ts.map +1 -1
- package/dist/src/MigrationDescriber.js +5 -7
- package/dist/src/MigrationDescriber.js.map +1 -1
- package/dist/src/SchemaDiffer.d.ts.map +1 -1
- package/dist/src/SchemaDiffer.js +36 -46
- package/dist/src/SchemaDiffer.js.map +1 -1
- package/dist/src/SchemaMigrator.d.ts +1 -1
- package/dist/src/SchemaMigrator.d.ts.map +1 -1
- package/dist/src/index.d.ts +1 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -11
- package/dist/src/index.js.map +1 -1
- package/dist/src/modifications/ModificationHandler.d.ts +11 -6
- package/dist/src/modifications/ModificationHandler.d.ts.map +1 -1
- package/dist/src/modifications/ModificationHandler.js +9 -1
- package/dist/src/modifications/ModificationHandler.js.map +1 -1
- package/dist/src/modifications/ModificationHandlerFactory.d.ts +6 -5
- package/dist/src/modifications/ModificationHandlerFactory.d.ts.map +1 -1
- package/dist/src/modifications/ModificationHandlerFactory.js +42 -37
- package/dist/src/modifications/ModificationHandlerFactory.js.map +1 -1
- package/dist/src/modifications/acl/PatchAclSchemaModification.d.ts +13 -2
- package/dist/src/modifications/acl/PatchAclSchemaModification.d.ts.map +1 -1
- package/dist/src/modifications/acl/PatchAclSchemaModification.js +28 -28
- package/dist/src/modifications/acl/PatchAclSchemaModification.js.map +1 -1
- package/dist/src/modifications/acl/UpdateAclSchemaModification.d.ts +17 -3
- package/dist/src/modifications/acl/UpdateAclSchemaModification.d.ts.map +1 -1
- package/dist/src/modifications/acl/UpdateAclSchemaModification.js +33 -30
- package/dist/src/modifications/acl/UpdateAclSchemaModification.js.map +1 -1
- package/dist/src/modifications/columns/CreateColumnModification.d.ts +23 -3
- package/dist/src/modifications/columns/CreateColumnModification.d.ts.map +1 -1
- package/dist/src/modifications/columns/CreateColumnModification.js +70 -67
- package/dist/src/modifications/columns/CreateColumnModification.js.map +1 -1
- package/dist/src/modifications/columns/UpdateColumnDefinitionModification.d.ts +21 -3
- package/dist/src/modifications/columns/UpdateColumnDefinitionModification.d.ts.map +1 -1
- package/dist/src/modifications/columns/UpdateColumnDefinitionModification.js +73 -70
- package/dist/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
- package/dist/src/modifications/columns/UpdateColumnNameModification.d.ts +20 -2
- package/dist/src/modifications/columns/UpdateColumnNameModification.d.ts.map +1 -1
- package/dist/src/modifications/columns/UpdateColumnNameModification.js +97 -94
- package/dist/src/modifications/columns/UpdateColumnNameModification.js.map +1 -1
- package/dist/src/modifications/constraints/CreateUniqueConstraintModification.d.ts +21 -3
- package/dist/src/modifications/constraints/CreateUniqueConstraintModification.d.ts.map +1 -1
- package/dist/src/modifications/constraints/CreateUniqueConstraintModification.js +72 -66
- package/dist/src/modifications/constraints/CreateUniqueConstraintModification.js.map +1 -1
- package/dist/src/modifications/constraints/RemoveUniqueConstraintModification.d.ts +18 -2
- package/dist/src/modifications/constraints/RemoveUniqueConstraintModification.d.ts.map +1 -1
- package/dist/src/modifications/constraints/RemoveUniqueConstraintModification.js +45 -42
- package/dist/src/modifications/constraints/RemoveUniqueConstraintModification.js.map +1 -1
- package/dist/src/modifications/differs/ChangeViewNonViewDiffer.js +1 -1
- package/dist/src/modifications/differs/RemoveChangedFieldDiffer.js +1 -1
- package/dist/src/modifications/differs/RemoveChangedViewDiffer.js +1 -1
- package/dist/src/modifications/entities/CreateEntityModification.d.ts +21 -6
- package/dist/src/modifications/entities/CreateEntityModification.d.ts.map +1 -1
- package/dist/src/modifications/entities/CreateEntityModification.js +65 -61
- package/dist/src/modifications/entities/CreateEntityModification.js.map +1 -1
- package/dist/src/modifications/entities/CreateViewModification.d.ts +23 -6
- package/dist/src/modifications/entities/CreateViewModification.d.ts.map +1 -1
- package/dist/src/modifications/entities/CreateViewModification.js +59 -55
- package/dist/src/modifications/entities/CreateViewModification.js.map +1 -1
- package/dist/src/modifications/entities/RemoveEntityModification.d.ts +21 -2
- package/dist/src/modifications/entities/RemoveEntityModification.d.ts.map +1 -1
- package/dist/src/modifications/entities/RemoveEntityModification.js +73 -70
- package/dist/src/modifications/entities/RemoveEntityModification.js.map +1 -1
- package/dist/src/modifications/entities/ToggleEventLogModification.d.ts +19 -2
- package/dist/src/modifications/entities/ToggleEventLogModification.d.ts.map +1 -1
- package/dist/src/modifications/entities/ToggleEventLogModification.js +57 -54
- package/dist/src/modifications/entities/ToggleEventLogModification.js.map +1 -1
- package/dist/src/modifications/entities/UpdateEntityNameModification.d.ts +18 -2
- package/dist/src/modifications/entities/UpdateEntityNameModification.d.ts.map +1 -1
- package/dist/src/modifications/entities/UpdateEntityNameModification.js +78 -78
- package/dist/src/modifications/entities/UpdateEntityNameModification.js.map +1 -1
- package/dist/src/modifications/entities/UpdateEntityTableNameModification.d.ts +18 -2
- package/dist/src/modifications/entities/UpdateEntityTableNameModification.d.ts.map +1 -1
- package/dist/src/modifications/entities/UpdateEntityTableNameModification.js +40 -34
- package/dist/src/modifications/entities/UpdateEntityTableNameModification.js.map +1 -1
- package/dist/src/modifications/entities/UpdateViewModification.d.ts +15 -3
- package/dist/src/modifications/entities/UpdateViewModification.d.ts.map +1 -1
- package/dist/src/modifications/entities/UpdateViewModification.js +28 -28
- package/dist/src/modifications/entities/UpdateViewModification.js.map +1 -1
- package/dist/src/modifications/enums/CreateEnumModification.d.ts +18 -2
- package/dist/src/modifications/enums/CreateEnumModification.d.ts.map +1 -1
- package/dist/src/modifications/enums/CreateEnumModification.js +42 -36
- package/dist/src/modifications/enums/CreateEnumModification.js.map +1 -1
- package/dist/src/modifications/enums/RemoveEnumModification.d.ts +18 -2
- package/dist/src/modifications/enums/RemoveEnumModification.d.ts.map +1 -1
- package/dist/src/modifications/enums/RemoveEnumModification.js +36 -33
- package/dist/src/modifications/enums/RemoveEnumModification.js.map +1 -1
- package/dist/src/modifications/enums/UpdateEnumModification.d.ts +19 -2
- package/dist/src/modifications/enums/UpdateEnumModification.d.ts.map +1 -1
- package/dist/src/modifications/enums/UpdateEnumModification.js +43 -40
- package/dist/src/modifications/enums/UpdateEnumModification.js.map +1 -1
- package/dist/src/modifications/fields/RemoveFieldModification.d.ts +20 -2
- package/dist/src/modifications/fields/RemoveFieldModification.d.ts.map +1 -1
- package/dist/src/modifications/fields/RemoveFieldModification.js +67 -64
- package/dist/src/modifications/fields/RemoveFieldModification.js.map +1 -1
- package/dist/src/modifications/fields/UpdateFieldNameModification.d.ts +18 -2
- package/dist/src/modifications/fields/UpdateFieldNameModification.d.ts.map +1 -1
- package/dist/src/modifications/fields/UpdateFieldNameModification.js +132 -132
- package/dist/src/modifications/fields/UpdateFieldNameModification.js.map +1 -1
- package/dist/src/modifications/index.d.ts +14 -0
- package/dist/src/modifications/index.d.ts.map +1 -0
- package/dist/src/modifications/index.js +32 -0
- package/dist/src/modifications/index.js.map +1 -0
- package/dist/src/modifications/indexes/CreateIndexModification.d.ts +23 -0
- package/dist/src/modifications/indexes/CreateIndexModification.d.ts.map +1 -0
- package/dist/src/modifications/indexes/CreateIndexModification.js +75 -0
- package/dist/src/modifications/indexes/CreateIndexModification.js.map +1 -0
- package/dist/src/modifications/indexes/RemoveIndexModification.d.ts +23 -0
- package/dist/src/modifications/indexes/RemoveIndexModification.d.ts.map +1 -0
- package/dist/src/modifications/indexes/RemoveIndexModification.js +56 -0
- package/dist/src/modifications/indexes/RemoveIndexModification.js.map +1 -0
- package/dist/src/modifications/indexes/index.d.ts +3 -0
- package/dist/src/modifications/indexes/index.d.ts.map +1 -0
- package/dist/src/modifications/indexes/index.js +19 -0
- package/dist/src/modifications/indexes/index.js.map +1 -0
- package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts +23 -3
- package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts.map +1 -1
- package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js +68 -65
- package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js.map +1 -1
- package/dist/src/modifications/relations/ConvertOneToManyRelationModification.d.ts +23 -2
- package/dist/src/modifications/relations/ConvertOneToManyRelationModification.d.ts.map +1 -1
- package/dist/src/modifications/relations/ConvertOneToManyRelationModification.js +73 -70
- package/dist/src/modifications/relations/ConvertOneToManyRelationModification.js.map +1 -1
- package/dist/src/modifications/relations/CreateRelationInverseSideModification.d.ts +20 -3
- package/dist/src/modifications/relations/CreateRelationInverseSideModification.d.ts.map +1 -1
- package/dist/src/modifications/relations/CreateRelationInverseSideModification.js +36 -33
- package/dist/src/modifications/relations/CreateRelationInverseSideModification.js.map +1 -1
- package/dist/src/modifications/relations/CreateRelationModification.d.ts +25 -3
- package/dist/src/modifications/relations/CreateRelationModification.d.ts.map +1 -1
- package/dist/src/modifications/relations/CreateRelationModification.js +88 -85
- package/dist/src/modifications/relations/CreateRelationModification.js.map +1 -1
- package/dist/src/modifications/relations/DisableOrphanRemovalModification.d.ts +20 -2
- package/dist/src/modifications/relations/DisableOrphanRemovalModification.d.ts.map +1 -1
- package/dist/src/modifications/relations/DisableOrphanRemovalModification.js +42 -39
- package/dist/src/modifications/relations/DisableOrphanRemovalModification.js.map +1 -1
- package/dist/src/modifications/relations/EnableOrphanRemovalModification.d.ts +20 -2
- package/dist/src/modifications/relations/EnableOrphanRemovalModification.d.ts.map +1 -1
- package/dist/src/modifications/relations/EnableOrphanRemovalModification.js +45 -42
- package/dist/src/modifications/relations/EnableOrphanRemovalModification.js.map +1 -1
- package/dist/src/modifications/relations/MakeRelationNotNullModification.d.ts +21 -2
- package/dist/src/modifications/relations/MakeRelationNotNullModification.d.ts.map +1 -1
- package/dist/src/modifications/relations/MakeRelationNotNullModification.js +55 -52
- package/dist/src/modifications/relations/MakeRelationNotNullModification.js.map +1 -1
- package/dist/src/modifications/relations/MakeRelationNullableModification.d.ts +20 -2
- package/dist/src/modifications/relations/MakeRelationNullableModification.d.ts.map +1 -1
- package/dist/src/modifications/relations/MakeRelationNullableModification.js +54 -51
- package/dist/src/modifications/relations/MakeRelationNullableModification.js.map +1 -1
- package/dist/src/modifications/relations/ToggleJunctionEventLogModification.d.ts +27 -0
- package/dist/src/modifications/relations/ToggleJunctionEventLogModification.d.ts.map +1 -0
- package/dist/src/modifications/relations/ToggleJunctionEventLogModification.js +84 -0
- package/dist/src/modifications/relations/ToggleJunctionEventLogModification.js.map +1 -0
- package/dist/src/modifications/relations/UpdateRelationOnDeleteModification.d.ts +20 -3
- package/dist/src/modifications/relations/UpdateRelationOnDeleteModification.d.ts.map +1 -1
- package/dist/src/modifications/relations/UpdateRelationOnDeleteModification.js +42 -39
- package/dist/src/modifications/relations/UpdateRelationOnDeleteModification.js.map +1 -1
- package/dist/src/modifications/relations/UpdateRelationOrderByModification.d.ts +20 -3
- package/dist/src/modifications/relations/UpdateRelationOrderByModification.d.ts.map +1 -1
- package/dist/src/modifications/relations/UpdateRelationOrderByModification.js +43 -40
- package/dist/src/modifications/relations/UpdateRelationOrderByModification.js.map +1 -1
- package/dist/src/modifications/relations/index.d.ts +1 -1
- package/dist/src/modifications/relations/index.d.ts.map +1 -1
- package/dist/src/modifications/relations/index.js +1 -1
- package/dist/src/modifications/relations/index.js.map +1 -1
- package/dist/src/modifications/validation/PatchValidationSchemaModification.d.ts +13 -2
- package/dist/src/modifications/validation/PatchValidationSchemaModification.d.ts.map +1 -1
- package/dist/src/modifications/validation/PatchValidationSchemaModification.js +28 -28
- package/dist/src/modifications/validation/PatchValidationSchemaModification.js.map +1 -1
- package/dist/src/modifications/validation/UpdateValidationSchemaModification.d.ts +17 -3
- package/dist/src/modifications/validation/UpdateValidationSchemaModification.d.ts.map +1 -1
- package/dist/src/modifications/validation/UpdateValidationSchemaModification.js +33 -30
- package/dist/src/modifications/validation/UpdateValidationSchemaModification.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/src/utils/PartialEntity.d.ts +5 -0
- package/dist/src/utils/PartialEntity.d.ts.map +1 -0
- package/dist/src/utils/PartialEntity.js +3 -0
- package/dist/src/utils/PartialEntity.js.map +1 -0
- package/dist/tests/cases/integration/createAndDropIndex.test.d.ts +2 -0
- package/dist/tests/cases/integration/createAndDropIndex.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/createAndDropIndex.test.js +57 -0
- package/dist/tests/cases/integration/createAndDropIndex.test.js.map +1 -0
- package/dist/tests/cases/integration/createEntity.test.js +2 -0
- package/dist/tests/cases/integration/createEntity.test.js.map +1 -1
- package/dist/tests/cases/integration/createManyHasMany.test.js +1 -0
- package/dist/tests/cases/integration/createManyHasMany.test.js.map +1 -1
- package/dist/tests/cases/integration/createManyHasOne.test.js +1 -0
- package/dist/tests/cases/integration/createManyHasOne.test.js.map +1 -1
- package/dist/tests/cases/integration/createOneHasMany.test.js +1 -0
- package/dist/tests/cases/integration/createOneHasMany.test.js.map +1 -1
- package/dist/tests/cases/integration/createOneHasOne.test.js +2 -0
- package/dist/tests/cases/integration/createOneHasOne.test.js.map +1 -1
- package/dist/tests/cases/integration/createView.test.js +1 -0
- package/dist/tests/cases/integration/createView.test.js.map +1 -1
- package/dist/tests/cases/integration/updateView.test.js +9 -0
- package/dist/tests/cases/integration/updateView.test.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/src/MigrationDescriber.ts +8 -8
- package/src/SchemaDiffer.ts +65 -76
- package/src/SchemaMigrator.ts +1 -1
- package/src/index.ts +1 -5
- package/src/modifications/ModificationHandler.ts +20 -8
- package/src/modifications/ModificationHandlerFactory.ts +65 -61
- package/src/modifications/acl/PatchAclSchemaModification.ts +7 -8
- package/src/modifications/acl/UpdateAclSchemaModification.ts +16 -15
- package/src/modifications/columns/CreateColumnModification.ts +18 -16
- package/src/modifications/columns/UpdateColumnDefinitionModification.ts +27 -25
- package/src/modifications/columns/UpdateColumnNameModification.ts +60 -53
- package/src/modifications/constraints/CreateUniqueConstraintModification.ts +23 -17
- package/src/modifications/constraints/RemoveUniqueConstraintModification.ts +18 -14
- package/src/modifications/differs/ChangeViewNonViewDiffer.ts +2 -2
- package/src/modifications/differs/RemoveChangedFieldDiffer.ts +2 -2
- package/src/modifications/differs/RemoveChangedViewDiffer.ts +2 -2
- package/src/modifications/entities/CreateEntityModification.ts +19 -11
- package/src/modifications/entities/CreateViewModification.ts +13 -11
- package/src/modifications/entities/RemoveEntityModification.ts +22 -15
- package/src/modifications/entities/ToggleEventLogModification.ts +20 -13
- package/src/modifications/entities/UpdateEntityNameModification.ts +9 -9
- package/src/modifications/entities/UpdateEntityTableNameModification.ts +18 -13
- package/src/modifications/entities/UpdateViewModification.ts +7 -7
- package/src/modifications/enums/CreateEnumModification.ts +18 -13
- package/src/modifications/enums/RemoveEnumModification.ts +14 -12
- package/src/modifications/enums/UpdateEnumModification.ts +15 -13
- package/src/modifications/fields/RemoveFieldModification.ts +20 -17
- package/src/modifications/fields/UpdateFieldNameModification.ts +16 -17
- package/src/modifications/index.ts +13 -0
- package/src/modifications/indexes/CreateIndexModification.ts +83 -0
- package/src/modifications/indexes/RemoveIndexModification.ts +68 -0
- package/src/modifications/indexes/index.ts +2 -0
- package/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.ts +35 -25
- package/src/modifications/relations/ConvertOneToManyRelationModification.ts +31 -24
- package/src/modifications/relations/CreateRelationInverseSideModification.ts +15 -13
- package/src/modifications/relations/CreateRelationModification.ts +35 -27
- package/src/modifications/relations/DisableOrphanRemovalModification.ts +15 -12
- package/src/modifications/relations/EnableOrphanRemovalModification.ts +16 -13
- package/src/modifications/relations/MakeRelationNotNullModification.ts +16 -14
- package/src/modifications/relations/MakeRelationNullableModification.ts +17 -13
- package/src/modifications/relations/{ToggleManyHasManyEventLogModification.ts → ToggleJunctionEventLogModification.ts} +21 -14
- package/src/modifications/relations/UpdateRelationOnDeleteModification.ts +16 -14
- package/src/modifications/relations/UpdateRelationOrderByModification.ts +17 -14
- package/src/modifications/relations/index.ts +1 -1
- package/src/modifications/validation/PatchValidationSchemaModification.ts +7 -7
- package/src/modifications/validation/UpdateValidationSchemaModification.ts +17 -14
- package/src/utils/PartialEntity.ts +5 -0
- package/tests/cases/integration/createAndDropIndex.test.ts +44 -0
- package/tests/cases/integration/createEntity.test.ts +2 -0
- package/tests/cases/integration/createManyHasMany.test.ts +1 -0
- package/tests/cases/integration/createManyHasOne.test.ts +1 -0
- package/tests/cases/integration/createOneHasMany.test.ts +1 -0
- package/tests/cases/integration/createOneHasOne.test.ts +2 -0
- package/tests/cases/integration/createView.test.ts +1 -0
- package/tests/cases/integration/updateView.test.ts +9 -0
- package/dist/src/modifications/relations/ToggleManyHasManyEventLogModification.d.ts +0 -8
- package/dist/src/modifications/relations/ToggleManyHasManyEventLogModification.d.ts.map +0 -1
- package/dist/src/modifications/relations/ToggleManyHasManyEventLogModification.js +0 -81
- 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 {
|
|
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
|
|
9
|
-
|
|
10
|
-
|
|
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]
|
|
@@ -15,13 +15,13 @@ export const UpdateColumnNameModification: ModificationHandlerStatic<UpdateColum
|
|
|
15
15
|
return
|
|
16
16
|
}
|
|
17
17
|
acceptFieldVisitor(this.schema.model, entity, this.data.fieldName, {
|
|
18
|
-
visitColumn: (entity, column) => {
|
|
18
|
+
visitColumn: ({ entity, column }) => {
|
|
19
19
|
builder.renameColumn(entity.tableName, column.columnName, this.data.columnName)
|
|
20
20
|
},
|
|
21
|
-
visitManyHasOne: (entity, relation) => {
|
|
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,44 +43,47 @@ export const UpdateColumnNameModification: ModificationHandlerStatic<UpdateColum
|
|
|
43
43
|
return updateModel(
|
|
44
44
|
updateEntity(
|
|
45
45
|
this.data.entityName,
|
|
46
|
-
updateField(this.data.fieldName, ({ field, entity }) =>
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
},
|
|
53
|
-
visitManyHasOne: (entity, relation) => {
|
|
54
|
-
return {
|
|
55
|
-
...relation,
|
|
56
|
-
joiningColumn: {
|
|
57
|
-
...relation.joiningColumn,
|
|
58
|
-
columnName: this.data.columnName,
|
|
59
|
-
},
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
visitOneHasOneOwning: (entity, relation) => {
|
|
63
|
-
return {
|
|
64
|
-
...relation,
|
|
65
|
-
joiningColumn: {
|
|
66
|
-
...relation.joiningColumn,
|
|
46
|
+
updateField(this.data.fieldName, ({ field, entity }) =>
|
|
47
|
+
acceptFieldVisitor<Model.AnyField>(this.schema.model, entity, field, {
|
|
48
|
+
visitColumn: ({ column }) => {
|
|
49
|
+
return {
|
|
50
|
+
...column,
|
|
67
51
|
columnName: this.data.columnName,
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
visitManyHasOne: ({ entity, relation }) => {
|
|
55
|
+
return {
|
|
56
|
+
...relation,
|
|
57
|
+
joiningColumn: {
|
|
58
|
+
...relation.joiningColumn,
|
|
59
|
+
columnName: this.data.columnName,
|
|
60
|
+
},
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
visitOneHasOneOwning: ({ entity, relation }) => {
|
|
64
|
+
return {
|
|
65
|
+
...relation,
|
|
66
|
+
joiningColumn: {
|
|
67
|
+
...relation.joiningColumn,
|
|
68
|
+
columnName: this.data.columnName,
|
|
69
|
+
},
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
visitManyHasManyInverse: () => {
|
|
73
|
+
throw new Error('Cannot rename column of many-to-many relation')
|
|
74
|
+
},
|
|
75
|
+
visitManyHasManyOwning: () => {
|
|
76
|
+
throw new Error('Cannot rename column of many-to-many relation')
|
|
77
|
+
},
|
|
78
|
+
visitOneHasMany: () => {
|
|
79
|
+
throw new Error('Cannot rename column of one-to-many relation')
|
|
80
|
+
},
|
|
81
|
+
visitOneHasOneInverse: () => {
|
|
82
|
+
throw new Error('Cannot rename column of one-to-one inverse relation')
|
|
83
|
+
},
|
|
76
84
|
},
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
},
|
|
80
|
-
visitOneHasOneInverse: () => {
|
|
81
|
-
throw new Error('Cannot rename column of one-to-one inverse relation')
|
|
82
|
-
},
|
|
83
|
-
})),
|
|
85
|
+
),
|
|
86
|
+
),
|
|
84
87
|
),
|
|
85
88
|
)
|
|
86
89
|
}
|
|
@@ -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
|
-
|
|
93
|
-
|
|
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
|
-
|
|
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
|
|
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 {
|
|
4
|
+
import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
|
|
5
5
|
import { acceptFieldVisitor } from '@contember/schema-utils'
|
|
6
6
|
|
|
7
|
-
export
|
|
8
|
-
|
|
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]
|
|
@@ -17,10 +16,10 @@ export const CreateUniqueConstraintModification: ModificationHandlerStatic<Creat
|
|
|
17
16
|
const fields = this.data.unique.fields
|
|
18
17
|
const columns = fields.map(fieldName => {
|
|
19
18
|
return acceptFieldVisitor(this.schema.model, entity, fieldName, {
|
|
20
|
-
visitColumn: ({
|
|
19
|
+
visitColumn: ({ column }) => {
|
|
21
20
|
return column.columnName
|
|
22
21
|
},
|
|
23
|
-
visitManyHasOne: ({
|
|
22
|
+
visitManyHasOne: ({ relation }) => {
|
|
24
23
|
return relation.joiningColumn.columnName
|
|
25
24
|
},
|
|
26
25
|
visitOneHasMany: () => {
|
|
@@ -66,20 +65,27 @@ export const CreateUniqueConstraintModification: ModificationHandlerStatic<Creat
|
|
|
66
65
|
}
|
|
67
66
|
}
|
|
68
67
|
|
|
69
|
-
|
|
70
|
-
return { modification: this.id, ...data }
|
|
71
|
-
}
|
|
68
|
+
}
|
|
72
69
|
|
|
73
|
-
|
|
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 =>
|
|
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 {
|
|
4
|
+
import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
|
|
5
5
|
import deepEqual from 'fast-deep-equal'
|
|
6
6
|
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
export interface RemoveUniqueConstraintModificationData {
|
|
38
|
+
entityName: string
|
|
39
|
+
constraintName: string
|
|
40
|
+
}
|
|
39
41
|
|
|
40
|
-
|
|
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
|
-
|
|
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 {
|
|
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 =>
|
|
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 {
|
|
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
|
-
|
|
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 {
|
|
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(
|
|
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 {
|
|
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
|
|
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
|
-
|
|
58
|
-
return { modification: this.id, ...data }
|
|
59
|
-
}
|
|
63
|
+
}
|
|
60
64
|
|
|
61
|
-
|
|
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
|
-
|
|
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:
|
|
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 {
|
|
4
|
+
import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
|
|
5
5
|
import { Migration } from '../../Migration'
|
|
6
|
+
import { PartialEntity } from '../../utils/PartialEntity.js'
|
|
6
7
|
|
|
7
|
-
export
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
export const createViewModification = createModificationType({
|
|
40
|
+
id: 'createView',
|
|
41
|
+
handler: CreateViewModificationHandler,
|
|
42
|
+
})
|
|
40
43
|
|
|
41
|
-
|
|
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(
|
|
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:
|
|
71
|
+
entity: PartialEntity
|
|
70
72
|
}
|
|
@@ -11,14 +11,17 @@ import {
|
|
|
11
11
|
updateModel,
|
|
12
12
|
updateSchema,
|
|
13
13
|
} from '../utils/schemaUpdateUtils'
|
|
14
|
-
import {
|
|
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 {
|
|
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
|
-
(
|
|
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 {
|
|
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
|
|
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
|
-
|
|
56
|
-
|
|
57
|
-
|
|
60
|
+
export interface ToggleEventLogModificationData {
|
|
61
|
+
entityName: string
|
|
62
|
+
enabled: boolean
|
|
63
|
+
}
|
|
58
64
|
|
|
59
|
-
|
|
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 [
|
|
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
|
|
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
|
|
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
|
-
?
|
|
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
|
+
})
|