@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,14 +1,18 @@
|
|
|
1
1
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
2
|
import { Model, Schema } from '@contember/schema'
|
|
3
3
|
import { SchemaUpdater, updateEntity, updateField, updateModel, updateSchema } from '../utils/schemaUpdateUtils'
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
createModificationType,
|
|
6
|
+
Differ,
|
|
7
|
+
ModificationHandler,
|
|
8
|
+
ModificationHandlerOptions,
|
|
9
|
+
} from '../ModificationHandler'
|
|
5
10
|
import { isOwningRelation, NamingHelper } from '@contember/schema-utils'
|
|
6
11
|
import { updateRelations } from '../utils/diffUtils'
|
|
7
|
-
import { UpdateFieldNameModification } from '../fields'
|
|
8
12
|
import { NoopModification } from '../NoopModification'
|
|
13
|
+
import { updateFieldNameModification } from '../fields'
|
|
9
14
|
|
|
10
|
-
export
|
|
11
|
-
static id = 'convertOneToManyRelation'
|
|
15
|
+
export class ConvertOneToManyRelationModificationHandler implements ModificationHandler<ConvertOneToManyRelationModificationData> {
|
|
12
16
|
private subModification: ModificationHandler<any>
|
|
13
17
|
|
|
14
18
|
constructor(
|
|
@@ -18,7 +22,7 @@ export const ConvertOneToManyRelationModification: ModificationHandlerStatic<Con
|
|
|
18
22
|
) {
|
|
19
23
|
const { relation } = this.getRelation()
|
|
20
24
|
this.subModification = data.newInverseSideFieldName && relation.inversedBy ?
|
|
21
|
-
|
|
25
|
+
updateFieldNameModification.createHandler(
|
|
22
26
|
{
|
|
23
27
|
entityName: relation.target,
|
|
24
28
|
fieldName: relation.inversedBy,
|
|
@@ -77,11 +81,29 @@ export const ConvertOneToManyRelationModification: ModificationHandlerStatic<Con
|
|
|
77
81
|
}
|
|
78
82
|
}
|
|
79
83
|
|
|
80
|
-
|
|
81
|
-
|
|
84
|
+
private getRelation() {
|
|
85
|
+
const entity = this.schema.model.entities[this.data.entityName]
|
|
86
|
+
const relation = entity.fields[this.data.fieldName]
|
|
87
|
+
if (relation.type !== Model.RelationType.OneHasOne || !isOwningRelation(relation)) {
|
|
88
|
+
throw new Error()
|
|
89
|
+
}
|
|
90
|
+
return { entity, relation }
|
|
82
91
|
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export interface ConvertOneToManyRelationModificationData {
|
|
95
|
+
entityName: string
|
|
96
|
+
fieldName: string
|
|
97
|
+
newInverseSideFieldName?: string
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export const convertOneToManyRelationModification = createModificationType({
|
|
101
|
+
id: 'convertOneToManyRelation',
|
|
102
|
+
handler: ConvertOneToManyRelationModificationHandler,
|
|
103
|
+
})
|
|
83
104
|
|
|
84
|
-
|
|
105
|
+
export class ConvertOneToManyRelationDiffer implements Differ {
|
|
106
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
85
107
|
return updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {
|
|
86
108
|
if (
|
|
87
109
|
isOwningRelation(originalRelation) &&
|
|
@@ -90,7 +112,7 @@ export const ConvertOneToManyRelationModification: ModificationHandlerStatic<Con
|
|
|
90
112
|
updatedRelation.type === Model.RelationType.ManyHasOne
|
|
91
113
|
) {
|
|
92
114
|
const isInverseSideRenamed = originalRelation.inversedBy && updatedRelation.inversedBy && originalRelation.inversedBy !== updatedRelation.inversedBy
|
|
93
|
-
return
|
|
115
|
+
return convertOneToManyRelationModification.createModification({
|
|
94
116
|
entityName: updatedEntity.name,
|
|
95
117
|
fieldName: updatedRelation.name,
|
|
96
118
|
...(isInverseSideRenamed ? {
|
|
@@ -101,19 +123,4 @@ export const ConvertOneToManyRelationModification: ModificationHandlerStatic<Con
|
|
|
101
123
|
return undefined
|
|
102
124
|
})
|
|
103
125
|
}
|
|
104
|
-
|
|
105
|
-
private getRelation() {
|
|
106
|
-
const entity = this.schema.model.entities[this.data.entityName]
|
|
107
|
-
const relation = entity.fields[this.data.fieldName]
|
|
108
|
-
if (relation.type !== Model.RelationType.OneHasOne || !isOwningRelation(relation)) {
|
|
109
|
-
throw new Error()
|
|
110
|
-
}
|
|
111
|
-
return { entity, relation }
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
export interface ConvertOneToManyRelationModificationData {
|
|
116
|
-
entityName: string
|
|
117
|
-
fieldName: string
|
|
118
|
-
newInverseSideFieldName?: string
|
|
119
126
|
}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
2
|
import { Model, Schema } from '@contember/schema'
|
|
3
3
|
import { addField, SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'
|
|
4
|
-
import {
|
|
4
|
+
import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
|
|
5
5
|
import { createFields } from '../utils/diffUtils'
|
|
6
6
|
import { isInverseRelation, isRelation } from '@contember/schema-utils'
|
|
7
7
|
|
|
8
|
-
export
|
|
9
|
-
static id = 'createRelationInverseSide'
|
|
8
|
+
export class CreateRelationInverseSideModificationHandler implements ModificationHandler<CreateRelationInverseSideModificationData> {
|
|
10
9
|
constructor(private readonly data: CreateRelationInverseSideModificationData, private readonly schema: Schema) {}
|
|
11
10
|
|
|
12
11
|
public createSql(builder: MigrationBuilder): void {}
|
|
@@ -27,25 +26,28 @@ export const CreateRelationInverseSideModification: ModificationHandlerStatic<Cr
|
|
|
27
26
|
describe() {
|
|
28
27
|
return { message: `Add relation ${this.data.entityName}.${this.data.relation.name}` }
|
|
29
28
|
}
|
|
29
|
+
}
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
export interface CreateRelationInverseSideModificationData {
|
|
32
|
+
entityName: string
|
|
33
|
+
relation: Model.AnyRelation & Model.InverseRelation
|
|
34
|
+
}
|
|
34
35
|
|
|
35
|
-
|
|
36
|
+
export const createRelationInverseSideModification = createModificationType({
|
|
37
|
+
id: 'createRelationInverseSide',
|
|
38
|
+
handler: CreateRelationInverseSideModificationHandler,
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
export class CreateRelationInverseSideDiffer implements Differ {
|
|
42
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
36
43
|
return createFields(originalSchema, updatedSchema, ({ newField, updatedEntity }) => {
|
|
37
44
|
if (!isRelation(newField) || !isInverseRelation(newField)) {
|
|
38
45
|
return undefined
|
|
39
46
|
}
|
|
40
|
-
return
|
|
47
|
+
return createRelationInverseSideModification.createModification({
|
|
41
48
|
entityName: updatedEntity.name,
|
|
42
49
|
relation: newField,
|
|
43
50
|
})
|
|
44
51
|
})
|
|
45
52
|
}
|
|
46
53
|
}
|
|
47
|
-
|
|
48
|
-
export interface CreateRelationInverseSideModificationData {
|
|
49
|
-
entityName: string
|
|
50
|
-
relation: Model.AnyRelation & Model.InverseRelation
|
|
51
|
-
}
|
|
@@ -8,7 +8,12 @@ import {
|
|
|
8
8
|
} from '@contember/schema-utils'
|
|
9
9
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
10
10
|
import { addField, SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'
|
|
11
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
createModificationType,
|
|
13
|
+
Differ,
|
|
14
|
+
ModificationHandler,
|
|
15
|
+
ModificationHandlerOptions,
|
|
16
|
+
} from '../ModificationHandler'
|
|
12
17
|
import { isIt } from '../../utils/isIt'
|
|
13
18
|
import { createFields } from '../utils/diffUtils'
|
|
14
19
|
import { getPrimaryColumnType } from '../utils/getPrimaryColumnType'
|
|
@@ -16,8 +21,7 @@ import { createJunctionTableSql } from '../utils/createJunctionTable'
|
|
|
16
21
|
import { normalizeManyHasManyRelation, PartialManyHasManyRelation } from './normalization'
|
|
17
22
|
|
|
18
23
|
|
|
19
|
-
export
|
|
20
|
-
static id = 'createRelation'
|
|
24
|
+
export class CreateRelationModificationHandler implements ModificationHandler<CreateRelationModificationData> {
|
|
21
25
|
|
|
22
26
|
constructor(
|
|
23
27
|
private readonly data: CreateRelationModificationData,
|
|
@@ -55,18 +59,18 @@ export const CreateRelationModification: ModificationHandlerStatic<CreateRelatio
|
|
|
55
59
|
})
|
|
56
60
|
}
|
|
57
61
|
acceptRelationTypeVisitor(this.schema.model, entity, this.getNormalizedOwningSide(), {
|
|
58
|
-
visitManyHasOne: ({
|
|
62
|
+
visitManyHasOne: ({ relation }) => {
|
|
59
63
|
createOwningSide(relation)
|
|
60
64
|
builder.addIndex(entity.tableName, relation.joiningColumn.columnName)
|
|
61
65
|
},
|
|
62
66
|
visitOneHasMany: () => {},
|
|
63
|
-
visitOneHasOneOwning: ({
|
|
67
|
+
visitOneHasOneOwning: ({ relation }) => {
|
|
64
68
|
createOwningSide(relation)
|
|
65
69
|
const uniqueConstraintName = NamingHelper.createUniqueConstraintName(entity.name, [relation.name])
|
|
66
70
|
builder.addConstraint(entity.tableName, uniqueConstraintName, { unique: [relation.joiningColumn.columnName] })
|
|
67
71
|
},
|
|
68
72
|
visitOneHasOneInverse: () => {},
|
|
69
|
-
visitManyHasManyOwning: ({
|
|
73
|
+
visitManyHasManyOwning: ({ relation }) => {
|
|
70
74
|
createJunctionTableSql(builder, this.options.systemSchema, entity, targetEntity, relation)
|
|
71
75
|
},
|
|
72
76
|
visitManyHasManyInverse: () => {},
|
|
@@ -91,11 +95,32 @@ export const CreateRelationModification: ModificationHandlerStatic<CreateRelatio
|
|
|
91
95
|
return { message: `Add relation ${this.data.entityName}.${this.data.owningSide.name}`, failureWarning }
|
|
92
96
|
}
|
|
93
97
|
|
|
94
|
-
|
|
95
|
-
|
|
98
|
+
|
|
99
|
+
private getNormalizedOwningSide(): Model.AnyOwningRelation {
|
|
100
|
+
if (this.data.owningSide.type === Model.RelationType.ManyHasMany) {
|
|
101
|
+
return normalizeManyHasManyRelation(this.data.owningSide)
|
|
102
|
+
}
|
|
103
|
+
return this.data.owningSide
|
|
96
104
|
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
export type CreateRelationModificationData = {
|
|
109
|
+
entityName: string
|
|
110
|
+
owningSide:
|
|
111
|
+
| Model.ManyHasOneRelation
|
|
112
|
+
| Model.OneHasOneOwningRelation
|
|
113
|
+
| PartialManyHasManyRelation
|
|
114
|
+
inverseSide?: Model.AnyInverseRelation
|
|
115
|
+
}
|
|
97
116
|
|
|
98
|
-
|
|
117
|
+
export const createRelationModification = createModificationType({
|
|
118
|
+
id: 'createRelation',
|
|
119
|
+
handler: CreateRelationModificationHandler,
|
|
120
|
+
})
|
|
121
|
+
|
|
122
|
+
export class CreateRelationDiffer implements Differ {
|
|
123
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
99
124
|
return createFields(originalSchema, updatedSchema, ({ newField, updatedEntity }) => {
|
|
100
125
|
if (!isRelation(newField) || !isOwningRelation(newField)) {
|
|
101
126
|
return undefined
|
|
@@ -106,28 +131,11 @@ export const CreateRelationModification: ModificationHandlerStatic<CreateRelatio
|
|
|
106
131
|
if (inverseSide && !(isRelation(inverseSide) && isInverseRelation(inverseSide))) {
|
|
107
132
|
throw new Error()
|
|
108
133
|
}
|
|
109
|
-
return
|
|
134
|
+
return createRelationModification.createModification({
|
|
110
135
|
entityName: updatedEntity.name,
|
|
111
136
|
owningSide: newField,
|
|
112
137
|
...(inverseSide ? { inverseSide } : {}),
|
|
113
138
|
})
|
|
114
139
|
})
|
|
115
140
|
}
|
|
116
|
-
|
|
117
|
-
private getNormalizedOwningSide(): Model.AnyOwningRelation {
|
|
118
|
-
if (this.data.owningSide.type === Model.RelationType.ManyHasMany) {
|
|
119
|
-
return normalizeManyHasManyRelation(this.data.owningSide)
|
|
120
|
-
}
|
|
121
|
-
return this.data.owningSide
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
export type CreateRelationModificationData = {
|
|
127
|
-
entityName: string
|
|
128
|
-
owningSide:
|
|
129
|
-
| Model.ManyHasOneRelation
|
|
130
|
-
| Model.OneHasOneOwningRelation
|
|
131
|
-
| PartialManyHasManyRelation
|
|
132
|
-
inverseSide?: Model.AnyInverseRelation
|
|
133
141
|
}
|
|
@@ -1,12 +1,11 @@
|
|
|
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 { isOwningRelation } from '@contember/schema-utils'
|
|
6
6
|
import { updateRelations } from '../utils/diffUtils'
|
|
7
7
|
|
|
8
|
-
export
|
|
9
|
-
static id = 'disableOrphanRemoval'
|
|
8
|
+
export class DisableOrphanRemovalModificationHandler implements ModificationHandler<DisableOrphanRemovalModificationData> {
|
|
10
9
|
|
|
11
10
|
constructor(private readonly data: DisableOrphanRemovalModificationData, private readonly schema: Schema) {}
|
|
12
11
|
|
|
@@ -27,12 +26,20 @@ export const DisableOrphanRemovalModification: ModificationHandlerStatic<Disable
|
|
|
27
26
|
message: `Disable orphan removal on ${this.data.entityName}.${this.data.fieldName}`,
|
|
28
27
|
}
|
|
29
28
|
}
|
|
29
|
+
}
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
export interface DisableOrphanRemovalModificationData {
|
|
32
|
+
entityName: string
|
|
33
|
+
fieldName: string
|
|
34
|
+
}
|
|
34
35
|
|
|
35
|
-
|
|
36
|
+
export const disableOrphanRemovalModification = createModificationType({
|
|
37
|
+
id: 'disableOrphanRemoval',
|
|
38
|
+
handler: DisableOrphanRemovalModificationHandler,
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
export class DisableOrphanRemovalDiffer implements Differ {
|
|
42
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
36
43
|
return updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {
|
|
37
44
|
if (
|
|
38
45
|
isOwningRelation(originalRelation) &&
|
|
@@ -42,7 +49,7 @@ export const DisableOrphanRemovalModification: ModificationHandlerStatic<Disable
|
|
|
42
49
|
originalRelation.orphanRemoval &&
|
|
43
50
|
!updatedRelation.orphanRemoval
|
|
44
51
|
) {
|
|
45
|
-
return
|
|
52
|
+
return disableOrphanRemovalModification.createModification({
|
|
46
53
|
entityName: updatedEntity.name,
|
|
47
54
|
fieldName: updatedRelation.name,
|
|
48
55
|
})
|
|
@@ -51,7 +58,3 @@ export const DisableOrphanRemovalModification: ModificationHandlerStatic<Disable
|
|
|
51
58
|
})
|
|
52
59
|
}
|
|
53
60
|
}
|
|
54
|
-
export interface DisableOrphanRemovalModificationData {
|
|
55
|
-
entityName: string
|
|
56
|
-
fieldName: string
|
|
57
|
-
}
|
|
@@ -1,12 +1,11 @@
|
|
|
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 { isOwningRelation } from '@contember/schema-utils'
|
|
6
6
|
import { updateRelations } from '../utils/diffUtils'
|
|
7
7
|
|
|
8
|
-
export
|
|
9
|
-
static id = 'enableOrphanRemoval'
|
|
8
|
+
export class EnableOrphanRemovalModificationHandler implements ModificationHandler<EnableOrphanRemovalModificationData> {
|
|
10
9
|
constructor(private readonly data: EnableOrphanRemovalModificationData, private readonly schema: Schema) {}
|
|
11
10
|
|
|
12
11
|
public createSql(builder: MigrationBuilder): void {}
|
|
@@ -30,11 +29,20 @@ export const EnableOrphanRemovalModification: ModificationHandlerStatic<EnableOr
|
|
|
30
29
|
}
|
|
31
30
|
}
|
|
32
31
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface EnableOrphanRemovalModificationData {
|
|
35
|
+
entityName: string
|
|
36
|
+
fieldName: string
|
|
37
|
+
}
|
|
36
38
|
|
|
37
|
-
|
|
39
|
+
export const enableOrphanRemovalModification = createModificationType({
|
|
40
|
+
id: 'enableOrphanRemoval',
|
|
41
|
+
handler: EnableOrphanRemovalModificationHandler,
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
export class EnableOrphanRemovalDiffer implements Differ {
|
|
45
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
38
46
|
return updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {
|
|
39
47
|
if (
|
|
40
48
|
isOwningRelation(originalRelation) &&
|
|
@@ -44,7 +52,7 @@ export const EnableOrphanRemovalModification: ModificationHandlerStatic<EnableOr
|
|
|
44
52
|
!originalRelation.orphanRemoval &&
|
|
45
53
|
updatedRelation.orphanRemoval
|
|
46
54
|
) {
|
|
47
|
-
return
|
|
55
|
+
return enableOrphanRemovalModification.createModification({
|
|
48
56
|
entityName: updatedEntity.name,
|
|
49
57
|
fieldName: updatedRelation.name,
|
|
50
58
|
})
|
|
@@ -53,8 +61,3 @@ export const EnableOrphanRemovalModification: ModificationHandlerStatic<EnableOr
|
|
|
53
61
|
})
|
|
54
62
|
}
|
|
55
63
|
}
|
|
56
|
-
|
|
57
|
-
export interface EnableOrphanRemovalModificationData {
|
|
58
|
-
entityName: string
|
|
59
|
-
fieldName: string
|
|
60
|
-
}
|
|
@@ -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, updateField, updateModel } from '../utils/schemaUpdateUtils'
|
|
4
|
-
import {
|
|
4
|
+
import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
|
|
5
5
|
import { getEntity, tryGetColumnName } from '@contember/schema-utils'
|
|
6
6
|
import { isIt } from '../../utils/isIt'
|
|
7
7
|
import { updateRelations } from '../utils/diffUtils'
|
|
8
8
|
|
|
9
|
-
export
|
|
10
|
-
static id = 'makeRelationNotNull'
|
|
9
|
+
export class MakeRelationNotNullModificationHandler implements ModificationHandler<MakeRelationNotNullModificationData> {
|
|
11
10
|
constructor(private readonly data: MakeRelationNotNullModificationData, private readonly schema: Schema) {}
|
|
12
11
|
|
|
13
12
|
public createSql(builder: MigrationBuilder): void {
|
|
@@ -43,12 +42,21 @@ export const MakeRelationNotNullModification: ModificationHandlerStatic<MakeRela
|
|
|
43
42
|
failureWarning: 'Changing to not-null may fail in runtime',
|
|
44
43
|
}
|
|
45
44
|
}
|
|
45
|
+
}
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
export interface MakeRelationNotNullModificationData {
|
|
48
|
+
entityName: string
|
|
49
|
+
fieldName: string
|
|
50
|
+
// todo fillValue
|
|
51
|
+
}
|
|
50
52
|
|
|
51
|
-
|
|
53
|
+
export const makeRelationNotNullModification = createModificationType({
|
|
54
|
+
id: 'makeRelationNotNull',
|
|
55
|
+
handler: MakeRelationNotNullModificationHandler,
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
export class MakeRelationNotNullDiffer implements Differ {
|
|
59
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
52
60
|
return updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {
|
|
53
61
|
if (
|
|
54
62
|
originalRelation.type === updatedRelation.type &&
|
|
@@ -57,7 +65,7 @@ export const MakeRelationNotNullModification: ModificationHandlerStatic<MakeRela
|
|
|
57
65
|
!updatedRelation.nullable &&
|
|
58
66
|
originalRelation.nullable
|
|
59
67
|
) {
|
|
60
|
-
return
|
|
68
|
+
return makeRelationNotNullModification.createModification({
|
|
61
69
|
entityName: updatedEntity.name,
|
|
62
70
|
fieldName: updatedRelation.name,
|
|
63
71
|
})
|
|
@@ -66,9 +74,3 @@ export const MakeRelationNotNullModification: ModificationHandlerStatic<MakeRela
|
|
|
66
74
|
})
|
|
67
75
|
}
|
|
68
76
|
}
|
|
69
|
-
|
|
70
|
-
export interface MakeRelationNotNullModificationData {
|
|
71
|
-
entityName: string
|
|
72
|
-
fieldName: string
|
|
73
|
-
// todo fillValue
|
|
74
|
-
}
|
|
@@ -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, updateField, updateModel } from '../utils/schemaUpdateUtils'
|
|
4
|
-
import {
|
|
4
|
+
import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
|
|
5
5
|
import { getEntity, tryGetColumnName } from '@contember/schema-utils'
|
|
6
6
|
import { isIt } from '../../utils/isIt'
|
|
7
7
|
import { updateRelations } from '../utils/diffUtils'
|
|
8
8
|
|
|
9
|
-
export
|
|
10
|
-
static id = 'makeRelationNullable'
|
|
9
|
+
export class MakeRelationNullableModificationHandler implements ModificationHandler<MakeRelationNullableModificationData> {
|
|
11
10
|
constructor(private readonly data: MakeRelationNullableModificationData, private readonly schema: Schema) {}
|
|
12
11
|
|
|
13
12
|
public createSql(builder: MigrationBuilder): void {
|
|
@@ -43,11 +42,21 @@ export const MakeRelationNullableModification: ModificationHandlerStatic<MakeRel
|
|
|
43
42
|
}
|
|
44
43
|
}
|
|
45
44
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface MakeRelationNullableModificationData {
|
|
48
|
+
entityName: string
|
|
49
|
+
fieldName: string
|
|
50
|
+
}
|
|
49
51
|
|
|
50
|
-
|
|
52
|
+
|
|
53
|
+
export const makeRelationNullableModification = createModificationType({
|
|
54
|
+
id: 'makeRelationNullable',
|
|
55
|
+
handler: MakeRelationNullableModificationHandler,
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
export class MakeRelationNullableDiffer implements Differ {
|
|
59
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
51
60
|
return updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {
|
|
52
61
|
if (
|
|
53
62
|
originalRelation.type === updatedRelation.type &&
|
|
@@ -56,7 +65,7 @@ export const MakeRelationNullableModification: ModificationHandlerStatic<MakeRel
|
|
|
56
65
|
updatedRelation.nullable &&
|
|
57
66
|
!originalRelation.nullable
|
|
58
67
|
) {
|
|
59
|
-
return
|
|
68
|
+
return makeRelationNullableModification.createModification({
|
|
60
69
|
entityName: updatedEntity.name,
|
|
61
70
|
fieldName: updatedRelation.name,
|
|
62
71
|
})
|
|
@@ -65,8 +74,3 @@ export const MakeRelationNullableModification: ModificationHandlerStatic<MakeRel
|
|
|
65
74
|
})
|
|
66
75
|
}
|
|
67
76
|
}
|
|
68
|
-
|
|
69
|
-
export interface MakeRelationNullableModificationData {
|
|
70
|
-
entityName: string
|
|
71
|
-
fieldName: string
|
|
72
|
-
}
|
|
@@ -1,7 +1,12 @@
|
|
|
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 {
|
|
5
|
+
createModificationType,
|
|
6
|
+
Differ,
|
|
7
|
+
ModificationHandler,
|
|
8
|
+
ModificationHandlerOptions,
|
|
9
|
+
} from '../ModificationHandler'
|
|
5
10
|
import {
|
|
6
11
|
createEventTrigger,
|
|
7
12
|
createEventTrxTrigger,
|
|
@@ -12,8 +17,7 @@ import { isOwningRelation, isRelation } from '@contember/schema-utils'
|
|
|
12
17
|
import { updateRelations } from '../utils/diffUtils'
|
|
13
18
|
import { isIt } from '../../utils/isIt'
|
|
14
19
|
|
|
15
|
-
export
|
|
16
|
-
static id = 'toggleJunctionEventLog'
|
|
20
|
+
export class ToggleJunctionEventLogModificationHandler implements ModificationHandler<ToggleJunctionEventLogModificationData> {
|
|
17
21
|
|
|
18
22
|
constructor(
|
|
19
23
|
private readonly data: ToggleJunctionEventLogModificationData,
|
|
@@ -67,12 +71,21 @@ export const ToggleJunctionEventLogModification: ModificationHandlerStatic<Toggl
|
|
|
67
71
|
message: `${this.data.enabled ? 'Enable' : 'Disable'} event log for ${this.data.entityName}.${this.data.fieldName}`,
|
|
68
72
|
}
|
|
69
73
|
}
|
|
74
|
+
}
|
|
70
75
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
76
|
+
export interface ToggleJunctionEventLogModificationData {
|
|
77
|
+
entityName: string
|
|
78
|
+
fieldName: string
|
|
79
|
+
enabled: boolean
|
|
80
|
+
}
|
|
74
81
|
|
|
75
|
-
|
|
82
|
+
export const toggleJunctionEventLogModification = createModificationType({
|
|
83
|
+
id: 'toggleJunctionEventLog',
|
|
84
|
+
handler: ToggleJunctionEventLogModificationHandler,
|
|
85
|
+
})
|
|
86
|
+
|
|
87
|
+
export class ToggleJunctionEventLogDiffer implements Differ {
|
|
88
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
76
89
|
return updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {
|
|
77
90
|
if (
|
|
78
91
|
originalRelation.type === updatedRelation.type &&
|
|
@@ -82,7 +95,7 @@ export const ToggleJunctionEventLogModification: ModificationHandlerStatic<Toggl
|
|
|
82
95
|
const newValue = updatedRelation.joiningTable.eventLog?.enabled ?? false
|
|
83
96
|
const oldValue = originalRelation.joiningTable.eventLog?.enabled ?? false
|
|
84
97
|
if (newValue !== oldValue) {
|
|
85
|
-
return
|
|
98
|
+
return toggleJunctionEventLogModification.createModification({
|
|
86
99
|
entityName: updatedEntity.name,
|
|
87
100
|
fieldName: updatedRelation.name,
|
|
88
101
|
enabled: newValue,
|
|
@@ -94,9 +107,3 @@ export const ToggleJunctionEventLogModification: ModificationHandlerStatic<Toggl
|
|
|
94
107
|
|
|
95
108
|
}
|
|
96
109
|
}
|
|
97
|
-
|
|
98
|
-
export interface ToggleJunctionEventLogModificationData {
|
|
99
|
-
entityName: string
|
|
100
|
-
fieldName: string
|
|
101
|
-
enabled: boolean
|
|
102
|
-
}
|
|
@@ -1,12 +1,11 @@
|
|
|
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 { isIt } from '../../utils/isIt'
|
|
6
6
|
import { updateRelations } from '../utils/diffUtils'
|
|
7
7
|
|
|
8
|
-
export
|
|
9
|
-
static id = 'updateRelationOnDelete'
|
|
8
|
+
export class UpdateRelationOnDeleteModificationHandler implements ModificationHandler<UpdateRelationOnDeleteModificationData> {
|
|
10
9
|
constructor(private readonly data: UpdateRelationOnDeleteModificationData, private readonly schema: Schema) {}
|
|
11
10
|
|
|
12
11
|
public createSql(builder: MigrationBuilder): void {}
|
|
@@ -27,12 +26,21 @@ export const UpdateRelationOnDeleteModification: ModificationHandlerStatic<Updat
|
|
|
27
26
|
describe() {
|
|
28
27
|
return { message: `Change on-delete policy of relation ${this.data.entityName}.${this.data.fieldName}` }
|
|
29
28
|
}
|
|
29
|
+
}
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
export interface UpdateRelationOnDeleteModificationData {
|
|
32
|
+
entityName: string
|
|
33
|
+
fieldName: string
|
|
34
|
+
onDelete: Model.OnDelete
|
|
35
|
+
}
|
|
34
36
|
|
|
35
|
-
|
|
37
|
+
export const updateRelationOnDeleteModification = createModificationType({
|
|
38
|
+
id: 'updateRelationOnDelete',
|
|
39
|
+
handler: UpdateRelationOnDeleteModificationHandler,
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
export class UpdateRelationOnDeleteDiffer implements Differ {
|
|
43
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
36
44
|
return updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {
|
|
37
45
|
if (
|
|
38
46
|
originalRelation.type === updatedRelation.type &&
|
|
@@ -40,7 +48,7 @@ export const UpdateRelationOnDeleteModification: ModificationHandlerStatic<Updat
|
|
|
40
48
|
isIt<Model.JoiningColumnRelation>(originalRelation, 'joiningColumn') &&
|
|
41
49
|
updatedRelation.joiningColumn.onDelete !== originalRelation.joiningColumn.onDelete
|
|
42
50
|
) {
|
|
43
|
-
return
|
|
51
|
+
return updateRelationOnDeleteModification.createModification({
|
|
44
52
|
entityName: updatedEntity.name,
|
|
45
53
|
fieldName: updatedRelation.name,
|
|
46
54
|
onDelete: updatedRelation.joiningColumn.onDelete,
|
|
@@ -50,9 +58,3 @@ export const UpdateRelationOnDeleteModification: ModificationHandlerStatic<Updat
|
|
|
50
58
|
})
|
|
51
59
|
}
|
|
52
60
|
}
|
|
53
|
-
|
|
54
|
-
export interface UpdateRelationOnDeleteModificationData {
|
|
55
|
-
entityName: string
|
|
56
|
-
fieldName: string
|
|
57
|
-
onDelete: Model.OnDelete
|
|
58
|
-
}
|