@contember/schema-migrations 1.1.1 → 1.2.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +23 -16
- package/src/modifications/constraints/CreateUniqueConstraintModification.ts +21 -15
- 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 +16 -13
- package/src/modifications/fields/UpdateFieldNameModification.ts +9 -10
- 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 +32 -24
- 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
|
@@ -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,
|
|
@@ -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
|
-
}
|
|
@@ -1,12 +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 deepEqual from 'fast-deep-equal'
|
|
6
6
|
import { updateRelations } from '../utils/diffUtils'
|
|
7
7
|
|
|
8
|
-
export
|
|
9
|
-
|
|
8
|
+
export class UpdateRelationOrderByModificationHandler implements ModificationHandler<UpdateRelationOrderByModificationData> {
|
|
9
|
+
|
|
10
10
|
constructor(private readonly data: UpdateRelationOrderByModificationData, private readonly schema: Schema) {}
|
|
11
11
|
|
|
12
12
|
public createSql(builder: MigrationBuilder): void {}
|
|
@@ -27,12 +27,21 @@ export const UpdateRelationOrderByModification: ModificationHandlerStatic<Update
|
|
|
27
27
|
describe() {
|
|
28
28
|
return { message: `Update order-by of relation ${this.data.entityName}.${this.data.fieldName}` }
|
|
29
29
|
}
|
|
30
|
+
}
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
export interface UpdateRelationOrderByModificationData {
|
|
33
|
+
entityName: string
|
|
34
|
+
fieldName: string
|
|
35
|
+
orderBy: readonly Model.OrderBy[]
|
|
36
|
+
}
|
|
34
37
|
|
|
35
|
-
|
|
38
|
+
export const updateRelationOrderByModification = createModificationType({
|
|
39
|
+
id: 'updateRelationOrderBy',
|
|
40
|
+
handler: UpdateRelationOrderByModificationHandler,
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
export class UpdateRelationOrderByDiffer implements Differ {
|
|
44
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
36
45
|
return updateRelations(originalSchema, updatedSchema, ({ updatedRelation, originalRelation, updatedEntity }) => {
|
|
37
46
|
const isItOrderable = (relation: Model.AnyRelation): relation is Model.OrderableRelation & Model.AnyRelation =>
|
|
38
47
|
relation.type === Model.RelationType.ManyHasMany || relation.type === Model.RelationType.OneHasMany
|
|
@@ -42,7 +51,7 @@ export const UpdateRelationOrderByModification: ModificationHandlerStatic<Update
|
|
|
42
51
|
isItOrderable(originalRelation) &&
|
|
43
52
|
!deepEqual(updatedRelation.orderBy || [], originalRelation.orderBy || [])
|
|
44
53
|
) {
|
|
45
|
-
return
|
|
54
|
+
return updateRelationOrderByModification.createModification({
|
|
46
55
|
entityName: updatedEntity.name,
|
|
47
56
|
fieldName: updatedRelation.name,
|
|
48
57
|
orderBy: updatedRelation.orderBy || [],
|
|
@@ -52,9 +61,3 @@ export const UpdateRelationOrderByModification: ModificationHandlerStatic<Update
|
|
|
52
61
|
})
|
|
53
62
|
}
|
|
54
63
|
}
|
|
55
|
-
|
|
56
|
-
export interface UpdateRelationOrderByModificationData {
|
|
57
|
-
entityName: string
|
|
58
|
-
fieldName: string
|
|
59
|
-
orderBy: readonly Model.OrderBy[]
|
|
60
|
-
}
|
|
@@ -6,6 +6,6 @@ export * from './DisableOrphanRemovalModification'
|
|
|
6
6
|
export * from './EnableOrphanRemovalModification'
|
|
7
7
|
export * from './MakeRelationNotNullModification'
|
|
8
8
|
export * from './MakeRelationNullableModification'
|
|
9
|
-
export * from './
|
|
9
|
+
export * from './ToggleJunctionEventLogModification'
|
|
10
10
|
export * from './UpdateRelationOnDeleteModification'
|
|
11
11
|
export * from './UpdateRelationOrderByModification'
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
2
|
import { SchemaUpdater } from '../utils/schemaUpdateUtils'
|
|
3
|
-
import {
|
|
3
|
+
import { createModificationType, ModificationHandler } from '../ModificationHandler'
|
|
4
4
|
import { applyPatch, Operation } from 'rfc6902'
|
|
5
5
|
import deepCopy from '../../utils/deepCopy'
|
|
6
6
|
|
|
7
|
-
export
|
|
8
|
-
static id = 'patchValidationSchema'
|
|
7
|
+
export class PatchValidationSchemaModificationHandler implements ModificationHandler<PatchValidationSchemaModificationData> {
|
|
9
8
|
constructor(private readonly data: PatchValidationSchemaModificationData) {}
|
|
10
9
|
|
|
11
10
|
public createSql(builder: MigrationBuilder): void {}
|
|
@@ -28,12 +27,13 @@ export const PatchValidationSchemaModification: ModificationHandlerStatic<PatchV
|
|
|
28
27
|
describe() {
|
|
29
28
|
return { message: 'Update validation schema' }
|
|
30
29
|
}
|
|
31
|
-
|
|
32
|
-
static createModification(data: PatchValidationSchemaModificationData) {
|
|
33
|
-
return { modification: this.id, ...data }
|
|
34
|
-
}
|
|
35
30
|
}
|
|
36
31
|
|
|
37
32
|
export interface PatchValidationSchemaModificationData {
|
|
38
33
|
patch: Operation[]
|
|
39
34
|
}
|
|
35
|
+
|
|
36
|
+
export const patchValidationSchemaModification = createModificationType({
|
|
37
|
+
id: 'patchValidationSchema',
|
|
38
|
+
handler: PatchValidationSchemaModificationHandler,
|
|
39
|
+
})
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
2
|
import { Schema, Validation } from '@contember/schema'
|
|
3
3
|
import { SchemaUpdater } from '../utils/schemaUpdateUtils'
|
|
4
|
-
import {
|
|
4
|
+
import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
|
|
5
5
|
import deepEqual from 'fast-deep-equal'
|
|
6
6
|
import { createPatch } from 'rfc6902'
|
|
7
|
-
import {
|
|
7
|
+
import { patchValidationSchemaModification } from './PatchValidationSchemaModification'
|
|
8
8
|
|
|
9
|
-
export
|
|
10
|
-
static id = 'updateValidationSchema'
|
|
9
|
+
export class UpdateValidationSchemaModificationHandler implements ModificationHandler<UpdateValidationSchemaModificationData> {
|
|
11
10
|
constructor(private readonly data: UpdateValidationSchemaModificationData) {}
|
|
12
11
|
|
|
13
12
|
public createSql(builder: MigrationBuilder): void {}
|
|
@@ -23,22 +22,26 @@ export const UpdateValidationSchemaModification: ModificationHandlerStatic<Updat
|
|
|
23
22
|
return { message: 'Update validation schema' }
|
|
24
23
|
}
|
|
25
24
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface UpdateValidationSchemaModificationData {
|
|
28
|
+
schema: Validation.Schema
|
|
29
|
+
}
|
|
29
30
|
|
|
30
|
-
|
|
31
|
+
export const updateValidationSchemaModification = createModificationType({
|
|
32
|
+
id: 'updateValidationSchema',
|
|
33
|
+
handler: UpdateValidationSchemaModificationHandler,
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
export class UpdateValidationSchemaDiffer implements Differ {
|
|
37
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
31
38
|
if (deepEqual(originalSchema.validation, updatedSchema.validation)) {
|
|
32
39
|
return []
|
|
33
40
|
}
|
|
34
41
|
const patch = createPatch(originalSchema.validation, updatedSchema.validation)
|
|
35
42
|
if (patch.length <= 20) {
|
|
36
|
-
return [
|
|
43
|
+
return [patchValidationSchemaModification.createModification({ patch })]
|
|
37
44
|
}
|
|
38
|
-
return [
|
|
45
|
+
return [updateValidationSchemaModification.createModification({ schema: updatedSchema.validation })]
|
|
39
46
|
}
|
|
40
47
|
}
|
|
41
|
-
|
|
42
|
-
export interface UpdateValidationSchemaModificationData {
|
|
43
|
-
schema: Validation.Schema
|
|
44
|
-
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { testMigrations } from '../../src/tests'
|
|
2
|
+
import { SQL } from '../../src/tags'
|
|
3
|
+
import { SchemaDefinition as def } from '@contember/schema-definition'
|
|
4
|
+
|
|
5
|
+
namespace SchemaWithoutIndex {
|
|
6
|
+
export class Article {
|
|
7
|
+
title = def.stringColumn()
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
namespace SchemaWithIndex {
|
|
12
|
+
@def.Index('title')
|
|
13
|
+
export class Article {
|
|
14
|
+
title = def.stringColumn()
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
testMigrations('create index', {
|
|
20
|
+
originalSchema: def.createModel(SchemaWithoutIndex),
|
|
21
|
+
updatedSchema: def.createModel(SchemaWithIndex),
|
|
22
|
+
diff: [
|
|
23
|
+
{
|
|
24
|
+
modification: 'createIndex',
|
|
25
|
+
entityName: 'Article',
|
|
26
|
+
index: { name: 'idx_Article_title_2dc66a', fields: ['title'] },
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
sql: SQL`CREATE INDEX "idx_Article_title_2dc66a" ON "article" ("title");`,
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
testMigrations('drop index', {
|
|
34
|
+
originalSchema: def.createModel(SchemaWithIndex),
|
|
35
|
+
updatedSchema: def.createModel(SchemaWithoutIndex),
|
|
36
|
+
diff: [
|
|
37
|
+
{
|
|
38
|
+
modification: 'removeIndex',
|
|
39
|
+
entityName: 'Article',
|
|
40
|
+
indexName: 'idx_Article_title_2dc66a',
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
sql: SQL`DROP INDEX "idx_Article_title_2dc66a";`,
|
|
44
|
+
})
|