@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,12 +1,11 @@
|
|
|
1
1
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
2
|
import { Model, Schema } from '@contember/schema'
|
|
3
3
|
import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'
|
|
4
|
-
import {
|
|
4
|
+
import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
|
|
5
5
|
import { isOwningRelation } from '@contember/schema-utils'
|
|
6
6
|
import { updateRelations } from '../utils/diffUtils'
|
|
7
7
|
|
|
8
|
-
export
|
|
9
|
-
static id = 'enableOrphanRemoval'
|
|
8
|
+
export class EnableOrphanRemovalModificationHandler implements ModificationHandler<EnableOrphanRemovalModificationData> {
|
|
10
9
|
constructor(private readonly data: EnableOrphanRemovalModificationData, private readonly schema: Schema) {}
|
|
11
10
|
|
|
12
11
|
public createSql(builder: MigrationBuilder): void {}
|
|
@@ -30,11 +29,20 @@ export const EnableOrphanRemovalModification: ModificationHandlerStatic<EnableOr
|
|
|
30
29
|
}
|
|
31
30
|
}
|
|
32
31
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface EnableOrphanRemovalModificationData {
|
|
35
|
+
entityName: string
|
|
36
|
+
fieldName: string
|
|
37
|
+
}
|
|
36
38
|
|
|
37
|
-
|
|
39
|
+
export const enableOrphanRemovalModification = createModificationType({
|
|
40
|
+
id: 'enableOrphanRemoval',
|
|
41
|
+
handler: EnableOrphanRemovalModificationHandler,
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
export class EnableOrphanRemovalDiffer implements Differ {
|
|
45
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
38
46
|
return updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {
|
|
39
47
|
if (
|
|
40
48
|
isOwningRelation(originalRelation) &&
|
|
@@ -44,7 +52,7 @@ export const EnableOrphanRemovalModification: ModificationHandlerStatic<EnableOr
|
|
|
44
52
|
!originalRelation.orphanRemoval &&
|
|
45
53
|
updatedRelation.orphanRemoval
|
|
46
54
|
) {
|
|
47
|
-
return
|
|
55
|
+
return enableOrphanRemovalModification.createModification({
|
|
48
56
|
entityName: updatedEntity.name,
|
|
49
57
|
fieldName: updatedRelation.name,
|
|
50
58
|
})
|
|
@@ -53,8 +61,3 @@ export const EnableOrphanRemovalModification: ModificationHandlerStatic<EnableOr
|
|
|
53
61
|
})
|
|
54
62
|
}
|
|
55
63
|
}
|
|
56
|
-
|
|
57
|
-
export interface EnableOrphanRemovalModificationData {
|
|
58
|
-
entityName: string
|
|
59
|
-
fieldName: string
|
|
60
|
-
}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
2
|
import { Model, Schema } from '@contember/schema'
|
|
3
3
|
import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'
|
|
4
|
-
import {
|
|
4
|
+
import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
|
|
5
5
|
import { getEntity, tryGetColumnName } from '@contember/schema-utils'
|
|
6
6
|
import { isIt } from '../../utils/isIt'
|
|
7
7
|
import { updateRelations } from '../utils/diffUtils'
|
|
8
8
|
|
|
9
|
-
export
|
|
10
|
-
static id = 'makeRelationNotNull'
|
|
9
|
+
export class MakeRelationNotNullModificationHandler implements ModificationHandler<MakeRelationNotNullModificationData> {
|
|
11
10
|
constructor(private readonly data: MakeRelationNotNullModificationData, private readonly schema: Schema) {}
|
|
12
11
|
|
|
13
12
|
public createSql(builder: MigrationBuilder): void {
|
|
@@ -43,12 +42,21 @@ export const MakeRelationNotNullModification: ModificationHandlerStatic<MakeRela
|
|
|
43
42
|
failureWarning: 'Changing to not-null may fail in runtime',
|
|
44
43
|
}
|
|
45
44
|
}
|
|
45
|
+
}
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
export interface MakeRelationNotNullModificationData {
|
|
48
|
+
entityName: string
|
|
49
|
+
fieldName: string
|
|
50
|
+
// todo fillValue
|
|
51
|
+
}
|
|
50
52
|
|
|
51
|
-
|
|
53
|
+
export const makeRelationNotNullModification = createModificationType({
|
|
54
|
+
id: 'makeRelationNotNull',
|
|
55
|
+
handler: MakeRelationNotNullModificationHandler,
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
export class MakeRelationNotNullDiffer implements Differ {
|
|
59
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
52
60
|
return updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {
|
|
53
61
|
if (
|
|
54
62
|
originalRelation.type === updatedRelation.type &&
|
|
@@ -57,7 +65,7 @@ export const MakeRelationNotNullModification: ModificationHandlerStatic<MakeRela
|
|
|
57
65
|
!updatedRelation.nullable &&
|
|
58
66
|
originalRelation.nullable
|
|
59
67
|
) {
|
|
60
|
-
return
|
|
68
|
+
return makeRelationNotNullModification.createModification({
|
|
61
69
|
entityName: updatedEntity.name,
|
|
62
70
|
fieldName: updatedRelation.name,
|
|
63
71
|
})
|
|
@@ -66,9 +74,3 @@ export const MakeRelationNotNullModification: ModificationHandlerStatic<MakeRela
|
|
|
66
74
|
})
|
|
67
75
|
}
|
|
68
76
|
}
|
|
69
|
-
|
|
70
|
-
export interface MakeRelationNotNullModificationData {
|
|
71
|
-
entityName: string
|
|
72
|
-
fieldName: string
|
|
73
|
-
// todo fillValue
|
|
74
|
-
}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
2
|
import { Model, Schema } from '@contember/schema'
|
|
3
3
|
import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'
|
|
4
|
-
import {
|
|
4
|
+
import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
|
|
5
5
|
import { getEntity, tryGetColumnName } from '@contember/schema-utils'
|
|
6
6
|
import { isIt } from '../../utils/isIt'
|
|
7
7
|
import { updateRelations } from '../utils/diffUtils'
|
|
8
8
|
|
|
9
|
-
export
|
|
10
|
-
static id = 'makeRelationNullable'
|
|
9
|
+
export class MakeRelationNullableModificationHandler implements ModificationHandler<MakeRelationNullableModificationData> {
|
|
11
10
|
constructor(private readonly data: MakeRelationNullableModificationData, private readonly schema: Schema) {}
|
|
12
11
|
|
|
13
12
|
public createSql(builder: MigrationBuilder): void {
|
|
@@ -43,11 +42,21 @@ export const MakeRelationNullableModification: ModificationHandlerStatic<MakeRel
|
|
|
43
42
|
}
|
|
44
43
|
}
|
|
45
44
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface MakeRelationNullableModificationData {
|
|
48
|
+
entityName: string
|
|
49
|
+
fieldName: string
|
|
50
|
+
}
|
|
49
51
|
|
|
50
|
-
|
|
52
|
+
|
|
53
|
+
export const makeRelationNullableModification = createModificationType({
|
|
54
|
+
id: 'makeRelationNullable',
|
|
55
|
+
handler: MakeRelationNullableModificationHandler,
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
export class MakeRelationNullableDiffer implements Differ {
|
|
59
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
51
60
|
return updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {
|
|
52
61
|
if (
|
|
53
62
|
originalRelation.type === updatedRelation.type &&
|
|
@@ -56,7 +65,7 @@ export const MakeRelationNullableModification: ModificationHandlerStatic<MakeRel
|
|
|
56
65
|
updatedRelation.nullable &&
|
|
57
66
|
!originalRelation.nullable
|
|
58
67
|
) {
|
|
59
|
-
return
|
|
68
|
+
return makeRelationNullableModification.createModification({
|
|
60
69
|
entityName: updatedEntity.name,
|
|
61
70
|
fieldName: updatedRelation.name,
|
|
62
71
|
})
|
|
@@ -65,8 +74,3 @@ export const MakeRelationNullableModification: ModificationHandlerStatic<MakeRel
|
|
|
65
74
|
})
|
|
66
75
|
}
|
|
67
76
|
}
|
|
68
|
-
|
|
69
|
-
export interface MakeRelationNullableModificationData {
|
|
70
|
-
entityName: string
|
|
71
|
-
fieldName: string
|
|
72
|
-
}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
2
|
import { Model, Schema } from '@contember/schema'
|
|
3
3
|
import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
createModificationType,
|
|
6
|
+
Differ,
|
|
7
|
+
ModificationHandler,
|
|
8
|
+
ModificationHandlerOptions,
|
|
9
|
+
} from '../ModificationHandler'
|
|
5
10
|
import {
|
|
6
11
|
createEventTrigger,
|
|
7
12
|
createEventTrxTrigger,
|
|
@@ -12,8 +17,7 @@ import { isOwningRelation, isRelation } from '@contember/schema-utils'
|
|
|
12
17
|
import { updateRelations } from '../utils/diffUtils'
|
|
13
18
|
import { isIt } from '../../utils/isIt'
|
|
14
19
|
|
|
15
|
-
export
|
|
16
|
-
static id = 'toggleJunctionEventLog'
|
|
20
|
+
export class ToggleJunctionEventLogModificationHandler implements ModificationHandler<ToggleJunctionEventLogModificationData> {
|
|
17
21
|
|
|
18
22
|
constructor(
|
|
19
23
|
private readonly data: ToggleJunctionEventLogModificationData,
|
|
@@ -67,12 +71,21 @@ export const ToggleJunctionEventLogModification: ModificationHandlerStatic<Toggl
|
|
|
67
71
|
message: `${this.data.enabled ? 'Enable' : 'Disable'} event log for ${this.data.entityName}.${this.data.fieldName}`,
|
|
68
72
|
}
|
|
69
73
|
}
|
|
74
|
+
}
|
|
70
75
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
76
|
+
export interface ToggleJunctionEventLogModificationData {
|
|
77
|
+
entityName: string
|
|
78
|
+
fieldName: string
|
|
79
|
+
enabled: boolean
|
|
80
|
+
}
|
|
74
81
|
|
|
75
|
-
|
|
82
|
+
export const toggleJunctionEventLogModification = createModificationType({
|
|
83
|
+
id: 'toggleJunctionEventLog',
|
|
84
|
+
handler: ToggleJunctionEventLogModificationHandler,
|
|
85
|
+
})
|
|
86
|
+
|
|
87
|
+
export class ToggleJunctionEventLogDiffer implements Differ {
|
|
88
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
76
89
|
return updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {
|
|
77
90
|
if (
|
|
78
91
|
originalRelation.type === updatedRelation.type &&
|
|
@@ -82,7 +95,7 @@ export const ToggleJunctionEventLogModification: ModificationHandlerStatic<Toggl
|
|
|
82
95
|
const newValue = updatedRelation.joiningTable.eventLog?.enabled ?? false
|
|
83
96
|
const oldValue = originalRelation.joiningTable.eventLog?.enabled ?? false
|
|
84
97
|
if (newValue !== oldValue) {
|
|
85
|
-
return
|
|
98
|
+
return toggleJunctionEventLogModification.createModification({
|
|
86
99
|
entityName: updatedEntity.name,
|
|
87
100
|
fieldName: updatedRelation.name,
|
|
88
101
|
enabled: newValue,
|
|
@@ -94,9 +107,3 @@ export const ToggleJunctionEventLogModification: ModificationHandlerStatic<Toggl
|
|
|
94
107
|
|
|
95
108
|
}
|
|
96
109
|
}
|
|
97
|
-
|
|
98
|
-
export interface ToggleJunctionEventLogModificationData {
|
|
99
|
-
entityName: string
|
|
100
|
-
fieldName: string
|
|
101
|
-
enabled: boolean
|
|
102
|
-
}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
2
|
import { Model, Schema } from '@contember/schema'
|
|
3
3
|
import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'
|
|
4
|
-
import {
|
|
4
|
+
import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
|
|
5
5
|
import { isIt } from '../../utils/isIt'
|
|
6
6
|
import { updateRelations } from '../utils/diffUtils'
|
|
7
7
|
|
|
8
|
-
export
|
|
9
|
-
static id = 'updateRelationOnDelete'
|
|
8
|
+
export class UpdateRelationOnDeleteModificationHandler implements ModificationHandler<UpdateRelationOnDeleteModificationData> {
|
|
10
9
|
constructor(private readonly data: UpdateRelationOnDeleteModificationData, private readonly schema: Schema) {}
|
|
11
10
|
|
|
12
11
|
public createSql(builder: MigrationBuilder): void {}
|
|
@@ -27,12 +26,21 @@ export const UpdateRelationOnDeleteModification: ModificationHandlerStatic<Updat
|
|
|
27
26
|
describe() {
|
|
28
27
|
return { message: `Change on-delete policy of relation ${this.data.entityName}.${this.data.fieldName}` }
|
|
29
28
|
}
|
|
29
|
+
}
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
export interface UpdateRelationOnDeleteModificationData {
|
|
32
|
+
entityName: string
|
|
33
|
+
fieldName: string
|
|
34
|
+
onDelete: Model.OnDelete
|
|
35
|
+
}
|
|
34
36
|
|
|
35
|
-
|
|
37
|
+
export const updateRelationOnDeleteModification = createModificationType({
|
|
38
|
+
id: 'updateRelationOnDelete',
|
|
39
|
+
handler: UpdateRelationOnDeleteModificationHandler,
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
export class UpdateRelationOnDeleteDiffer implements Differ {
|
|
43
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
36
44
|
return updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {
|
|
37
45
|
if (
|
|
38
46
|
originalRelation.type === updatedRelation.type &&
|
|
@@ -40,7 +48,7 @@ export const UpdateRelationOnDeleteModification: ModificationHandlerStatic<Updat
|
|
|
40
48
|
isIt<Model.JoiningColumnRelation>(originalRelation, 'joiningColumn') &&
|
|
41
49
|
updatedRelation.joiningColumn.onDelete !== originalRelation.joiningColumn.onDelete
|
|
42
50
|
) {
|
|
43
|
-
return
|
|
51
|
+
return updateRelationOnDeleteModification.createModification({
|
|
44
52
|
entityName: updatedEntity.name,
|
|
45
53
|
fieldName: updatedRelation.name,
|
|
46
54
|
onDelete: updatedRelation.joiningColumn.onDelete,
|
|
@@ -50,9 +58,3 @@ export const UpdateRelationOnDeleteModification: ModificationHandlerStatic<Updat
|
|
|
50
58
|
})
|
|
51
59
|
}
|
|
52
60
|
}
|
|
53
|
-
|
|
54
|
-
export interface UpdateRelationOnDeleteModificationData {
|
|
55
|
-
entityName: string
|
|
56
|
-
fieldName: string
|
|
57
|
-
onDelete: Model.OnDelete
|
|
58
|
-
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
2
|
import { Model, Schema } from '@contember/schema'
|
|
3
3
|
import { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'
|
|
4
|
-
import {
|
|
4
|
+
import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
|
|
5
5
|
import deepEqual from 'fast-deep-equal'
|
|
6
6
|
import { updateRelations } from '../utils/diffUtils'
|
|
7
7
|
|
|
8
|
-
export
|
|
9
|
-
|
|
8
|
+
export class UpdateRelationOrderByModificationHandler implements ModificationHandler<UpdateRelationOrderByModificationData> {
|
|
9
|
+
|
|
10
10
|
constructor(private readonly data: UpdateRelationOrderByModificationData, private readonly schema: Schema) {}
|
|
11
11
|
|
|
12
12
|
public createSql(builder: MigrationBuilder): void {}
|
|
@@ -27,12 +27,21 @@ export const UpdateRelationOrderByModification: ModificationHandlerStatic<Update
|
|
|
27
27
|
describe() {
|
|
28
28
|
return { message: `Update order-by of relation ${this.data.entityName}.${this.data.fieldName}` }
|
|
29
29
|
}
|
|
30
|
+
}
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
export interface UpdateRelationOrderByModificationData {
|
|
33
|
+
entityName: string
|
|
34
|
+
fieldName: string
|
|
35
|
+
orderBy: readonly Model.OrderBy[]
|
|
36
|
+
}
|
|
34
37
|
|
|
35
|
-
|
|
38
|
+
export const updateRelationOrderByModification = createModificationType({
|
|
39
|
+
id: 'updateRelationOrderBy',
|
|
40
|
+
handler: UpdateRelationOrderByModificationHandler,
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
export class UpdateRelationOrderByDiffer implements Differ {
|
|
44
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
36
45
|
return updateRelations(originalSchema, updatedSchema, ({ updatedRelation, originalRelation, updatedEntity }) => {
|
|
37
46
|
const isItOrderable = (relation: Model.AnyRelation): relation is Model.OrderableRelation & Model.AnyRelation =>
|
|
38
47
|
relation.type === Model.RelationType.ManyHasMany || relation.type === Model.RelationType.OneHasMany
|
|
@@ -42,7 +51,7 @@ export const UpdateRelationOrderByModification: ModificationHandlerStatic<Update
|
|
|
42
51
|
isItOrderable(originalRelation) &&
|
|
43
52
|
!deepEqual(updatedRelation.orderBy || [], originalRelation.orderBy || [])
|
|
44
53
|
) {
|
|
45
|
-
return
|
|
54
|
+
return updateRelationOrderByModification.createModification({
|
|
46
55
|
entityName: updatedEntity.name,
|
|
47
56
|
fieldName: updatedRelation.name,
|
|
48
57
|
orderBy: updatedRelation.orderBy || [],
|
|
@@ -52,9 +61,3 @@ export const UpdateRelationOrderByModification: ModificationHandlerStatic<Update
|
|
|
52
61
|
})
|
|
53
62
|
}
|
|
54
63
|
}
|
|
55
|
-
|
|
56
|
-
export interface UpdateRelationOrderByModificationData {
|
|
57
|
-
entityName: string
|
|
58
|
-
fieldName: string
|
|
59
|
-
orderBy: readonly Model.OrderBy[]
|
|
60
|
-
}
|
|
@@ -6,6 +6,6 @@ export * from './DisableOrphanRemovalModification'
|
|
|
6
6
|
export * from './EnableOrphanRemovalModification'
|
|
7
7
|
export * from './MakeRelationNotNullModification'
|
|
8
8
|
export * from './MakeRelationNullableModification'
|
|
9
|
-
export * from './
|
|
9
|
+
export * from './ToggleJunctionEventLogModification'
|
|
10
10
|
export * from './UpdateRelationOnDeleteModification'
|
|
11
11
|
export * from './UpdateRelationOrderByModification'
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
|
+
import { Schema, Settings } from '@contember/schema'
|
|
3
|
+
import { SchemaUpdater } from '../utils/schemaUpdateUtils'
|
|
4
|
+
import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
|
|
5
|
+
import deepEqual from 'fast-deep-equal'
|
|
6
|
+
|
|
7
|
+
export class UpdateSettingsModificationHandler implements ModificationHandler<UpdateSettingsModificationData> {
|
|
8
|
+
constructor(
|
|
9
|
+
private readonly data: UpdateSettingsModificationData,
|
|
10
|
+
) {
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
public createSql(builder: MigrationBuilder): void {
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
public getSchemaUpdater(): SchemaUpdater {
|
|
17
|
+
return ({ schema }) => {
|
|
18
|
+
const { [this.data.key]: _, ...settings } = schema.settings
|
|
19
|
+
if (this.data.op === 'unset') {
|
|
20
|
+
return {
|
|
21
|
+
...schema,
|
|
22
|
+
settings,
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
...schema,
|
|
27
|
+
settings: { ...settings, [this.data.key]: this.data.value },
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
describe() {
|
|
34
|
+
return { message: `Change settings of ${this.data.key}` }
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export const updateSettingsModification = createModificationType({
|
|
40
|
+
id: 'updateSettings',
|
|
41
|
+
handler: UpdateSettingsModificationHandler,
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
export class UpdateSettingsDiffer implements Differ {
|
|
45
|
+
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
46
|
+
const allKeys = Array.from(new Set([
|
|
47
|
+
...Object.keys(originalSchema.settings),
|
|
48
|
+
...Object.keys(updatedSchema.settings),
|
|
49
|
+
] as (keyof Settings.Schema)[]))
|
|
50
|
+
|
|
51
|
+
return allKeys
|
|
52
|
+
.filter(key => !deepEqual(originalSchema.settings[key], updatedSchema.settings[key]))
|
|
53
|
+
.map(key => {
|
|
54
|
+
const value = updatedSchema.settings[key]
|
|
55
|
+
if (value === undefined) {
|
|
56
|
+
return updateSettingsModification.createModification({
|
|
57
|
+
op: 'unset',
|
|
58
|
+
key,
|
|
59
|
+
})
|
|
60
|
+
}
|
|
61
|
+
return updateSettingsModification.createModification({
|
|
62
|
+
op: 'set',
|
|
63
|
+
key,
|
|
64
|
+
value,
|
|
65
|
+
})
|
|
66
|
+
})
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
export interface SetSettingsModificationData<K extends keyof Settings.Schema = keyof Settings.Schema> {
|
|
73
|
+
op: 'set'
|
|
74
|
+
key: K
|
|
75
|
+
value: Settings.Schema[K]
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
export interface UnsetSettingsModificationData<K extends keyof Settings.Schema = keyof Settings.Schema> {
|
|
80
|
+
op: 'unset'
|
|
81
|
+
key: K
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
export type UpdateSettingsModificationData =
|
|
86
|
+
| SetSettingsModificationData
|
|
87
|
+
| UnsetSettingsModificationData
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './UpdateSettingsModification'
|
|
@@ -2,10 +2,12 @@ import { createEventTrigger, createEventTrxTrigger } from './sqlUpdateUtils'
|
|
|
2
2
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
3
3
|
import { Model } from '@contember/schema'
|
|
4
4
|
import { getPrimaryColumnType } from './getPrimaryColumnType'
|
|
5
|
+
import { resolveIndexName, SchemaWithMeta } from './schemaMeta'
|
|
5
6
|
|
|
6
7
|
export const createJunctionTableSql = (
|
|
7
8
|
builder: MigrationBuilder,
|
|
8
9
|
systemSchema: string,
|
|
10
|
+
schema: SchemaWithMeta,
|
|
9
11
|
entity: Model.Entity,
|
|
10
12
|
targetEntity: Model.Entity,
|
|
11
13
|
relation: Model.ManyHasManyOwningRelation,
|
|
@@ -30,12 +32,12 @@ export const createJunctionTableSql = (
|
|
|
30
32
|
onDelete: 'CASCADE',
|
|
31
33
|
},
|
|
32
34
|
},
|
|
33
|
-
{
|
|
34
|
-
constraints: {
|
|
35
|
-
primaryKey: primaryColumns,
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
35
|
)
|
|
36
|
+
const proposedIndexName = `${relation.joiningTable.tableName}_pkey`
|
|
37
|
+
const indexName = resolveIndexName(schema, proposedIndexName)
|
|
38
|
+
builder.addConstraint(relation.joiningTable.tableName, indexName, {
|
|
39
|
+
primaryKey: primaryColumns,
|
|
40
|
+
})
|
|
39
41
|
if (relation.joiningTable.eventLog.enabled) {
|
|
40
42
|
createEventTrigger(builder, systemSchema, relation.joiningTable.tableName, primaryColumns)
|
|
41
43
|
createEventTrxTrigger(builder, systemSchema, relation.joiningTable.tableName)
|
|
@@ -4,7 +4,7 @@ import { isColumn, isRelation } from '@contember/schema-utils'
|
|
|
4
4
|
import { isDefined } from '../../utils/isDefined'
|
|
5
5
|
import deepEqual from 'fast-deep-equal'
|
|
6
6
|
|
|
7
|
-
export const updateFields = (
|
|
7
|
+
export const updateFields = <Data = { [field: string]: any }>(
|
|
8
8
|
originalSchema: Schema,
|
|
9
9
|
updatedSchema: Schema,
|
|
10
10
|
modificationGenerator: (args: {
|
|
@@ -12,8 +12,8 @@ export const updateFields = (
|
|
|
12
12
|
updatedEntity: Model.Entity
|
|
13
13
|
originalField: Model.AnyField
|
|
14
14
|
updatedField: Model.AnyField
|
|
15
|
-
}) => Migration.Modification | Migration.Modification[] | undefined,
|
|
16
|
-
): Migration.Modification[] => {
|
|
15
|
+
}) => Migration.Modification<Data> | Migration.Modification<Data>[] | undefined,
|
|
16
|
+
): Migration.Modification<Data>[] => {
|
|
17
17
|
return Object.values(updatedSchema.model.entities)
|
|
18
18
|
.filter(({ name }) => originalSchema.model.entities[name])
|
|
19
19
|
.flatMap(updatedEntity => {
|
|
@@ -43,7 +43,7 @@ export const updateFields = (
|
|
|
43
43
|
})
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
export const updateColumns = (
|
|
46
|
+
export const updateColumns = <Data = { [field: string]: any }>(
|
|
47
47
|
originalSchema: Schema,
|
|
48
48
|
updatedSchema: Schema,
|
|
49
49
|
modificationGenerator: (args: {
|
|
@@ -51,8 +51,8 @@ export const updateColumns = (
|
|
|
51
51
|
originalColumn: Model.AnyColumn
|
|
52
52
|
updatedEntity: Model.Entity
|
|
53
53
|
updatedColumn: Model.AnyColumn
|
|
54
|
-
}) => Migration.Modification | undefined,
|
|
55
|
-
) => {
|
|
54
|
+
}) => Migration.Modification<Data> | undefined,
|
|
55
|
+
): Migration.Modification<Data>[] => {
|
|
56
56
|
return updateFields(
|
|
57
57
|
originalSchema,
|
|
58
58
|
updatedSchema,
|
|
@@ -70,7 +70,7 @@ export const updateColumns = (
|
|
|
70
70
|
)
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
export const updateRelations = (
|
|
73
|
+
export const updateRelations = <Data = { [field: string]: any }>(
|
|
74
74
|
originalSchema: Schema,
|
|
75
75
|
updatedSchema: Schema,
|
|
76
76
|
modificationGenerator: (args: {
|
|
@@ -78,8 +78,8 @@ export const updateRelations = (
|
|
|
78
78
|
originalRelation: Model.AnyRelation
|
|
79
79
|
updatedEntity: Model.Entity
|
|
80
80
|
updatedRelation: Model.AnyRelation
|
|
81
|
-
}) => Migration.Modification | undefined,
|
|
82
|
-
) => {
|
|
81
|
+
}) => Migration.Modification<Data> | undefined,
|
|
82
|
+
): Migration.Modification<Data>[] => {
|
|
83
83
|
return updateFields(
|
|
84
84
|
originalSchema,
|
|
85
85
|
updatedSchema,
|
|
@@ -97,15 +97,15 @@ export const updateRelations = (
|
|
|
97
97
|
)
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
export const createFields = (
|
|
100
|
+
export const createFields = <Data = { [field: string]: any }>(
|
|
101
101
|
originalSchema: Schema,
|
|
102
102
|
updatedSchema: Schema,
|
|
103
103
|
modificationGenerator: (args: {
|
|
104
104
|
originalEntity: Model.Entity
|
|
105
105
|
updatedEntity: Model.Entity
|
|
106
106
|
newField: Model.AnyField
|
|
107
|
-
}) => Migration.Modification | undefined,
|
|
108
|
-
) => {
|
|
107
|
+
}) => Migration.Modification<Data> | undefined,
|
|
108
|
+
): Migration.Modification<Data>[] => {
|
|
109
109
|
return Object.values(updatedSchema.model.entities)
|
|
110
110
|
.filter(({ name }) => originalSchema.model.entities[name])
|
|
111
111
|
.flatMap(updatedEntity => {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Schema } from '@contember/schema'
|
|
2
|
+
|
|
3
|
+
export type SchemaWithMeta =
|
|
4
|
+
& Schema
|
|
5
|
+
& {
|
|
6
|
+
meta?: {
|
|
7
|
+
takenIndexNames: Record<string, true>
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const resolveIndexName = (schema: SchemaWithMeta, indexName: string): string => {
|
|
12
|
+
for (let i = 0; ; i++) {
|
|
13
|
+
const name = indexName + (i === 0 ? '' : `${i}`)
|
|
14
|
+
if (!schema.meta || !(name in schema.meta.takenIndexNames)) {
|
|
15
|
+
return name
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -3,8 +3,10 @@ import { SchemaUpdateError } from '../exceptions'
|
|
|
3
3
|
import { isDefined } from '../../utils/isDefined'
|
|
4
4
|
import { isInverseRelation, isOwningRelation, isRelation, PredicateDefinitionProcessor } from '@contember/schema-utils'
|
|
5
5
|
import { VERSION_ACL_PATCH, VERSION_REMOVE_RELATION_INVERSE_SIDE } from '../ModificationVersions'
|
|
6
|
+
import { resolveIndexName, SchemaWithMeta } from './schemaMeta'
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
|
|
9
|
+
export type SchemaUpdater = (args: { schema: SchemaWithMeta }) => SchemaWithMeta
|
|
8
10
|
export type ModelUpdater = (args: { schema: Schema; model: Model.Schema }) => Model.Schema
|
|
9
11
|
export type EntityUpdater = (args: { schema: Schema; model: Model.Schema; entity: Model.Entity }) => Model.Entity
|
|
10
12
|
export type FieldUpdater<In extends Model.AnyField, Out extends Model.AnyField> = (args: {
|
|
@@ -269,7 +271,14 @@ export const removeField = (entityName: string, fieldName: string, version: numb
|
|
|
269
271
|
updateModel(
|
|
270
272
|
updateEntity(entity.name, ({ entity }) => {
|
|
271
273
|
const { [field.name]: removed, ...fields } = entity.fields
|
|
272
|
-
|
|
274
|
+
const indexes = Object.entries(entity.indexes).filter(([, index]) => !index.fields.includes(field.name))
|
|
275
|
+
const unique = Object.entries(entity.unique).filter(([, index]) => !index.fields.includes(field.name))
|
|
276
|
+
return {
|
|
277
|
+
...entity,
|
|
278
|
+
fields,
|
|
279
|
+
indexes: Object.fromEntries(indexes),
|
|
280
|
+
unique: Object.fromEntries(unique),
|
|
281
|
+
}
|
|
273
282
|
}),
|
|
274
283
|
isRelation(field) && isInverseRelation(field)
|
|
275
284
|
? updateEntity(
|
|
@@ -281,3 +290,14 @@ export const removeField = (entityName: string, fieldName: string, version: numb
|
|
|
281
290
|
)({ schema })
|
|
282
291
|
}
|
|
283
292
|
}
|
|
293
|
+
|
|
294
|
+
export const addTakenIndexName = (indexName: string): SchemaUpdater => ({ schema }) => ({
|
|
295
|
+
...schema,
|
|
296
|
+
meta: {
|
|
297
|
+
...schema.meta,
|
|
298
|
+
takenIndexNames: {
|
|
299
|
+
...schema.meta?.takenIndexNames,
|
|
300
|
+
[resolveIndexName(schema, indexName)]: true,
|
|
301
|
+
},
|
|
302
|
+
},
|
|
303
|
+
})
|