@contember/schema-migrations 1.2.0-alpha.8 → 1.2.0-beta.1
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/Migration.d.ts +2 -0
- package/dist/src/Migration.d.ts.map +1 -1
- package/dist/src/Migration.js +2 -2
- package/dist/src/Migration.js.map +1 -1
- package/dist/src/MigrationCreator.d.ts +3 -1
- package/dist/src/MigrationCreator.d.ts.map +1 -1
- package/dist/src/MigrationCreator.js +2 -2
- package/dist/src/MigrationCreator.js.map +1 -1
- 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/MigrationFilesManager.d.ts.map +1 -1
- package/dist/src/MigrationFilesManager.js +10 -19
- package/dist/src/MigrationFilesManager.js.map +1 -1
- package/dist/src/MigrationsResolver.d.ts.map +1 -1
- package/dist/src/MigrationsResolver.js +1 -0
- package/dist/src/MigrationsResolver.js.map +1 -1
- package/dist/src/SchemaDiffer.d.ts +6 -1
- package/dist/src/SchemaDiffer.d.ts.map +1 -1
- package/dist/src/SchemaDiffer.js +46 -54
- package/dist/src/SchemaDiffer.js.map +1 -1
- package/dist/src/SchemaMigrator.d.ts +3 -2
- package/dist/src/SchemaMigrator.d.ts.map +1 -1
- package/dist/src/SchemaMigrator.js.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 +16 -8
- 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 +8 -7
- package/dist/src/modifications/ModificationHandlerFactory.d.ts.map +1 -1
- package/dist/src/modifications/ModificationHandlerFactory.js +43 -39
- 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 +21 -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 +20 -4
- package/dist/src/modifications/columns/UpdateColumnDefinitionModification.d.ts.map +1 -1
- package/dist/src/modifications/columns/UpdateColumnDefinitionModification.js +78 -71
- package/dist/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
- package/dist/src/modifications/columns/UpdateColumnNameModification.d.ts +18 -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.d.ts +1 -3
- package/dist/src/modifications/differs/RemoveChangedFieldDiffer.d.ts.map +1 -1
- package/dist/src/modifications/differs/RemoveChangedFieldDiffer.js +1 -1
- package/dist/src/modifications/differs/RemoveChangedViewDiffer.d.ts +1 -2
- package/dist/src/modifications/differs/RemoveChangedViewDiffer.d.ts.map +1 -1
- package/dist/src/modifications/differs/RemoveChangedViewDiffer.js +7 -20
- package/dist/src/modifications/differs/RemoveChangedViewDiffer.js.map +1 -1
- package/dist/src/modifications/entities/CreateEntityModification.d.ts +19 -2
- package/dist/src/modifications/entities/CreateEntityModification.d.ts.map +1 -1
- package/dist/src/modifications/entities/CreateEntityModification.js +66 -63
- package/dist/src/modifications/entities/CreateEntityModification.js.map +1 -1
- package/dist/src/modifications/entities/CreateViewModification.d.ts +21 -2
- package/dist/src/modifications/entities/CreateViewModification.d.ts.map +1 -1
- package/dist/src/modifications/entities/CreateViewModification.js +59 -56
- package/dist/src/modifications/entities/CreateViewModification.js.map +1 -1
- package/dist/src/modifications/entities/RemoveEntityModification.d.ts +22 -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 +18 -3
- package/dist/src/modifications/indexes/CreateIndexModification.d.ts.map +1 -1
- package/dist/src/modifications/indexes/CreateIndexModification.js +68 -65
- package/dist/src/modifications/indexes/CreateIndexModification.js.map +1 -1
- package/dist/src/modifications/indexes/RemoveIndexModification.d.ts +18 -2
- package/dist/src/modifications/indexes/RemoveIndexModification.d.ts.map +1 -1
- package/dist/src/modifications/indexes/RemoveIndexModification.js +47 -44
- package/dist/src/modifications/indexes/RemoveIndexModification.js.map +1 -1
- package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts +22 -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 +22 -2
- package/dist/src/modifications/relations/ConvertOneToManyRelationModification.d.ts.map +1 -1
- package/dist/src/modifications/relations/ConvertOneToManyRelationModification.js +81 -70
- package/dist/src/modifications/relations/ConvertOneToManyRelationModification.js.map +1 -1
- package/dist/src/modifications/relations/CreateRelationInverseSideModification.d.ts +18 -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 +24 -3
- package/dist/src/modifications/relations/CreateRelationModification.d.ts.map +1 -1
- package/dist/src/modifications/relations/CreateRelationModification.js +99 -85
- package/dist/src/modifications/relations/CreateRelationModification.js.map +1 -1
- package/dist/src/modifications/relations/DisableOrphanRemovalModification.d.ts +18 -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 +18 -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 +19 -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 +18 -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 +25 -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 +18 -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 +18 -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/settings/UpdateSettingsModification.d.ts +28 -0
- package/dist/src/modifications/settings/UpdateSettingsModification.d.ts.map +1 -0
- package/dist/src/modifications/settings/UpdateSettingsModification.js +64 -0
- package/dist/src/modifications/settings/UpdateSettingsModification.js.map +1 -0
- package/dist/src/modifications/settings/index.d.ts +2 -0
- package/dist/src/modifications/settings/index.d.ts.map +1 -0
- package/dist/src/modifications/settings/index.js +18 -0
- package/dist/src/modifications/settings/index.js.map +1 -0
- 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/utils/createJunctionTable.d.ts +2 -1
- package/dist/src/modifications/utils/createJunctionTable.d.ts.map +1 -1
- package/dist/src/modifications/utils/createJunctionTable.js +7 -5
- package/dist/src/modifications/utils/createJunctionTable.js.map +1 -1
- package/dist/src/modifications/utils/diffUtils.d.ts +14 -12
- package/dist/src/modifications/utils/diffUtils.d.ts.map +1 -1
- package/dist/src/modifications/utils/diffUtils.js.map +1 -1
- package/dist/src/modifications/utils/schemaMeta.d.ts +8 -0
- package/dist/src/modifications/utils/schemaMeta.d.ts.map +1 -0
- package/dist/src/modifications/utils/schemaMeta.js +13 -0
- package/dist/src/modifications/utils/schemaMeta.js.map +1 -0
- package/dist/src/modifications/utils/schemaUpdateUtils.d.ts +4 -2
- package/dist/src/modifications/utils/schemaUpdateUtils.d.ts.map +1 -1
- package/dist/src/modifications/utils/schemaUpdateUtils.js +24 -2
- package/dist/src/modifications/utils/schemaUpdateUtils.js.map +1 -1
- package/dist/src/modifications/utils/viewDependencies.d.ts +4 -2
- package/dist/src/modifications/utils/viewDependencies.d.ts.map +1 -1
- package/dist/src/modifications/utils/viewDependencies.js +29 -6
- package/dist/src/modifications/utils/viewDependencies.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/tests/cases/integration/convertOneHasManyToManyHasManyRelation.test.js +3 -2
- package/dist/tests/cases/integration/convertOneHasManyToManyHasManyRelation.test.js.map +1 -1
- 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/createManyHasMany.test.js +3 -2
- package/dist/tests/cases/integration/createManyHasMany.test.js.map +1 -1
- package/dist/tests/cases/integration/createView.test.js +80 -0
- package/dist/tests/cases/integration/createView.test.js.map +1 -1
- package/dist/tests/cases/integration/removeField.test.js +72 -0
- package/dist/tests/cases/integration/removeField.test.js.map +1 -1
- package/dist/tests/cases/integration/takenIndexName.test.d.ts +2 -0
- package/dist/tests/cases/integration/takenIndexName.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/takenIndexName.test.js +307 -0
- package/dist/tests/cases/integration/takenIndexName.test.js.map +1 -0
- package/dist/tests/cases/integration/updateColumnDefinition.test.js +160 -0
- package/dist/tests/cases/integration/updateColumnDefinition.test.js.map +1 -1
- package/dist/tests/scripts/checkCreateConsistentMigrations.js +5 -4
- package/dist/tests/scripts/checkCreateConsistentMigrations.js.map +1 -1
- package/dist/tests/src/tests.d.ts.map +1 -1
- package/dist/tests/src/tests.js +15 -5
- package/dist/tests/src/tests.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/src/Migration.ts +3 -1
- package/src/MigrationCreator.ts +2 -1
- package/src/MigrationDescriber.ts +8 -8
- package/src/MigrationFilesManager.ts +10 -20
- package/src/MigrationsResolver.ts +1 -0
- package/src/SchemaDiffer.ts +82 -85
- package/src/SchemaMigrator.ts +3 -2
- package/src/index.ts +1 -5
- package/src/modifications/ModificationHandler.ts +22 -9
- package/src/modifications/ModificationHandlerFactory.ts +69 -65
- 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 +58 -47
- 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 +9 -22
- package/src/modifications/entities/CreateEntityModification.ts +18 -9
- package/src/modifications/entities/CreateViewModification.ts +10 -8
- package/src/modifications/entities/RemoveEntityModification.ts +24 -16
- package/src/modifications/entities/ToggleEventLogModification.ts +20 -13
- package/src/modifications/entities/UpdateEntityNameModification.ts +11 -10
- 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 +18 -18
- package/src/modifications/index.ts +13 -0
- package/src/modifications/indexes/CreateIndexModification.ts +13 -12
- package/src/modifications/indexes/RemoveIndexModification.ts +12 -8
- package/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.ts +48 -29
- package/src/modifications/relations/ConvertOneToManyRelationModification.ts +50 -27
- package/src/modifications/relations/CreateRelationInverseSideModification.ts +15 -13
- package/src/modifications/relations/CreateRelationModification.ts +65 -35
- 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/settings/UpdateSettingsModification.ts +87 -0
- package/src/modifications/settings/index.ts +1 -0
- package/src/modifications/utils/columnUtils.ts +5 -0
- package/src/modifications/utils/createJunctionTable.ts +7 -5
- package/src/modifications/utils/diffUtils.ts +12 -12
- package/src/modifications/utils/schemaMeta.ts +18 -0
- package/src/modifications/utils/schemaUpdateUtils.ts +22 -2
- package/src/modifications/utils/viewDependencies.ts +28 -5
- package/src/modifications/validation/PatchValidationSchemaModification.ts +7 -7
- package/src/modifications/validation/UpdateValidationSchemaModification.ts +17 -14
- package/src/tsconfig.json +2 -2
- package/tests/cases/integration/convertOneHasManyToManyHasManyRelation.test.ts +3 -2
- package/tests/cases/integration/createColumn.test.ts +33 -0
- package/tests/cases/integration/createManyHasMany.test.ts +3 -2
- package/tests/cases/integration/createView.test.ts +70 -0
- package/tests/cases/integration/removeField.test.ts +58 -0
- package/tests/cases/integration/takenIndexName.test.ts +314 -0
- package/tests/cases/integration/updateColumnDefinition.test.ts +138 -1
- package/tests/scripts/checkCreateConsistentMigrations.ts +3 -2
- package/tests/src/tests.ts +21 -11
- 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,38 +1,28 @@
|
|
|
1
1
|
import { MigrationVersionHelper } from './MigrationVersionHelper'
|
|
2
|
-
import * as fs from 'fs'
|
|
3
|
-
import
|
|
4
|
-
import * as path from 'path'
|
|
5
|
-
|
|
6
|
-
const readFile = promisify(fs.readFile)
|
|
7
|
-
const fsWrite = promisify(fs.writeFile)
|
|
8
|
-
const fsRemove = promisify(fs.unlink)
|
|
9
|
-
const fsRealpath = promisify(fs.realpath)
|
|
10
|
-
const mkdir = promisify(fs.mkdir)
|
|
11
|
-
const lstatFile = promisify(fs.lstat)
|
|
12
|
-
const readDir = promisify(fs.readdir)
|
|
13
|
-
const mvFile = promisify(fs.rename)
|
|
2
|
+
import * as fs from 'node:fs/promises'
|
|
3
|
+
import * as path from 'node:path'
|
|
14
4
|
|
|
15
5
|
class MigrationFilesManager {
|
|
16
6
|
constructor(public readonly directory: string) {}
|
|
17
7
|
|
|
18
8
|
public async createFile(content: string, name: string): Promise<string> {
|
|
19
9
|
const path = this.formatPath(name)
|
|
20
|
-
await
|
|
21
|
-
return await
|
|
10
|
+
await fs.writeFile(path, content, { encoding: 'utf8' })
|
|
11
|
+
return await fs.realpath(path)
|
|
22
12
|
}
|
|
23
13
|
|
|
24
14
|
public async removeFile(name: string) {
|
|
25
15
|
const path = this.formatPath(name)
|
|
26
|
-
await
|
|
16
|
+
await fs.unlink(path)
|
|
27
17
|
}
|
|
28
18
|
|
|
29
19
|
public async moveFile(oldName: string, newName: string) {
|
|
30
|
-
await
|
|
20
|
+
await fs.rename(this.formatPath(oldName), this.formatPath(newName))
|
|
31
21
|
}
|
|
32
22
|
|
|
33
23
|
public async createDirIfNotExist(): Promise<void> {
|
|
34
24
|
try {
|
|
35
|
-
await mkdir(this.directory)
|
|
25
|
+
await fs.mkdir(this.directory)
|
|
36
26
|
} catch (e) {
|
|
37
27
|
if (!(e instanceof Error) || !('code' in e) || (e as any).code !== 'EEXIST') {
|
|
38
28
|
throw e
|
|
@@ -47,7 +37,7 @@ class MigrationFilesManager {
|
|
|
47
37
|
files
|
|
48
38
|
.filter(file => file.endsWith(`.json`))
|
|
49
39
|
.filter(async file => {
|
|
50
|
-
return (await
|
|
40
|
+
return (await fs.lstat(`${this.directory}/${file}`)).isFile()
|
|
51
41
|
}),
|
|
52
42
|
)
|
|
53
43
|
return filteredFiles.sort()
|
|
@@ -55,7 +45,7 @@ class MigrationFilesManager {
|
|
|
55
45
|
|
|
56
46
|
private async tryReadDir(): Promise<string[]> {
|
|
57
47
|
try {
|
|
58
|
-
return await
|
|
48
|
+
return await fs.readdir(this.directory)
|
|
59
49
|
} catch (e) {
|
|
60
50
|
if (e instanceof Error && 'code' in e && (e as any).code === 'ENOENT') {
|
|
61
51
|
return []
|
|
@@ -72,7 +62,7 @@ class MigrationFilesManager {
|
|
|
72
62
|
const filesWithContent = files.map(async filename => ({
|
|
73
63
|
filename: filename,
|
|
74
64
|
path: `${this.directory}/${filename}`,
|
|
75
|
-
content: await readFile(`${this.directory}/${filename}`, { encoding: 'utf8' }),
|
|
65
|
+
content: await fs.readFile(`${this.directory}/${filename}`, { encoding: 'utf8' }),
|
|
76
66
|
}))
|
|
77
67
|
|
|
78
68
|
return await Promise.all(filesWithContent)
|
|
@@ -18,6 +18,7 @@ export class MigrationsResolver {
|
|
|
18
18
|
name: MigrationVersionHelper.extractName(filename),
|
|
19
19
|
formatVersion: parsed.formatVersion || VERSION_INITIAL,
|
|
20
20
|
modifications: parsed.modifications,
|
|
21
|
+
...(parsed.skippedErrors ? { skippedErrors: parsed.skippedErrors } : {}),
|
|
21
22
|
}
|
|
22
23
|
})
|
|
23
24
|
}
|
package/src/SchemaDiffer.ts
CHANGED
|
@@ -10,114 +10,111 @@ import {
|
|
|
10
10
|
import { SchemaMigrator } from './SchemaMigrator'
|
|
11
11
|
import { Migration } from './Migration'
|
|
12
12
|
import { ImplementationException } from './exceptions'
|
|
13
|
-
import { VERSION_LATEST } from './modifications/ModificationVersions'
|
|
14
|
-
import { CreateUniqueConstraintModification, RemoveUniqueConstraintModification } from './modifications/constraints'
|
|
15
|
-
import { RemoveFieldModification } from './modifications/fields'
|
|
16
13
|
import {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
14
|
+
ConvertOneHasManyToManyHasManyRelationDiffer,
|
|
15
|
+
ConvertOneToManyRelationDiffer,
|
|
16
|
+
CreateColumnDiffer,
|
|
17
|
+
CreateEntityDiffer,
|
|
18
|
+
CreateEnumDiffer,
|
|
19
|
+
CreateRelationDiffer,
|
|
20
|
+
CreateRelationInverseSideDiffer,
|
|
21
|
+
CreateUniqueConstraintDiffer,
|
|
22
|
+
CreateViewDiffer,
|
|
23
|
+
Differ,
|
|
24
|
+
DisableOrphanRemovalDiffer,
|
|
25
|
+
EnableOrphanRemovalDiffer,
|
|
26
|
+
MakeRelationNotNullDiffer,
|
|
27
|
+
MakeRelationNullableDiffer,
|
|
28
|
+
RemoveEntityDiffer,
|
|
29
|
+
RemoveEnumDiffer,
|
|
30
|
+
RemoveFieldDiffer,
|
|
31
|
+
RemoveUniqueConstraintDiffer,
|
|
32
|
+
ToggleEventLogDiffer,
|
|
33
|
+
ToggleJunctionEventLogDiffer,
|
|
34
|
+
UpdateAclSchemaDiffer,
|
|
35
|
+
UpdateColumnDefinitionDiffer,
|
|
36
|
+
UpdateColumnNameDiffer,
|
|
37
|
+
UpdateEntityTableNameDiffer,
|
|
38
|
+
UpdateEnumDiffer,
|
|
39
|
+
UpdateRelationOnDeleteDiffer,
|
|
40
|
+
UpdateRelationOrderByDiffer,
|
|
41
|
+
UpdateValidationSchemaDiffer,
|
|
42
|
+
VERSION_LATEST,
|
|
43
|
+
} from './modifications'
|
|
46
44
|
import { ChangeViewNonViewDiffer, RemoveChangedFieldDiffer, RemoveChangedViewDiffer } from './modifications/differs'
|
|
47
|
-
import {
|
|
45
|
+
import { CreateIndexDiffer, RemoveIndexDiffer } from './modifications/indexes'
|
|
46
|
+
import { SchemaWithMeta } from './modifications/utils/schemaMeta'
|
|
47
|
+
import { UpdateSettingsDiffer } from './modifications/settings'
|
|
48
|
+
|
|
49
|
+
type DiffOptions = { skipRecreateValidation?: boolean; skipInitialSchemaValidation?: boolean }
|
|
48
50
|
|
|
49
51
|
export class SchemaDiffer {
|
|
50
52
|
constructor(private readonly schemaMigrator: SchemaMigrator) {}
|
|
51
53
|
|
|
52
|
-
diffSchemas(originalSchema: Schema, updatedSchema: Schema,
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
diffSchemas(originalSchema: Schema, updatedSchema: Schema, {
|
|
55
|
+
skipInitialSchemaValidation = false,
|
|
56
|
+
skipRecreateValidation = false,
|
|
57
|
+
}: DiffOptions = {}): Migration.Modification[] {
|
|
58
|
+
if (!skipInitialSchemaValidation) {
|
|
59
|
+
const originalErrors = SchemaValidator.validate(originalSchema)
|
|
60
|
+
if (originalErrors.length > 0) {
|
|
61
|
+
throw new InvalidSchemaException('original schema is not valid', originalErrors)
|
|
62
|
+
}
|
|
56
63
|
}
|
|
57
64
|
const updatedErrors = SchemaValidator.validate(updatedSchema)
|
|
58
65
|
if (updatedErrors.length > 0) {
|
|
59
66
|
throw new InvalidSchemaException('updated schema is not valid', updatedErrors)
|
|
60
67
|
}
|
|
61
68
|
|
|
62
|
-
const differs:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
new ChangeViewNonViewDiffer()
|
|
69
|
-
new RemoveChangedViewDiffer()
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
UpdateEnumModification.createDiff,
|
|
86
|
-
|
|
69
|
+
const differs: Differ[] = [
|
|
70
|
+
new UpdateSettingsDiffer(),
|
|
71
|
+
new ConvertOneToManyRelationDiffer(),
|
|
72
|
+
new ConvertOneHasManyToManyHasManyRelationDiffer(),
|
|
73
|
+
new RemoveUniqueConstraintDiffer(),
|
|
74
|
+
new RemoveIndexDiffer(),
|
|
75
|
+
new ChangeViewNonViewDiffer(),
|
|
76
|
+
new RemoveChangedViewDiffer(),
|
|
77
|
+
new RemoveEntityDiffer(),
|
|
78
|
+
new RemoveFieldDiffer(),
|
|
79
|
+
new CreateEnumDiffer(),
|
|
80
|
+
new UpdateEntityTableNameDiffer(),
|
|
81
|
+
new ToggleEventLogDiffer(),
|
|
82
|
+
new ToggleJunctionEventLogDiffer(),
|
|
83
|
+
new UpdateColumnDefinitionDiffer(),
|
|
84
|
+
new UpdateColumnNameDiffer(),
|
|
85
|
+
new UpdateRelationOnDeleteDiffer(),
|
|
86
|
+
new MakeRelationNotNullDiffer(),
|
|
87
|
+
new MakeRelationNullableDiffer(),
|
|
88
|
+
new EnableOrphanRemovalDiffer(),
|
|
89
|
+
new DisableOrphanRemovalDiffer(),
|
|
90
|
+
new UpdateRelationOrderByDiffer(),
|
|
91
|
+
new UpdateEnumDiffer(),
|
|
87
92
|
new RemoveChangedFieldDiffer(it => !isRelation(it) || isOwningRelation(it)),
|
|
88
93
|
new RemoveChangedFieldDiffer(it => isRelation(it) && isInverseRelation(it)),
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
UpdateAclSchemaModification.createDiff,
|
|
102
|
-
PatchAclSchemaModification.createDiff,
|
|
103
|
-
|
|
104
|
-
UpdateValidationSchemaModification.createDiff,
|
|
105
|
-
PatchValidationSchemaModification.createDiff,
|
|
106
|
-
].filter(isDefined)
|
|
94
|
+
new CreateEntityDiffer(),
|
|
95
|
+
new CreateColumnDiffer(),
|
|
96
|
+
new CreateRelationDiffer(),
|
|
97
|
+
new CreateViewDiffer(),
|
|
98
|
+
new CreateRelationInverseSideDiffer(),
|
|
99
|
+
new CreateUniqueConstraintDiffer(),
|
|
100
|
+
new CreateIndexDiffer(),
|
|
101
|
+
new RemoveEnumDiffer(),
|
|
102
|
+
new UpdateAclSchemaDiffer(),
|
|
103
|
+
new UpdateValidationSchemaDiffer(),
|
|
104
|
+
]
|
|
107
105
|
|
|
108
106
|
const diffs: Migration.Modification[] = []
|
|
109
107
|
let appliedDiffsSchema = originalSchema
|
|
110
108
|
for (const differ of differs) {
|
|
111
|
-
const differDiffs =
|
|
112
|
-
? differ.createDiff(appliedDiffsSchema, updatedSchema)
|
|
113
|
-
: differ(appliedDiffsSchema, updatedSchema)
|
|
109
|
+
const differDiffs = differ.createDiff(appliedDiffsSchema, updatedSchema)
|
|
114
110
|
appliedDiffsSchema = this.schemaMigrator.applyModifications(appliedDiffsSchema, differDiffs, VERSION_LATEST)
|
|
115
111
|
diffs.push(...differDiffs)
|
|
116
112
|
}
|
|
117
113
|
|
|
118
114
|
|
|
119
|
-
if (
|
|
120
|
-
const
|
|
115
|
+
if (!skipRecreateValidation) {
|
|
116
|
+
const { meta, ...appliedDiffsSchema2 } = appliedDiffsSchema as SchemaWithMeta
|
|
117
|
+
const errors = deepCompare(updatedSchema, appliedDiffsSchema2, [])
|
|
121
118
|
if (errors.length === 0) {
|
|
122
119
|
return diffs
|
|
123
120
|
}
|
package/src/SchemaMigrator.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { Schema } from '@contember/schema'
|
|
2
|
-
import ModificationHandlerFactory from './modifications
|
|
2
|
+
import { ModificationHandlerFactory } from './modifications'
|
|
3
3
|
import { Migration } from './Migration'
|
|
4
|
+
import { SchemaWithMeta } from './modifications/utils/schemaMeta'
|
|
4
5
|
|
|
5
6
|
export class SchemaMigrator {
|
|
6
7
|
constructor(private readonly modificationHandlerFactory: ModificationHandlerFactory) {}
|
|
7
8
|
|
|
8
|
-
public applyModifications(schema: Schema, diff: readonly Migration.Modification[], formatVersion: number):
|
|
9
|
+
public applyModifications(schema: Schema, diff: readonly Migration.Modification[], formatVersion: number): SchemaWithMeta {
|
|
9
10
|
for (const modification of diff) {
|
|
10
11
|
const { modification: name, ...data } = modification
|
|
11
12
|
const modificationHandler = this.modificationHandlerFactory.create(name, data, schema, {
|
package/src/index.ts
CHANGED
|
@@ -6,10 +6,6 @@ export * from './SchemaMigrator'
|
|
|
6
6
|
export * from './SchemaDiffer'
|
|
7
7
|
export * from './MigrationCreator'
|
|
8
8
|
export * from './MigrationDescriber'
|
|
9
|
-
export
|
|
10
|
-
export * from './modifications/ModificationVersions'
|
|
11
|
-
export * from './modifications/ModificationHandler'
|
|
12
|
-
export * from './modifications/utils/sqlUpdateUtils'
|
|
9
|
+
export * from './modifications'
|
|
13
10
|
export * from './MigrationFilesManager'
|
|
14
11
|
export * from './MigrationVersionHelper'
|
|
15
|
-
export { SchemaUpdateError } from './modifications/exceptions'
|
|
@@ -2,6 +2,7 @@ import { MigrationBuilder } from '@contember/database-migrations'
|
|
|
2
2
|
import { SchemaUpdater } from './utils/schemaUpdateUtils'
|
|
3
3
|
import { Schema } from '@contember/schema'
|
|
4
4
|
import { Migration } from '../Migration'
|
|
5
|
+
import { SchemaWithMeta } from './utils/schemaMeta'
|
|
5
6
|
|
|
6
7
|
export interface ModificationDescription {
|
|
7
8
|
message: string
|
|
@@ -20,21 +21,33 @@ export interface ModificationHandler<Data> {
|
|
|
20
21
|
describe(context: ModificationDescriptionContext): ModificationDescription
|
|
21
22
|
}
|
|
22
23
|
|
|
23
|
-
export type CreateDiff = (originalSchema: Schema, updatedSchema: Schema) => Migration.Modification[]
|
|
24
|
-
|
|
25
24
|
export interface ModificationHandlerOptions {
|
|
26
25
|
formatVersion: number
|
|
27
26
|
systemSchema: string
|
|
28
27
|
}
|
|
29
28
|
|
|
30
|
-
export interface
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
createDiff?: CreateDiff
|
|
29
|
+
export interface ModificationHandlerConstructor<Data> {
|
|
30
|
+
new(data: Data, schema: SchemaWithMeta, options: ModificationHandlerOptions): ModificationHandler<Data>
|
|
31
|
+
}
|
|
34
32
|
|
|
35
|
-
|
|
33
|
+
export interface Differ<Data = { [field: string]: any }> {
|
|
34
|
+
createDiff: (originalSchema: Schema, updatedSchema: Schema) => Migration.Modification<Data>[]
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
export interface ModificationType<Id extends String, Data> {
|
|
39
|
+
id: Id
|
|
40
|
+
createModification: (data: Data) => Migration.Modification<Data>
|
|
41
|
+
createHandler: (data: Data, schema: SchemaWithMeta, options: ModificationHandlerOptions) => ModificationHandler<Data>
|
|
36
42
|
}
|
|
37
43
|
|
|
38
|
-
export
|
|
39
|
-
|
|
44
|
+
export const createModificationType = <Data, Id extends string>({ handler, id }: {
|
|
45
|
+
id: Id
|
|
46
|
+
handler: ModificationHandlerConstructor<Data>
|
|
47
|
+
}): ModificationType<Id, Data> => {
|
|
48
|
+
return {
|
|
49
|
+
id,
|
|
50
|
+
createModification: data => ({ modification: id, ...data }),
|
|
51
|
+
createHandler: (data, schema, options) => new handler(data, schema, options),
|
|
52
|
+
}
|
|
40
53
|
}
|
|
@@ -1,87 +1,91 @@
|
|
|
1
1
|
import { Schema } from '@contember/schema'
|
|
2
|
-
import { ModificationHandler, ModificationHandlerOptions,
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { CreateUniqueConstraintModification, RemoveUniqueConstraintModification } from './constraints'
|
|
2
|
+
import { ModificationHandler, ModificationHandlerOptions, ModificationType } from './ModificationHandler'
|
|
3
|
+
import { patchAclSchemaModification, updateAclSchemaModification } from './acl'
|
|
4
|
+
import { createColumnModification, updateColumnDefinitionModification, updateColumnNameModification } from './columns'
|
|
5
|
+
import { createUniqueConstraintModification, removeUniqueConstraintModification } from './constraints'
|
|
7
6
|
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
UpdateEntityNameModification,
|
|
13
|
-
UpdateEntityTableNameModification,
|
|
7
|
+
createEntityModification, createViewModification,
|
|
8
|
+
removeEntityModification, toggleEventLogModification,
|
|
9
|
+
updateEntityNameModification,
|
|
10
|
+
updateEntityTableNameModification,
|
|
14
11
|
} from './entities'
|
|
15
|
-
import {
|
|
16
|
-
import { RemoveFieldModification, UpdateFieldNameModification } from './fields'
|
|
12
|
+
import { updateViewModification } from './entities/UpdateViewModification'
|
|
17
13
|
import {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
14
|
+
createEnumModification,
|
|
15
|
+
removeEnumModification,
|
|
16
|
+
updateEnumModification,
|
|
17
|
+
} from './enums'
|
|
18
|
+
import { removeFieldModification, updateFieldNameModification } from './fields'
|
|
19
|
+
import {
|
|
20
|
+
convertOneHasManyToManyHasManyRelationModification,
|
|
21
|
+
convertOneToManyRelationModification,
|
|
22
|
+
createRelationInverseSideModification,
|
|
23
|
+
createRelationModification, disableOrphanRemovalModification,
|
|
24
|
+
enableOrphanRemovalModification,
|
|
25
|
+
makeRelationNotNullModification,
|
|
26
|
+
makeRelationNullableModification, toggleJunctionEventLogModification,
|
|
27
|
+
updateRelationOnDeleteModification,
|
|
28
|
+
updateRelationOrderByModification,
|
|
29
29
|
} from './relations'
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
30
|
+
import { patchValidationSchemaModification, updateValidationSchemaModification } from './validation'
|
|
31
|
+
import { createIndexModification, removeIndexModification } from './indexes'
|
|
32
|
+
import { SchemaWithMeta } from './utils/schemaMeta'
|
|
33
|
+
import { updateSettingsModification } from './settings'
|
|
34
|
+
|
|
32
35
|
|
|
33
36
|
class ModificationHandlerFactory {
|
|
34
|
-
constructor(private readonly map: Record<string,
|
|
37
|
+
constructor(private readonly map: Record<string, ModificationType<string, any>>) {}
|
|
35
38
|
|
|
36
|
-
public create<D>(name: string, data: D, schema:
|
|
39
|
+
public create<D>(name: string, data: D, schema: SchemaWithMeta, options: ModificationHandlerOptions): ModificationHandler<D> {
|
|
37
40
|
if (!this.map[name]) {
|
|
38
41
|
throw new Error(`Undefined modification handler for ${name}`)
|
|
39
42
|
}
|
|
40
|
-
return
|
|
43
|
+
return this.map[name].createHandler(data, schema, options)
|
|
41
44
|
}
|
|
42
45
|
}
|
|
43
46
|
|
|
44
47
|
namespace ModificationHandlerFactory {
|
|
45
|
-
|
|
48
|
+
type HandlerMap<D> = { [modificationName: string]: ModificationType<string, D> }
|
|
46
49
|
|
|
47
50
|
const handlers = [
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
51
|
+
updateSettingsModification,
|
|
52
|
+
updateAclSchemaModification,
|
|
53
|
+
patchAclSchemaModification,
|
|
54
|
+
createColumnModification,
|
|
55
|
+
updateColumnDefinitionModification,
|
|
56
|
+
updateColumnNameModification,
|
|
57
|
+
createUniqueConstraintModification,
|
|
58
|
+
removeUniqueConstraintModification,
|
|
59
|
+
createIndexModification,
|
|
60
|
+
removeIndexModification,
|
|
61
|
+
createEntityModification,
|
|
62
|
+
removeEntityModification,
|
|
63
|
+
updateEntityNameModification,
|
|
64
|
+
updateEntityTableNameModification,
|
|
65
|
+
updateViewModification,
|
|
66
|
+
createViewModification,
|
|
67
|
+
createEnumModification,
|
|
68
|
+
removeEnumModification,
|
|
69
|
+
updateEnumModification,
|
|
70
|
+
removeFieldModification,
|
|
71
|
+
updateFieldNameModification,
|
|
72
|
+
createRelationInverseSideModification,
|
|
73
|
+
createRelationModification,
|
|
74
|
+
updateRelationOnDeleteModification,
|
|
75
|
+
updateRelationOrderByModification,
|
|
76
|
+
makeRelationNotNullModification,
|
|
77
|
+
makeRelationNullableModification,
|
|
78
|
+
enableOrphanRemovalModification,
|
|
79
|
+
disableOrphanRemovalModification,
|
|
80
|
+
updateValidationSchemaModification,
|
|
81
|
+
patchValidationSchemaModification,
|
|
82
|
+
convertOneToManyRelationModification,
|
|
83
|
+
toggleEventLogModification,
|
|
84
|
+
toggleJunctionEventLogModification,
|
|
85
|
+
convertOneHasManyToManyHasManyRelationModification,
|
|
82
86
|
]
|
|
83
87
|
|
|
84
88
|
export const defaultFactoryMap: HandlerMap<any> = Object.fromEntries(handlers.map(it => [it.id, it]))
|
|
85
89
|
}
|
|
86
90
|
|
|
87
|
-
export
|
|
91
|
+
export { ModificationHandlerFactory }
|
|
@@ -1,12 +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 = 'patchAclSchema'
|
|
9
|
-
|
|
7
|
+
export class PatchAclSchemaModificationHandler implements ModificationHandler<PatchAclSchemaModificationData>{
|
|
10
8
|
constructor(private readonly data: PatchAclSchemaModificationData) {}
|
|
11
9
|
|
|
12
10
|
public createSql(builder: MigrationBuilder): void {}
|
|
@@ -29,12 +27,13 @@ export const PatchAclSchemaModification: ModificationHandlerStatic<PatchAclSchem
|
|
|
29
27
|
describe() {
|
|
30
28
|
return { message: 'Update ACL schema' }
|
|
31
29
|
}
|
|
32
|
-
|
|
33
|
-
static createModification(data: PatchAclSchemaModificationData) {
|
|
34
|
-
return { modification: this.id, ...data }
|
|
35
|
-
}
|
|
36
30
|
}
|
|
37
31
|
|
|
32
|
+
export const patchAclSchemaModification = createModificationType({
|
|
33
|
+
id: 'patchAclSchema',
|
|
34
|
+
handler: PatchAclSchemaModificationHandler,
|
|
35
|
+
})
|
|
36
|
+
|
|
38
37
|
export interface PatchAclSchemaModificationData {
|
|
39
38
|
patch: Operation[]
|
|
40
39
|
}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
2
|
import { Acl, Schema } 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 {
|
|
8
|
-
|
|
9
|
-
export const UpdateAclSchemaModification: ModificationHandlerStatic<UpdateAclSchemaModificationData> = class {
|
|
10
|
-
public static id = 'updateAclSchema'
|
|
7
|
+
import { patchAclSchemaModification } from './PatchAclSchemaModification'
|
|
11
8
|
|
|
9
|
+
export class UpdateAclSchemaModificationHandler implements ModificationHandler<UpdateAclSchemaModificationData>{
|
|
12
10
|
constructor(private readonly data: UpdateAclSchemaModificationData) {}
|
|
13
11
|
|
|
14
12
|
public createSql(builder: MigrationBuilder): void {}
|
|
@@ -23,23 +21,26 @@ export const UpdateAclSchemaModification: ModificationHandlerStatic<UpdateAclSch
|
|
|
23
21
|
describe() {
|
|
24
22
|
return { message: 'Update ACL schema' }
|
|
25
23
|
}
|
|
24
|
+
}
|
|
26
25
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
export interface UpdateAclSchemaModificationData {
|
|
27
|
+
schema: Acl.Schema
|
|
28
|
+
}
|
|
30
29
|
|
|
31
|
-
|
|
30
|
+
export const updateAclSchemaModification = createModificationType({
|
|
31
|
+
id: 'updateAclSchema',
|
|
32
|
+
handler: UpdateAclSchemaModificationHandler,
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
export class UpdateAclSchemaDiffer implements Differ {
|
|
36
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
32
37
|
if (deepEqual(originalSchema.acl, updatedSchema.acl)) {
|
|
33
38
|
return []
|
|
34
39
|
}
|
|
35
40
|
const patch = createPatch(originalSchema.acl, updatedSchema.acl)
|
|
36
41
|
if (patch.length <= 100) {
|
|
37
|
-
return [
|
|
42
|
+
return [patchAclSchemaModification.createModification({ patch })]
|
|
38
43
|
}
|
|
39
|
-
return [
|
|
44
|
+
return [updateAclSchemaModification.createModification({ schema: updatedSchema.acl })]
|
|
40
45
|
}
|
|
41
46
|
}
|
|
42
|
-
|
|
43
|
-
export interface UpdateAclSchemaModificationData {
|
|
44
|
-
schema: Acl.Schema
|
|
45
|
-
}
|