@contember/schema-migrations 1.2.0-alpha.1 → 1.2.0-alpha.12
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 +72 -69
- 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 +72 -71
- 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 +66 -62
- 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/utils/columnUtils.d.ts +3 -0
- package/dist/src/modifications/utils/columnUtils.d.ts.map +1 -0
- package/dist/src/modifications/utils/columnUtils.js +9 -0
- package/dist/src/modifications/utils/columnUtils.js.map +1 -0
- 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/createColumn.test.js +36 -0
- package/dist/tests/cases/integration/createColumn.test.js.map +1 -1
- 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 +21 -18
- package/src/modifications/columns/UpdateColumnDefinitionModification.ts +44 -42
- 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 +21 -12
- 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/utils/columnUtils.ts +5 -0
- 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/createColumn.test.ts +33 -0
- package/tests/cases/integration/createEntity.test.ts +2 -0
- package/tests/cases/integration/createManyHasMany.test.ts +1 -0
- package/tests/cases/integration/createManyHasOne.test.ts +1 -0
- package/tests/cases/integration/createOneHasMany.test.ts +1 -0
- package/tests/cases/integration/createOneHasOne.test.ts +2 -0
- package/tests/cases/integration/createView.test.ts +1 -0
- package/tests/cases/integration/updateView.test.ts +9 -0
- package/dist/src/modifications/relations/ToggleManyHasManyEventLogModification.d.ts +0 -8
- package/dist/src/modifications/relations/ToggleManyHasManyEventLogModification.d.ts.map +0 -1
- package/dist/src/modifications/relations/ToggleManyHasManyEventLogModification.js +0 -81
- package/dist/src/modifications/relations/ToggleManyHasManyEventLogModification.js.map +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
2
|
import { Model, Schema } from '@contember/schema'
|
|
3
3
|
import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'
|
|
4
|
-
import {
|
|
4
|
+
import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
|
|
5
5
|
import deepEqual from 'fast-deep-equal'
|
|
6
6
|
import { updateColumns } from '../utils/diffUtils'
|
|
7
7
|
import { wrapIdentifier } from '@contember/database'
|
|
8
|
+
import { getColumnSqlType } from '../utils/columnUtils'
|
|
8
9
|
|
|
9
|
-
export
|
|
10
|
-
static id = 'updateColumnDefinition'
|
|
10
|
+
export class UpdateColumnDefinitionModificationHandler implements ModificationHandler<UpdateColumnDefinitionModificationData> {
|
|
11
11
|
constructor(private readonly data: UpdateColumnDefinitionModificationData, private readonly schema: Schema) {}
|
|
12
12
|
|
|
13
13
|
public createSql(builder: MigrationBuilder): void {
|
|
@@ -15,34 +15,33 @@ export const UpdateColumnDefinitionModification: ModificationHandlerStatic<Updat
|
|
|
15
15
|
if (entity.view) {
|
|
16
16
|
return
|
|
17
17
|
}
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const newType =
|
|
21
|
-
?
|
|
22
|
-
? `"${definition.columnType}"`
|
|
23
|
-
: definition.columnType
|
|
18
|
+
const oldColumn = entity.fields[this.data.fieldName] as Model.AnyColumn
|
|
19
|
+
const newColumn = this.data.definition
|
|
20
|
+
const newType = newColumn.columnType !== oldColumn.columnType
|
|
21
|
+
? getColumnSqlType(newColumn)
|
|
24
22
|
: undefined
|
|
25
|
-
|
|
23
|
+
|
|
24
|
+
builder.alterColumn(entity.tableName, oldColumn.columnName, {
|
|
26
25
|
type: newType,
|
|
27
|
-
notNull:
|
|
28
|
-
using: newType !== undefined ? `${wrapIdentifier(
|
|
29
|
-
sequenceGenerated:
|
|
26
|
+
notNull: oldColumn.nullable !== newColumn.nullable ? !newColumn.nullable : undefined,
|
|
27
|
+
using: newType !== undefined ? `${wrapIdentifier(oldColumn.columnName)}::${newType}` : undefined,
|
|
28
|
+
sequenceGenerated: oldColumn.sequence && !newColumn.sequence ? false : (!oldColumn.sequence ? newColumn.sequence : undefined),
|
|
30
29
|
})
|
|
31
30
|
|
|
32
31
|
const seqAlter = []
|
|
33
|
-
if (
|
|
34
|
-
if (
|
|
35
|
-
seqAlter.push(`SET GENERATED ${
|
|
32
|
+
if (oldColumn.sequence && newColumn.sequence) {
|
|
33
|
+
if (oldColumn.sequence.precedence !== newColumn.sequence.precedence) {
|
|
34
|
+
seqAlter.push(`SET GENERATED ${newColumn.sequence.precedence}`)
|
|
36
35
|
}
|
|
37
|
-
if (
|
|
38
|
-
seqAlter.push(`SET START WITH ${
|
|
36
|
+
if (oldColumn.sequence.start !== newColumn.sequence.start && typeof newColumn.sequence.start == 'number') {
|
|
37
|
+
seqAlter.push(`SET START WITH ${newColumn.sequence.start}`)
|
|
39
38
|
}
|
|
40
|
-
if (
|
|
39
|
+
if (newColumn.sequence.restart) {
|
|
41
40
|
seqAlter.push('RESTART')
|
|
42
41
|
}
|
|
43
42
|
}
|
|
44
43
|
if (seqAlter.length > 0) {
|
|
45
|
-
builder.sql(`ALTER TABLE ${wrapIdentifier(entity.tableName)} ALTER ${wrapIdentifier(
|
|
44
|
+
builder.sql(`ALTER TABLE ${wrapIdentifier(entity.tableName)} ALTER ${wrapIdentifier(oldColumn.columnName)} ${seqAlter.join(' ')}`)
|
|
46
45
|
}
|
|
47
46
|
}
|
|
48
47
|
|
|
@@ -71,12 +70,33 @@ export const UpdateColumnDefinitionModification: ModificationHandlerStatic<Updat
|
|
|
71
70
|
failureWarning,
|
|
72
71
|
}
|
|
73
72
|
}
|
|
73
|
+
}
|
|
74
74
|
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
type SequenceDefinitionAlter =
|
|
76
|
+
& Model.AnyColumn['sequence']
|
|
77
|
+
& {
|
|
78
|
+
restart?: boolean
|
|
77
79
|
}
|
|
78
80
|
|
|
79
|
-
|
|
81
|
+
type ColumnDefinitionAlter =
|
|
82
|
+
& Model.AnyColumn
|
|
83
|
+
& {
|
|
84
|
+
sequence?: SequenceDefinitionAlter
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export interface UpdateColumnDefinitionModificationData {
|
|
88
|
+
entityName: string
|
|
89
|
+
fieldName: string
|
|
90
|
+
definition: ColumnDefinitionAlter
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export const updateColumnDefinitionModification = createModificationType({
|
|
94
|
+
id: 'updateColumnDefinition',
|
|
95
|
+
handler: UpdateColumnDefinitionModificationHandler,
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
export class UpdateColumnDefinitionDiffer implements Differ {
|
|
99
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
80
100
|
return updateColumns(originalSchema, updatedSchema, ({ originalColumn, updatedColumn, updatedEntity }) => {
|
|
81
101
|
const {
|
|
82
102
|
name: {},
|
|
@@ -91,7 +111,7 @@ export const UpdateColumnDefinitionModification: ModificationHandlerStatic<Updat
|
|
|
91
111
|
if (deepEqual(updatedDefinition, originalDefinition)) {
|
|
92
112
|
return undefined
|
|
93
113
|
}
|
|
94
|
-
return
|
|
114
|
+
return updateColumnDefinitionModification.createModification({
|
|
95
115
|
entityName: updatedEntity.name,
|
|
96
116
|
fieldName: updatedColumn.name,
|
|
97
117
|
definition: updatedDefinition,
|
|
@@ -99,21 +119,3 @@ export const UpdateColumnDefinitionModification: ModificationHandlerStatic<Updat
|
|
|
99
119
|
})
|
|
100
120
|
}
|
|
101
121
|
}
|
|
102
|
-
|
|
103
|
-
type SequenceDefinitionAlter =
|
|
104
|
-
& Model.AnyColumn['sequence']
|
|
105
|
-
& {
|
|
106
|
-
restart?: boolean
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
type ColumnDefinitionAlter =
|
|
110
|
-
& Model.AnyColumn
|
|
111
|
-
& {
|
|
112
|
-
sequence?: SequenceDefinitionAlter
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
export interface UpdateColumnDefinitionModificationData {
|
|
116
|
-
entityName: string
|
|
117
|
-
fieldName: string
|
|
118
|
-
definition: ColumnDefinitionAlter
|
|
119
|
-
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
2
|
import { Model, Schema } from '@contember/schema'
|
|
3
3
|
import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'
|
|
4
|
-
import {
|
|
4
|
+
import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
|
|
5
5
|
import { updateColumns } from '../utils/diffUtils'
|
|
6
6
|
import { acceptFieldVisitor } from '@contember/schema-utils'
|
|
7
7
|
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
export class UpdateColumnNameModificationHandler implements ModificationHandler<UpdateColumnNameModificationData> {
|
|
9
|
+
constructor(private readonly data: UpdateColumnNameModificationData, private readonly schema: Schema) {
|
|
10
|
+
}
|
|
11
11
|
|
|
12
12
|
public createSql(builder: MigrationBuilder): void {
|
|
13
13
|
const entity = this.schema.model.entities[this.data.entityName]
|
|
@@ -15,13 +15,13 @@ export const UpdateColumnNameModification: ModificationHandlerStatic<UpdateColum
|
|
|
15
15
|
return
|
|
16
16
|
}
|
|
17
17
|
acceptFieldVisitor(this.schema.model, entity, this.data.fieldName, {
|
|
18
|
-
visitColumn: (entity, column) => {
|
|
18
|
+
visitColumn: ({ entity, column }) => {
|
|
19
19
|
builder.renameColumn(entity.tableName, column.columnName, this.data.columnName)
|
|
20
20
|
},
|
|
21
|
-
visitManyHasOne: (entity, relation) => {
|
|
21
|
+
visitManyHasOne: ({ entity, relation }) => {
|
|
22
22
|
builder.renameColumn(entity.tableName, relation.joiningColumn.columnName, this.data.columnName)
|
|
23
23
|
},
|
|
24
|
-
visitOneHasOneOwning: (entity, relation) =>
|
|
24
|
+
visitOneHasOneOwning: ({ entity, relation }) => {
|
|
25
25
|
builder.renameColumn(entity.tableName, relation.joiningColumn.columnName, this.data.columnName)
|
|
26
26
|
},
|
|
27
27
|
visitManyHasManyInverse: () => {
|
|
@@ -43,44 +43,47 @@ export const UpdateColumnNameModification: ModificationHandlerStatic<UpdateColum
|
|
|
43
43
|
return updateModel(
|
|
44
44
|
updateEntity(
|
|
45
45
|
this.data.entityName,
|
|
46
|
-
updateField(this.data.fieldName, ({ field, entity }) =>
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
},
|
|
53
|
-
visitManyHasOne: (entity, relation) => {
|
|
54
|
-
return {
|
|
55
|
-
...relation,
|
|
56
|
-
joiningColumn: {
|
|
57
|
-
...relation.joiningColumn,
|
|
58
|
-
columnName: this.data.columnName,
|
|
59
|
-
},
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
visitOneHasOneOwning: (entity, relation) => {
|
|
63
|
-
return {
|
|
64
|
-
...relation,
|
|
65
|
-
joiningColumn: {
|
|
66
|
-
...relation.joiningColumn,
|
|
46
|
+
updateField(this.data.fieldName, ({ field, entity }) =>
|
|
47
|
+
acceptFieldVisitor<Model.AnyField>(this.schema.model, entity, field, {
|
|
48
|
+
visitColumn: ({ column }) => {
|
|
49
|
+
return {
|
|
50
|
+
...column,
|
|
67
51
|
columnName: this.data.columnName,
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
visitManyHasOne: ({ entity, relation }) => {
|
|
55
|
+
return {
|
|
56
|
+
...relation,
|
|
57
|
+
joiningColumn: {
|
|
58
|
+
...relation.joiningColumn,
|
|
59
|
+
columnName: this.data.columnName,
|
|
60
|
+
},
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
visitOneHasOneOwning: ({ entity, relation }) => {
|
|
64
|
+
return {
|
|
65
|
+
...relation,
|
|
66
|
+
joiningColumn: {
|
|
67
|
+
...relation.joiningColumn,
|
|
68
|
+
columnName: this.data.columnName,
|
|
69
|
+
},
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
visitManyHasManyInverse: () => {
|
|
73
|
+
throw new Error('Cannot rename column of many-to-many relation')
|
|
74
|
+
},
|
|
75
|
+
visitManyHasManyOwning: () => {
|
|
76
|
+
throw new Error('Cannot rename column of many-to-many relation')
|
|
77
|
+
},
|
|
78
|
+
visitOneHasMany: () => {
|
|
79
|
+
throw new Error('Cannot rename column of one-to-many relation')
|
|
80
|
+
},
|
|
81
|
+
visitOneHasOneInverse: () => {
|
|
82
|
+
throw new Error('Cannot rename column of one-to-one inverse relation')
|
|
83
|
+
},
|
|
76
84
|
},
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
},
|
|
80
|
-
visitOneHasOneInverse: () => {
|
|
81
|
-
throw new Error('Cannot rename column of one-to-one inverse relation')
|
|
82
|
-
},
|
|
83
|
-
})),
|
|
85
|
+
),
|
|
86
|
+
),
|
|
84
87
|
),
|
|
85
88
|
)
|
|
86
89
|
}
|
|
@@ -88,17 +91,26 @@ export const UpdateColumnNameModification: ModificationHandlerStatic<UpdateColum
|
|
|
88
91
|
describe() {
|
|
89
92
|
return { message: `Change column name of field ${this.data.entityName}.${this.data.fieldName}` }
|
|
90
93
|
}
|
|
94
|
+
}
|
|
91
95
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
96
|
+
export interface UpdateColumnNameModificationData {
|
|
97
|
+
entityName: string
|
|
98
|
+
fieldName: string
|
|
99
|
+
columnName: string
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export const updateColumnNameModification = createModificationType({
|
|
103
|
+
id: 'updateColumnName',
|
|
104
|
+
handler: UpdateColumnNameModificationHandler,
|
|
105
|
+
})
|
|
95
106
|
|
|
96
|
-
|
|
107
|
+
export class UpdateColumnNameDiffer implements Differ {
|
|
108
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
97
109
|
return updateColumns(originalSchema, updatedSchema, ({ originalColumn, updatedColumn, updatedEntity }) => {
|
|
98
110
|
if (originalColumn.columnName === updatedColumn.columnName) {
|
|
99
111
|
return undefined
|
|
100
112
|
}
|
|
101
|
-
return
|
|
113
|
+
return updateColumnNameModification.createModification({
|
|
102
114
|
entityName: updatedEntity.name,
|
|
103
115
|
fieldName: updatedColumn.name,
|
|
104
116
|
columnName: updatedColumn.columnName,
|
|
@@ -106,8 +118,3 @@ export const UpdateColumnNameModification: ModificationHandlerStatic<UpdateColum
|
|
|
106
118
|
})
|
|
107
119
|
}
|
|
108
120
|
}
|
|
109
|
-
export interface UpdateColumnNameModificationData {
|
|
110
|
-
entityName: string
|
|
111
|
-
fieldName: string
|
|
112
|
-
columnName: string
|
|
113
|
-
}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
2
|
import { Model, Schema } from '@contember/schema'
|
|
3
3
|
import { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'
|
|
4
|
-
import {
|
|
4
|
+
import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
|
|
5
5
|
import { acceptFieldVisitor } from '@contember/schema-utils'
|
|
6
6
|
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
constructor(private readonly data: CreateUniqueConstraintModificationData, private readonly schema: Schema) {}
|
|
7
|
+
export class CreateUniqueConstraintModificationHandler implements ModificationHandler<CreateUniqueConstraintModificationData> {
|
|
8
|
+
constructor(private readonly data: CreateUniqueConstraintModificationData, private readonly schema: Schema) {
|
|
9
|
+
}
|
|
11
10
|
|
|
12
11
|
public createSql(builder: MigrationBuilder): void {
|
|
13
12
|
const entity = this.schema.model.entities[this.data.entityName]
|
|
@@ -17,10 +16,10 @@ export const CreateUniqueConstraintModification: ModificationHandlerStatic<Creat
|
|
|
17
16
|
const fields = this.data.unique.fields
|
|
18
17
|
const columns = fields.map(fieldName => {
|
|
19
18
|
return acceptFieldVisitor(this.schema.model, entity, fieldName, {
|
|
20
|
-
visitColumn: ({
|
|
19
|
+
visitColumn: ({ column }) => {
|
|
21
20
|
return column.columnName
|
|
22
21
|
},
|
|
23
|
-
visitManyHasOne: ({
|
|
22
|
+
visitManyHasOne: ({ relation }) => {
|
|
24
23
|
return relation.joiningColumn.columnName
|
|
25
24
|
},
|
|
26
25
|
visitOneHasMany: () => {
|
|
@@ -66,20 +65,27 @@ export const CreateUniqueConstraintModification: ModificationHandlerStatic<Creat
|
|
|
66
65
|
}
|
|
67
66
|
}
|
|
68
67
|
|
|
69
|
-
|
|
70
|
-
return { modification: this.id, ...data }
|
|
71
|
-
}
|
|
68
|
+
}
|
|
72
69
|
|
|
73
|
-
|
|
70
|
+
export interface CreateUniqueConstraintModificationData {
|
|
71
|
+
entityName: string
|
|
72
|
+
unique: Model.UniqueConstraint
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export const createUniqueConstraintModification = createModificationType({
|
|
76
|
+
id: 'createUniqueConstraint',
|
|
77
|
+
handler: CreateUniqueConstraintModificationHandler,
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
export class CreateUniqueConstraintDiffer implements Differ {
|
|
81
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
74
82
|
return Object.values(updatedSchema.model.entities).flatMap(entity =>
|
|
75
83
|
Object.values(entity.unique)
|
|
76
84
|
.filter(it => !originalSchema.model.entities[entity.name].unique[it.name])
|
|
77
|
-
.map(unique =>
|
|
85
|
+
.map(unique => createUniqueConstraintModification.createModification({
|
|
86
|
+
entityName: entity.name,
|
|
87
|
+
unique,
|
|
88
|
+
})),
|
|
78
89
|
)
|
|
79
90
|
}
|
|
80
91
|
}
|
|
81
|
-
|
|
82
|
-
export interface CreateUniqueConstraintModificationData {
|
|
83
|
-
entityName: string
|
|
84
|
-
unique: Model.UniqueConstraint
|
|
85
|
-
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
2
|
import { Schema } from '@contember/schema'
|
|
3
3
|
import { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'
|
|
4
|
-
import {
|
|
4
|
+
import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
|
|
5
5
|
import deepEqual from 'fast-deep-equal'
|
|
6
6
|
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
export class RemoveUniqueConstraintModificationHandler implements ModificationHandler<RemoveUniqueConstraintModificationData> {
|
|
8
|
+
constructor(private readonly data: RemoveUniqueConstraintModificationData, private readonly schema: Schema) {
|
|
9
|
+
}
|
|
10
10
|
|
|
11
11
|
public createSql(builder: MigrationBuilder): void {
|
|
12
12
|
const entity = this.schema.model.entities[this.data.entityName]
|
|
@@ -32,12 +32,21 @@ export const RemoveUniqueConstraintModification: ModificationHandlerStatic<Remov
|
|
|
32
32
|
const fields = this.schema.model.entities[this.data.entityName].unique[this.data.constraintName].fields
|
|
33
33
|
return { message: `Remove unique constraint (${fields.join(', ')}) on entity ${this.data.entityName}` }
|
|
34
34
|
}
|
|
35
|
+
}
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
export interface RemoveUniqueConstraintModificationData {
|
|
38
|
+
entityName: string
|
|
39
|
+
constraintName: string
|
|
40
|
+
}
|
|
39
41
|
|
|
40
|
-
|
|
42
|
+
export const removeUniqueConstraintModification = createModificationType({
|
|
43
|
+
id: 'removeUniqueConstraint',
|
|
44
|
+
handler: RemoveUniqueConstraintModificationHandler,
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
export class RemoveUniqueConstraintDiffer implements Differ {
|
|
49
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
41
50
|
return Object.values(originalSchema.model.entities).flatMap(entity =>
|
|
42
51
|
Object.values(entity.unique)
|
|
43
52
|
.filter(
|
|
@@ -47,7 +56,7 @@ export const RemoveUniqueConstraintModification: ModificationHandlerStatic<Remov
|
|
|
47
56
|
!deepEqual(it.fields, updatedSchema.model.entities[entity.name].unique[it.name].fields)),
|
|
48
57
|
)
|
|
49
58
|
.map(unique =>
|
|
50
|
-
|
|
59
|
+
removeUniqueConstraintModification.createModification({
|
|
51
60
|
entityName: entity.name,
|
|
52
61
|
constraintName: unique.name,
|
|
53
62
|
}),
|
|
@@ -55,8 +64,3 @@ export const RemoveUniqueConstraintModification: ModificationHandlerStatic<Remov
|
|
|
55
64
|
)
|
|
56
65
|
}
|
|
57
66
|
}
|
|
58
|
-
|
|
59
|
-
export interface RemoveUniqueConstraintModificationData {
|
|
60
|
-
entityName: string
|
|
61
|
-
constraintName: string
|
|
62
|
-
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Differ } from '../ModificationHandler'
|
|
2
2
|
import { Schema } from '@contember/schema'
|
|
3
|
-
import {
|
|
3
|
+
import { removeEntityModification } from '../entities'
|
|
4
4
|
|
|
5
5
|
export class ChangeViewNonViewDiffer implements Differ {
|
|
6
6
|
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
@@ -12,6 +12,6 @@ export class ChangeViewNonViewDiffer implements Differ {
|
|
|
12
12
|
}
|
|
13
13
|
return !!origEntity.view !== !!it.view
|
|
14
14
|
})
|
|
15
|
-
.map(it =>
|
|
15
|
+
.map(it => removeEntityModification.createModification({ entityName: it.name }))
|
|
16
16
|
}
|
|
17
17
|
}
|
|
@@ -2,7 +2,7 @@ import { Differ } from '../ModificationHandler'
|
|
|
2
2
|
import { Model, Schema } from '@contember/schema'
|
|
3
3
|
import { updateFields } from '../utils/diffUtils'
|
|
4
4
|
import deepEqual from 'fast-deep-equal'
|
|
5
|
-
import {
|
|
5
|
+
import { removeFieldModification } from '../fields'
|
|
6
6
|
|
|
7
7
|
export class RemoveChangedFieldDiffer implements Differ {
|
|
8
8
|
constructor(
|
|
@@ -17,7 +17,7 @@ export class RemoveChangedFieldDiffer implements Differ {
|
|
|
17
17
|
}
|
|
18
18
|
if (!deepEqual({ ...updatedField, inversedBy: undefined }, { ...originalField, inversedBy: undefined })) {
|
|
19
19
|
return [
|
|
20
|
-
|
|
20
|
+
removeFieldModification.createModification({
|
|
21
21
|
entityName: updatedEntity.name,
|
|
22
22
|
fieldName: updatedField.name,
|
|
23
23
|
}),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Differ } from '../ModificationHandler'
|
|
2
2
|
import { Model, Schema } from '@contember/schema'
|
|
3
3
|
import deepEqual from 'fast-deep-equal'
|
|
4
|
-
import {
|
|
4
|
+
import { removeEntityModification } from '../entities'
|
|
5
5
|
import { getViewDirectDependants } from '../utils/viewDependencies'
|
|
6
6
|
import { Migration } from '../../Migration'
|
|
7
7
|
|
|
@@ -32,7 +32,7 @@ export class RemoveChangedViewDiffer implements Differ {
|
|
|
32
32
|
for (const dependant of dependants.get(entity.name) ?? []) {
|
|
33
33
|
removeCascade(dependant)
|
|
34
34
|
}
|
|
35
|
-
modifications.push(
|
|
35
|
+
modifications.push(removeEntityModification.createModification({ entityName: entity.name }))
|
|
36
36
|
}
|
|
37
37
|
for (const changed of changedViews) {
|
|
38
38
|
removeCascade(changed)
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
2
|
import { Model, Schema } from '@contember/schema'
|
|
3
3
|
import { SchemaUpdater, updateModel } from '../utils/schemaUpdateUtils'
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
createModificationType,
|
|
6
|
+
Differ,
|
|
7
|
+
ModificationHandler,
|
|
8
|
+
ModificationHandlerOptions,
|
|
9
|
+
} from '../ModificationHandler'
|
|
5
10
|
import { createEventTrigger, createEventTrxTrigger } from '../utils/sqlUpdateUtils'
|
|
11
|
+
import { PartialEntity } from '../../utils/PartialEntity.js'
|
|
12
|
+
import { getColumnSqlType } from '../utils/columnUtils'
|
|
6
13
|
|
|
7
|
-
export
|
|
8
|
-
static id = 'createEntity'
|
|
14
|
+
export class CreateEntityModificationHandler implements ModificationHandler<CreateEntityModificationData> {
|
|
9
15
|
constructor(
|
|
10
16
|
private readonly data: CreateEntityModificationData,
|
|
11
17
|
private readonly schema: Schema,
|
|
@@ -24,7 +30,7 @@ export const CreateEntityModification: ModificationHandlerStatic<CreateEntityMod
|
|
|
24
30
|
builder.createTable(entity.tableName, {
|
|
25
31
|
[primaryColumn.name]: {
|
|
26
32
|
primaryKey: true,
|
|
27
|
-
type: primaryColumn
|
|
33
|
+
type: getColumnSqlType(primaryColumn),
|
|
28
34
|
notNull: true,
|
|
29
35
|
sequenceGenerated: primaryColumn.sequence,
|
|
30
36
|
},
|
|
@@ -43,6 +49,7 @@ export const CreateEntityModification: ModificationHandlerStatic<CreateEntityMod
|
|
|
43
49
|
...model.entities,
|
|
44
50
|
[this.data.entity.name]: {
|
|
45
51
|
eventLog: { enabled: true },
|
|
52
|
+
indexes: {},
|
|
46
53
|
...this.data.entity,
|
|
47
54
|
},
|
|
48
55
|
},
|
|
@@ -54,16 +61,20 @@ export const CreateEntityModification: ModificationHandlerStatic<CreateEntityMod
|
|
|
54
61
|
return { message: `Add entity ${this.data.entity.name}` }
|
|
55
62
|
}
|
|
56
63
|
|
|
57
|
-
|
|
58
|
-
return { modification: this.id, ...data }
|
|
59
|
-
}
|
|
64
|
+
}
|
|
60
65
|
|
|
61
|
-
|
|
66
|
+
export const createEntityModification = createModificationType({
|
|
67
|
+
id: 'createEntity',
|
|
68
|
+
handler: CreateEntityModificationHandler,
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
export class CreateEntityDiffer implements Differ {
|
|
72
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
62
73
|
return Object.values(updatedSchema.model.entities)
|
|
63
74
|
.filter(it => !originalSchema.model.entities[it.name])
|
|
64
75
|
.filter(it => !it.view)
|
|
65
76
|
.map(entity =>
|
|
66
|
-
|
|
77
|
+
createEntityModification.createModification({
|
|
67
78
|
entity: {
|
|
68
79
|
...entity,
|
|
69
80
|
fields: {
|
|
@@ -76,8 +87,6 @@ export const CreateEntityModification: ModificationHandlerStatic<CreateEntityMod
|
|
|
76
87
|
}
|
|
77
88
|
}
|
|
78
89
|
|
|
79
|
-
type SomePartial<E, K extends keyof E> = Omit<E, K> & Partial<Pick<E, K>>
|
|
80
|
-
|
|
81
90
|
export interface CreateEntityModificationData {
|
|
82
|
-
entity:
|
|
91
|
+
entity: PartialEntity
|
|
83
92
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
2
|
import { Model, Schema } from '@contember/schema'
|
|
3
3
|
import { SchemaUpdater, updateModel } from '../utils/schemaUpdateUtils'
|
|
4
|
-
import {
|
|
4
|
+
import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
|
|
5
5
|
import { Migration } from '../../Migration'
|
|
6
|
+
import { PartialEntity } from '../../utils/PartialEntity.js'
|
|
6
7
|
|
|
7
|
-
export
|
|
8
|
-
static id = 'createView'
|
|
8
|
+
export class CreateViewModificationHandler implements ModificationHandler<CreateViewModificationData> {
|
|
9
9
|
constructor(private readonly data: CreateViewModificationData, private readonly schema: Schema) {}
|
|
10
10
|
|
|
11
11
|
public createSql(builder: MigrationBuilder): void {
|
|
@@ -22,6 +22,7 @@ export const CreateViewModification: ModificationHandlerStatic<CreateViewModific
|
|
|
22
22
|
entities: {
|
|
23
23
|
...model.entities,
|
|
24
24
|
[this.data.entity.name]: {
|
|
25
|
+
indexes: {},
|
|
25
26
|
eventLog: { enabled: true }, // not relevant here...
|
|
26
27
|
...this.data.entity,
|
|
27
28
|
},
|
|
@@ -33,12 +34,15 @@ export const CreateViewModification: ModificationHandlerStatic<CreateViewModific
|
|
|
33
34
|
describe() {
|
|
34
35
|
return { message: `Add view ${this.data.entity.name}` }
|
|
35
36
|
}
|
|
37
|
+
}
|
|
36
38
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
export const createViewModification = createModificationType({
|
|
40
|
+
id: 'createView',
|
|
41
|
+
handler: CreateViewModificationHandler,
|
|
42
|
+
})
|
|
40
43
|
|
|
41
|
-
|
|
44
|
+
export class CreateViewDiffer implements Differ {
|
|
45
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
42
46
|
const newViews = Object.values(updatedSchema.model.entities)
|
|
43
47
|
.filter(it => !originalSchema.model.entities[it.name])
|
|
44
48
|
.filter(it => !!it.view)
|
|
@@ -52,7 +56,7 @@ export const CreateViewModification: ModificationHandlerStatic<CreateViewModific
|
|
|
52
56
|
for (const dependency of entity.view?.dependencies ?? []) {
|
|
53
57
|
cascadeCreate(updatedSchema.model.entities[dependency])
|
|
54
58
|
}
|
|
55
|
-
modifications.push(
|
|
59
|
+
modifications.push(createViewModification.createModification({
|
|
56
60
|
entity: entity,
|
|
57
61
|
}))
|
|
58
62
|
}
|
|
@@ -63,8 +67,6 @@ export const CreateViewModification: ModificationHandlerStatic<CreateViewModific
|
|
|
63
67
|
}
|
|
64
68
|
}
|
|
65
69
|
|
|
66
|
-
type SomePartial<E, K extends keyof E> = Omit<E, K> & Partial<Pick<E, K>>
|
|
67
|
-
|
|
68
70
|
export interface CreateViewModificationData {
|
|
69
|
-
entity:
|
|
71
|
+
entity: PartialEntity
|
|
70
72
|
}
|