@contember/schema-migrations 1.2.1 → 1.3.0-alpha.13
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/MigrationCreator.js +2 -2
- package/dist/src/MigrationCreator.js.map +1 -1
- package/dist/src/MigrationDescriber.d.ts +4 -4
- package/dist/src/MigrationDescriber.d.ts.map +1 -1
- package/dist/src/MigrationDescriber.js +8 -7
- package/dist/src/MigrationDescriber.js.map +1 -1
- package/dist/src/MigrationFilesManager.js +2 -2
- package/dist/src/MigrationFilesManager.js.map +1 -1
- package/dist/src/MigrationsResolver.js +3 -3
- package/dist/src/MigrationsResolver.js.map +1 -1
- package/dist/src/SchemaDiffer.d.ts.map +1 -1
- package/dist/src/SchemaDiffer.js +21 -2
- package/dist/src/SchemaDiffer.js.map +1 -1
- package/dist/src/SchemaMigrator.d.ts +1 -2
- package/dist/src/SchemaMigrator.d.ts.map +1 -1
- package/dist/src/SchemaMigrator.js +0 -1
- package/dist/src/SchemaMigrator.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/modifications/ModificationHandler.d.ts +9 -5
- package/dist/src/modifications/ModificationHandler.d.ts.map +1 -1
- package/dist/src/modifications/ModificationHandler.js.map +1 -1
- package/dist/src/modifications/ModificationHandlerFactory.d.ts +2 -2
- package/dist/src/modifications/ModificationHandlerFactory.d.ts.map +1 -1
- package/dist/src/modifications/ModificationHandlerFactory.js +14 -0
- package/dist/src/modifications/ModificationHandlerFactory.js.map +1 -1
- package/dist/src/modifications/ModificationVersions.d.ts +4 -2
- package/dist/src/modifications/ModificationVersions.d.ts.map +1 -1
- package/dist/src/modifications/ModificationVersions.js +5 -3
- package/dist/src/modifications/ModificationVersions.js.map +1 -1
- package/dist/src/modifications/actions/CreateTargetModification.d.ts +21 -0
- package/dist/src/modifications/actions/CreateTargetModification.d.ts.map +1 -0
- package/dist/src/modifications/actions/CreateTargetModification.js +40 -0
- package/dist/src/modifications/actions/CreateTargetModification.js.map +1 -0
- package/dist/src/modifications/actions/CreateTriggerModification.d.ts +21 -0
- package/dist/src/modifications/actions/CreateTriggerModification.d.ts.map +1 -0
- package/dist/src/modifications/actions/CreateTriggerModification.js +40 -0
- package/dist/src/modifications/actions/CreateTriggerModification.js.map +1 -0
- package/dist/src/modifications/actions/RemoveTargetModification.d.ts +21 -0
- package/dist/src/modifications/actions/RemoveTargetModification.d.ts.map +1 -0
- package/dist/src/modifications/actions/RemoveTargetModification.js +40 -0
- package/dist/src/modifications/actions/RemoveTargetModification.js.map +1 -0
- package/dist/src/modifications/actions/RemoveTriggerModification.d.ts +21 -0
- package/dist/src/modifications/actions/RemoveTriggerModification.d.ts.map +1 -0
- package/dist/src/modifications/actions/RemoveTriggerModification.js +40 -0
- package/dist/src/modifications/actions/RemoveTriggerModification.js.map +1 -0
- package/dist/src/modifications/actions/UpdateTargetModification.d.ts +22 -0
- package/dist/src/modifications/actions/UpdateTargetModification.d.ts.map +1 -0
- package/dist/src/modifications/actions/UpdateTargetModification.js +46 -0
- package/dist/src/modifications/actions/UpdateTargetModification.js.map +1 -0
- package/dist/src/modifications/actions/UpdateTriggerModification.d.ts +21 -0
- package/dist/src/modifications/actions/UpdateTriggerModification.d.ts.map +1 -0
- package/dist/src/modifications/actions/UpdateTriggerModification.js +46 -0
- package/dist/src/modifications/actions/UpdateTriggerModification.js.map +1 -0
- package/dist/src/modifications/actions/index.d.ts +4 -0
- package/dist/src/modifications/actions/index.d.ts.map +1 -0
- package/dist/src/modifications/actions/index.js +20 -0
- package/dist/src/modifications/actions/index.js.map +1 -0
- package/dist/src/modifications/columns/UpdateColumnDefinitionModification.d.ts.map +1 -1
- package/dist/src/modifications/columns/UpdateColumnDefinitionModification.js +3 -3
- package/dist/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
- package/dist/src/modifications/constraints/CreateUniqueConstraintModification.d.ts +3 -3
- package/dist/src/modifications/constraints/CreateUniqueConstraintModification.d.ts.map +1 -1
- package/dist/src/modifications/constraints/CreateUniqueConstraintModification.js +20 -32
- package/dist/src/modifications/constraints/CreateUniqueConstraintModification.js.map +1 -1
- package/dist/src/modifications/constraints/RemoveUniqueConstraintModification.d.ts +11 -5
- package/dist/src/modifications/constraints/RemoveUniqueConstraintModification.d.ts.map +1 -1
- package/dist/src/modifications/constraints/RemoveUniqueConstraintModification.js +37 -9
- package/dist/src/modifications/constraints/RemoveUniqueConstraintModification.js.map +1 -1
- package/dist/src/modifications/constraints/utils.d.ts +7 -0
- package/dist/src/modifications/constraints/utils.d.ts.map +1 -0
- package/dist/src/modifications/constraints/utils.js +33 -0
- package/dist/src/modifications/constraints/utils.js.map +1 -0
- package/dist/src/modifications/entities/CreateEntityModification.d.ts +4 -4
- package/dist/src/modifications/entities/CreateEntityModification.d.ts.map +1 -1
- package/dist/src/modifications/entities/CreateEntityModification.js +18 -14
- package/dist/src/modifications/entities/CreateEntityModification.js.map +1 -1
- package/dist/src/modifications/entities/CreateViewModification.d.ts +2 -2
- package/dist/src/modifications/entities/CreateViewModification.d.ts.map +1 -1
- package/dist/src/modifications/entities/CreateViewModification.js +14 -10
- package/dist/src/modifications/entities/CreateViewModification.js.map +1 -1
- package/dist/src/modifications/entities/RemoveEntityModification.d.ts +3 -4
- package/dist/src/modifications/entities/RemoveEntityModification.d.ts.map +1 -1
- package/dist/src/modifications/entities/RemoveEntityModification.js +3 -2
- package/dist/src/modifications/entities/RemoveEntityModification.js.map +1 -1
- package/dist/src/modifications/entities/ToggleEventLogModification.d.ts +2 -2
- package/dist/src/modifications/entities/ToggleEventLogModification.d.ts.map +1 -1
- package/dist/src/modifications/entities/ToggleEventLogModification.js +3 -3
- package/dist/src/modifications/entities/ToggleEventLogModification.js.map +1 -1
- package/dist/src/modifications/entities/UpdateEntityNameModification.d.ts +4 -5
- package/dist/src/modifications/entities/UpdateEntityNameModification.d.ts.map +1 -1
- package/dist/src/modifications/entities/UpdateEntityNameModification.js +3 -19
- package/dist/src/modifications/entities/UpdateEntityNameModification.js.map +1 -1
- package/dist/src/modifications/entities/UpdateEntityOrderByModification.d.ts +23 -0
- package/dist/src/modifications/entities/UpdateEntityOrderByModification.d.ts.map +1 -0
- package/dist/src/modifications/entities/UpdateEntityOrderByModification.js +63 -0
- package/dist/src/modifications/entities/UpdateEntityOrderByModification.js.map +1 -0
- package/dist/src/modifications/entities/index.d.ts +1 -0
- package/dist/src/modifications/entities/index.d.ts.map +1 -1
- package/dist/src/modifications/entities/index.js +1 -0
- package/dist/src/modifications/entities/index.js.map +1 -1
- package/dist/src/modifications/fields/RemoveFieldModification.js.map +1 -1
- package/dist/src/modifications/fields/UpdateFieldNameModification.d.ts +4 -5
- package/dist/src/modifications/fields/UpdateFieldNameModification.d.ts.map +1 -1
- package/dist/src/modifications/fields/UpdateFieldNameModification.js +18 -27
- package/dist/src/modifications/fields/UpdateFieldNameModification.js.map +1 -1
- package/dist/src/modifications/indexes/CreateIndexModification.d.ts +5 -5
- package/dist/src/modifications/indexes/CreateIndexModification.d.ts.map +1 -1
- package/dist/src/modifications/indexes/CreateIndexModification.js +24 -35
- package/dist/src/modifications/indexes/CreateIndexModification.js.map +1 -1
- package/dist/src/modifications/indexes/RemoveIndexModification.d.ts +12 -6
- package/dist/src/modifications/indexes/RemoveIndexModification.d.ts.map +1 -1
- package/dist/src/modifications/indexes/RemoveIndexModification.js +36 -10
- package/dist/src/modifications/indexes/RemoveIndexModification.js.map +1 -1
- package/dist/src/modifications/indexes/utils.d.ts +7 -0
- package/dist/src/modifications/indexes/utils.d.ts.map +1 -0
- package/dist/src/modifications/indexes/utils.js +33 -0
- package/dist/src/modifications/indexes/utils.js.map +1 -0
- package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts +3 -4
- package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts.map +1 -1
- package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js +10 -10
- package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js.map +1 -1
- package/dist/src/modifications/relations/ConvertOneToManyRelationModification.d.ts +3 -4
- package/dist/src/modifications/relations/ConvertOneToManyRelationModification.d.ts.map +1 -1
- package/dist/src/modifications/relations/ConvertOneToManyRelationModification.js +14 -12
- package/dist/src/modifications/relations/ConvertOneToManyRelationModification.js.map +1 -1
- package/dist/src/modifications/relations/CreateRelationModification.d.ts +3 -4
- package/dist/src/modifications/relations/CreateRelationModification.d.ts.map +1 -1
- package/dist/src/modifications/relations/CreateRelationModification.js +14 -26
- package/dist/src/modifications/relations/CreateRelationModification.js.map +1 -1
- package/dist/src/modifications/relations/ToggleJunctionEventLogModification.d.ts +3 -4
- package/dist/src/modifications/relations/ToggleJunctionEventLogModification.d.ts.map +1 -1
- package/dist/src/modifications/relations/ToggleJunctionEventLogModification.js +4 -5
- package/dist/src/modifications/relations/ToggleJunctionEventLogModification.js.map +1 -1
- package/dist/src/modifications/relations/UpdateRelationOnDeleteModification.d.ts +2 -2
- package/dist/src/modifications/relations/UpdateRelationOnDeleteModification.d.ts.map +1 -1
- package/dist/src/modifications/relations/UpdateRelationOnDeleteModification.js +20 -1
- package/dist/src/modifications/relations/UpdateRelationOnDeleteModification.js.map +1 -1
- package/dist/src/modifications/relations/helpers.d.ts +13 -0
- package/dist/src/modifications/relations/helpers.d.ts.map +1 -0
- package/dist/src/modifications/relations/helpers.js +29 -0
- package/dist/src/modifications/relations/helpers.js.map +1 -0
- package/dist/src/modifications/upgrade/RemoveIndexNamesModification.d.ts +19 -0
- package/dist/src/modifications/upgrade/RemoveIndexNamesModification.d.ts.map +1 -0
- package/dist/src/modifications/upgrade/RemoveIndexNamesModification.js +40 -0
- package/dist/src/modifications/upgrade/RemoveIndexNamesModification.js.map +1 -0
- package/dist/src/modifications/utils/createJunctionTable.d.ts +2 -3
- package/dist/src/modifications/utils/createJunctionTable.d.ts.map +1 -1
- package/dist/src/modifications/utils/createJunctionTable.js +4 -6
- package/dist/src/modifications/utils/createJunctionTable.js.map +1 -1
- package/dist/src/modifications/utils/schemaUpdateUtils.d.ts +2 -4
- package/dist/src/modifications/utils/schemaUpdateUtils.d.ts.map +1 -1
- package/dist/src/modifications/utils/schemaUpdateUtils.js +5 -20
- package/dist/src/modifications/utils/schemaUpdateUtils.js.map +1 -1
- package/dist/src/modifications/utils/stringArrayEquals.d.ts +2 -0
- package/dist/src/modifications/utils/stringArrayEquals.d.ts.map +1 -0
- package/dist/src/modifications/utils/stringArrayEquals.js +9 -0
- package/dist/src/modifications/utils/stringArrayEquals.js.map +1 -0
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/src/utils/PartialEntity.d.ts +5 -3
- package/dist/src/utils/PartialEntity.d.ts.map +1 -1
- package/dist/tests/cases/integration/convertOneHasManyToManyHasManyRelation.test.js +1 -1
- package/dist/tests/cases/integration/convertOneToManyRelation.test.js +5 -5
- package/dist/tests/cases/integration/convertOneToManyRelation.test.js.map +1 -1
- package/dist/tests/cases/integration/createAndDropIndex.test.js +4 -4
- package/dist/tests/cases/integration/createAndDropIndex.test.js.map +1 -1
- package/dist/tests/cases/integration/createEntity.test.js +6 -9
- package/dist/tests/cases/integration/createEntity.test.js.map +1 -1
- package/dist/tests/cases/integration/createManyHasMany.test.js +3 -3
- package/dist/tests/cases/integration/createManyHasOne.test.js +4 -4
- package/dist/tests/cases/integration/createManyHasOne.test.js.map +1 -1
- package/dist/tests/cases/integration/createOneHasMany.test.js +6 -9
- package/dist/tests/cases/integration/createOneHasMany.test.js.map +1 -1
- package/dist/tests/cases/integration/createOneHasOne.test.js +6 -6
- package/dist/tests/cases/integration/createRelationInverseSide.test.js +1 -1
- package/dist/tests/cases/integration/createRelationInverseSide.test.js.map +1 -1
- package/dist/tests/cases/integration/createView.test.js +6 -6
- package/dist/tests/cases/integration/removeField.test.js +6 -6
- package/dist/tests/cases/integration/removeField.test.js.map +1 -1
- package/dist/tests/cases/integration/updateColumnDefinition.test.js +4 -4
- package/dist/tests/cases/integration/updateEntityName.test.js +6 -5
- package/dist/tests/cases/integration/updateEntityName.test.js.map +1 -1
- package/dist/tests/cases/integration/updateEntityOrderBy.test.d.ts +2 -0
- package/dist/tests/cases/integration/updateEntityOrderBy.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/updateEntityOrderBy.test.js +57 -0
- package/dist/tests/cases/integration/updateEntityOrderBy.test.js.map +1 -0
- package/dist/tests/cases/integration/updateFieldName.test.js +8 -7
- package/dist/tests/cases/integration/updateFieldName.test.js.map +1 -1
- package/dist/tests/cases/integration/updateRelationOnDelete.test.js +2 -1
- package/dist/tests/cases/integration/updateRelationOnDelete.test.js.map +1 -1
- package/dist/tests/cases/integration/updateView.test.js +18 -18
- package/dist/tests/scripts/checkCreateConsistentMigrations.js +1 -1
- 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 +12 -8
- package/dist/tests/src/tests.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -7
- package/src/MigrationCreator.ts +1 -1
- package/src/MigrationDescriber.ts +11 -9
- package/src/MigrationFilesManager.ts +1 -1
- package/src/MigrationsResolver.ts +1 -1
- package/src/SchemaDiffer.ts +23 -12
- package/src/SchemaMigrator.ts +1 -3
- package/src/index.ts +1 -1
- package/src/modifications/ModificationHandler.ts +10 -5
- package/src/modifications/ModificationHandlerFactory.ts +24 -11
- package/src/modifications/ModificationVersions.ts +4 -2
- package/src/modifications/actions/CreateTargetModification.ts +46 -0
- package/src/modifications/actions/CreateTriggerModification.ts +46 -0
- package/src/modifications/actions/RemoveTargetModification.ts +46 -0
- package/src/modifications/actions/RemoveTriggerModification.ts +46 -0
- package/src/modifications/actions/UpdateTargetModification.ts +51 -0
- package/src/modifications/actions/UpdateTriggerModification.ts +49 -0
- package/src/modifications/actions/index.ts +3 -0
- package/src/modifications/columns/UpdateColumnDefinitionModification.ts +1 -2
- package/src/modifications/constraints/CreateUniqueConstraintModification.ts +31 -40
- package/src/modifications/constraints/RemoveUniqueConstraintModification.ts +60 -15
- package/src/modifications/constraints/utils.ts +36 -0
- package/src/modifications/entities/CreateEntityModification.ts +9 -8
- package/src/modifications/entities/CreateViewModification.ts +4 -3
- package/src/modifications/entities/RemoveEntityModification.ts +5 -5
- package/src/modifications/entities/ToggleEventLogModification.ts +4 -3
- package/src/modifications/entities/UpdateEntityNameModification.ts +10 -25
- package/src/modifications/entities/UpdateEntityOrderByModification.ts +68 -0
- package/src/modifications/entities/index.ts +1 -0
- package/src/modifications/fields/RemoveFieldModification.ts +1 -1
- package/src/modifications/fields/UpdateFieldNameModification.ts +33 -39
- package/src/modifications/indexes/CreateIndexModification.ts +35 -41
- package/src/modifications/indexes/RemoveIndexModification.ts +57 -17
- package/src/modifications/indexes/utils.ts +30 -0
- package/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.ts +7 -19
- package/src/modifications/relations/ConvertOneToManyRelationModification.ts +21 -22
- package/src/modifications/relations/CreateRelationModification.ts +21 -49
- package/src/modifications/relations/ToggleJunctionEventLogModification.ts +4 -5
- package/src/modifications/relations/UpdateRelationOnDeleteModification.ts +30 -3
- package/src/modifications/relations/helpers.ts +39 -0
- package/src/modifications/upgrade/RemoveIndexNamesModification.ts +46 -0
- package/src/modifications/utils/createJunctionTable.ts +8 -8
- package/src/modifications/utils/schemaUpdateUtils.ts +5 -17
- package/src/modifications/utils/stringArrayEquals.ts +4 -0
- package/src/tsconfig.json +4 -12
- package/src/utils/PartialEntity.ts +7 -1
- package/tests/cases/integration/convertOneHasManyToManyHasManyRelation.test.ts +1 -1
- package/tests/cases/integration/convertOneToManyRelation.test.ts +5 -5
- package/tests/cases/integration/createAndDropIndex.test.ts +4 -4
- package/tests/cases/integration/createEntity.test.ts +6 -9
- package/tests/cases/integration/createManyHasMany.test.ts +3 -3
- package/tests/cases/integration/createManyHasOne.test.ts +4 -4
- package/tests/cases/integration/createOneHasMany.test.ts +6 -9
- package/tests/cases/integration/createOneHasOne.test.ts +6 -6
- package/tests/cases/integration/createRelationInverseSide.test.ts +1 -1
- package/tests/cases/integration/createView.test.ts +6 -6
- package/tests/cases/integration/removeField.test.ts +6 -6
- package/tests/cases/integration/updateColumnDefinition.test.ts +4 -4
- package/tests/cases/integration/updateEntityName.test.ts +7 -5
- package/tests/cases/integration/updateEntityOrderBy.test.ts +43 -0
- package/tests/cases/integration/updateFieldName.test.ts +9 -7
- package/tests/cases/integration/updateRelationOnDelete.test.ts +2 -1
- package/tests/cases/integration/updateView.test.ts +18 -18
- package/tests/scripts/checkCreateConsistentMigrations.ts +1 -1
- package/tests/src/tests.ts +18 -15
- package/tests/tsconfig.json +2 -6
- package/dist/src/MigrationVersionHelper.d.ts +0 -9
- package/dist/src/MigrationVersionHelper.d.ts.map +0 -1
- package/dist/src/MigrationVersionHelper.js +0 -45
- package/dist/src/MigrationVersionHelper.js.map +0 -1
- package/dist/src/modifications/utils/renameConstraintsHelper.d.ts +0 -8
- package/dist/src/modifications/utils/renameConstraintsHelper.d.ts.map +0 -1
- package/dist/src/modifications/utils/renameConstraintsHelper.js +0 -31
- package/dist/src/modifications/utils/renameConstraintsHelper.js.map +0 -1
- package/dist/src/modifications/utils/schemaMeta.d.ts +0 -8
- package/dist/src/modifications/utils/schemaMeta.d.ts.map +0 -1
- package/dist/src/modifications/utils/schemaMeta.js +0 -13
- package/dist/src/modifications/utils/schemaMeta.js.map +0 -1
- package/dist/tests/cases/integration/takenIndexName.test.d.ts +0 -2
- package/dist/tests/cases/integration/takenIndexName.test.d.ts.map +0 -1
- package/dist/tests/cases/integration/takenIndexName.test.js +0 -307
- package/dist/tests/cases/integration/takenIndexName.test.js.map +0 -1
- package/src/MigrationVersionHelper.ts +0 -46
- package/src/modifications/utils/renameConstraintsHelper.ts +0 -34
- package/src/modifications/utils/schemaMeta.ts +0 -18
- package/tests/cases/integration/takenIndexName.test.ts +0 -314
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
createModificationType,
|
|
6
6
|
Differ,
|
|
7
7
|
ModificationHandler,
|
|
8
|
-
|
|
8
|
+
ModificationHandlerCreateSqlOptions,
|
|
9
9
|
} from '../ModificationHandler'
|
|
10
10
|
import {
|
|
11
11
|
createEventTrigger,
|
|
@@ -22,11 +22,10 @@ export class ToggleJunctionEventLogModificationHandler implements ModificationHa
|
|
|
22
22
|
constructor(
|
|
23
23
|
private readonly data: ToggleJunctionEventLogModificationData,
|
|
24
24
|
private readonly schema: Schema,
|
|
25
|
-
private readonly options: ModificationHandlerOptions,
|
|
26
25
|
) {
|
|
27
26
|
}
|
|
28
27
|
|
|
29
|
-
public createSql(builder: MigrationBuilder): void {
|
|
28
|
+
public createSql(builder: MigrationBuilder, { systemSchema }: ModificationHandlerCreateSqlOptions): void {
|
|
30
29
|
const entity = this.schema.model.entities[this.data.entityName]
|
|
31
30
|
const relation = entity.fields[this.data.fieldName]
|
|
32
31
|
if (!isRelation(relation) || relation.type !== Model.RelationType.ManyHasMany || !isOwningRelation(relation)) {
|
|
@@ -38,8 +37,8 @@ export class ToggleJunctionEventLogModificationHandler implements ModificationHa
|
|
|
38
37
|
relation.joiningTable.joiningColumn.columnName,
|
|
39
38
|
relation.joiningTable.inverseJoiningColumn.columnName,
|
|
40
39
|
]
|
|
41
|
-
createEventTrigger(builder,
|
|
42
|
-
createEventTrxTrigger(builder,
|
|
40
|
+
createEventTrigger(builder, systemSchema, tableName, primaryColumns)
|
|
41
|
+
createEventTrxTrigger(builder, systemSchema, tableName)
|
|
43
42
|
} else {
|
|
44
43
|
dropEventTrigger(builder, tableName)
|
|
45
44
|
dropEventTrxTrigger(builder, tableName)
|
|
@@ -1,14 +1,41 @@
|
|
|
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
|
+
ModificationHandlerCreateSqlOptions,
|
|
9
|
+
} from '../ModificationHandler'
|
|
5
10
|
import { isIt } from '../../utils/isIt'
|
|
6
11
|
import { updateRelations } from '../utils/diffUtils'
|
|
12
|
+
import { acceptRelationTypeVisitor } from '@contember/schema-utils'
|
|
13
|
+
import { addForeignKeyConstraint } from './helpers'
|
|
7
14
|
|
|
8
15
|
export class UpdateRelationOnDeleteModificationHandler implements ModificationHandler<UpdateRelationOnDeleteModificationData> {
|
|
9
|
-
constructor(
|
|
16
|
+
constructor(
|
|
17
|
+
private readonly data: UpdateRelationOnDeleteModificationData,
|
|
18
|
+
private readonly schema: Schema,
|
|
19
|
+
) {}
|
|
10
20
|
|
|
11
|
-
public createSql(builder: MigrationBuilder): void {
|
|
21
|
+
public createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {
|
|
22
|
+
const entity = this.schema.model.entities[this.data.entityName]
|
|
23
|
+
if (entity.view) {
|
|
24
|
+
return
|
|
25
|
+
}
|
|
26
|
+
acceptRelationTypeVisitor(this.schema.model, entity, this.data.fieldName, {
|
|
27
|
+
visitManyHasOne: ({ entity, relation, targetEntity }) => {
|
|
28
|
+
addForeignKeyConstraint({ builder, entity, targetEntity, relation, recreate: true, databaseMetadata, invalidateDatabaseMetadata })
|
|
29
|
+
},
|
|
30
|
+
visitOneHasOneOwning: ({ entity, relation, targetEntity }) => {
|
|
31
|
+
addForeignKeyConstraint({ builder, entity, targetEntity, relation, recreate: true, databaseMetadata, invalidateDatabaseMetadata })
|
|
32
|
+
},
|
|
33
|
+
visitOneHasMany: () => {},
|
|
34
|
+
visitOneHasOneInverse: () => {},
|
|
35
|
+
visitManyHasManyOwning: () => {},
|
|
36
|
+
visitManyHasManyInverse: () => {},
|
|
37
|
+
})
|
|
38
|
+
}
|
|
12
39
|
|
|
13
40
|
public getSchemaUpdater(): SchemaUpdater {
|
|
14
41
|
const { entityName, fieldName, onDelete } = this.data
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
|
+
import { Model } from '@contember/schema'
|
|
3
|
+
import { wrapIdentifier } from '../../utils/dbHelpers'
|
|
4
|
+
import { SchemaDatabaseMetadata } from '@contember/schema-utils'
|
|
5
|
+
|
|
6
|
+
export const addForeignKeyConstraint = ({ builder, entity, relation, targetEntity, recreate = false, databaseMetadata, invalidateDatabaseMetadata }: {
|
|
7
|
+
recreate?: boolean
|
|
8
|
+
builder: MigrationBuilder
|
|
9
|
+
entity: Model.Entity
|
|
10
|
+
targetEntity: Model.Entity
|
|
11
|
+
relation: Model.OneHasOneOwningRelation | Model.ManyHasOneRelation
|
|
12
|
+
databaseMetadata: SchemaDatabaseMetadata
|
|
13
|
+
invalidateDatabaseMetadata: () => void
|
|
14
|
+
}) => {
|
|
15
|
+
if (recreate) {
|
|
16
|
+
const fkNames = databaseMetadata.getForeignKeyConstraintNames(
|
|
17
|
+
{
|
|
18
|
+
fromTable: entity.tableName,
|
|
19
|
+
fromColumn: relation.joiningColumn.columnName,
|
|
20
|
+
toTable: targetEntity.tableName,
|
|
21
|
+
toColumn: targetEntity.primaryColumn,
|
|
22
|
+
},
|
|
23
|
+
)
|
|
24
|
+
for (const name of fkNames) {
|
|
25
|
+
builder.sql(`ALTER TABLE ${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(name)}`)
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const onDelete = ({
|
|
30
|
+
[Model.OnDelete.setNull]: 'SET NULL',
|
|
31
|
+
[Model.OnDelete.cascade]: 'CASCADE',
|
|
32
|
+
[Model.OnDelete.restrict]: 'NO ACTION',
|
|
33
|
+
} as const)[relation.joiningColumn.onDelete]
|
|
34
|
+
builder.sql(`ALTER TABLE ${wrapIdentifier(entity.tableName)}
|
|
35
|
+
ADD FOREIGN KEY (${wrapIdentifier(relation.joiningColumn.columnName)})
|
|
36
|
+
REFERENCES ${wrapIdentifier(targetEntity.tableName)}(${wrapIdentifier(targetEntity.primaryColumn)}) ON DELETE ${onDelete} DEFERRABLE INITIALLY IMMEDIATE`)
|
|
37
|
+
|
|
38
|
+
invalidateDatabaseMetadata()
|
|
39
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Schema } from '@contember/schema'
|
|
2
|
+
import { SchemaUpdater, updateEveryEntity, updateModel } from '../utils/schemaUpdateUtils'
|
|
3
|
+
import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
|
|
4
|
+
|
|
5
|
+
export class RemoveIndexNamesModificationHandler implements ModificationHandler<RemoveIndexNamesModificationData> {
|
|
6
|
+
constructor() {}
|
|
7
|
+
|
|
8
|
+
public createSql(): void {
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
public getSchemaUpdater(): SchemaUpdater {
|
|
12
|
+
return updateModel(
|
|
13
|
+
updateEveryEntity(({ entity }) => {
|
|
14
|
+
return {
|
|
15
|
+
...entity,
|
|
16
|
+
indexes: entity.indexes.map(({ name, ...other }) => other),
|
|
17
|
+
unique: entity.unique.map(({ name, ...other }) => other),
|
|
18
|
+
}
|
|
19
|
+
}),
|
|
20
|
+
)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
describe() {
|
|
24
|
+
return { message: `Schema upgrade: remove names of indexes and unique constraints` }
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export const removeIndexNamesModification = createModificationType({
|
|
29
|
+
id: 'removeIndexNames',
|
|
30
|
+
handler: RemoveIndexNamesModificationHandler,
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
export type RemoveIndexNamesModificationData = {}
|
|
35
|
+
|
|
36
|
+
export class RemoveIndexNamesDiffer implements Differ {
|
|
37
|
+
createDiff(originalSchema: Schema) {
|
|
38
|
+
const hasNames = !!Object.values(originalSchema.model.entities).find(it => {
|
|
39
|
+
return it.indexes.find(it => !!it.name) || it.unique.find(it => !!it.name)
|
|
40
|
+
})
|
|
41
|
+
if (hasNames) {
|
|
42
|
+
return [removeIndexNamesModification.createModification({})]
|
|
43
|
+
}
|
|
44
|
+
return []
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { createEventTrigger, createEventTrxTrigger } from './sqlUpdateUtils'
|
|
2
2
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
3
|
-
import { Model } from '@contember/schema'
|
|
3
|
+
import { Model, Schema } from '@contember/schema'
|
|
4
4
|
import { getPrimaryColumnType } from './getPrimaryColumnType'
|
|
5
|
-
import {
|
|
5
|
+
import { wrapIdentifier } from '../../utils/dbHelpers'
|
|
6
6
|
|
|
7
7
|
export const createJunctionTableSql = (
|
|
8
8
|
builder: MigrationBuilder,
|
|
9
9
|
systemSchema: string,
|
|
10
|
-
schema:
|
|
10
|
+
schema: Schema,
|
|
11
11
|
entity: Model.Entity,
|
|
12
12
|
targetEntity: Model.Entity,
|
|
13
13
|
relation: Model.ManyHasManyOwningRelation,
|
|
@@ -33,11 +33,11 @@ export const createJunctionTableSql = (
|
|
|
33
33
|
},
|
|
34
34
|
},
|
|
35
35
|
)
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
|
|
37
|
+
const tableNameId = wrapIdentifier(relation.joiningTable.tableName)
|
|
38
|
+
const columnNameId = primaryColumns.map(wrapIdentifier)
|
|
39
|
+
builder.sql(`ALTER TABLE ${tableNameId} ADD PRIMARY KEY (${columnNameId.join(', ')})`)
|
|
40
|
+
|
|
41
41
|
if (relation.joiningTable.eventLog.enabled) {
|
|
42
42
|
createEventTrigger(builder, systemSchema, relation.joiningTable.tableName, primaryColumns)
|
|
43
43
|
createEventTrxTrigger(builder, systemSchema, relation.joiningTable.tableName)
|
|
@@ -3,10 +3,9 @@ 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'
|
|
7
6
|
|
|
8
7
|
|
|
9
|
-
export type SchemaUpdater = (args: { schema:
|
|
8
|
+
export type SchemaUpdater = (args: { schema: Schema }) => Schema
|
|
10
9
|
export type ModelUpdater = (args: { schema: Schema; model: Model.Schema }) => Model.Schema
|
|
11
10
|
export type EntityUpdater = (args: { schema: Schema; model: Model.Schema; entity: Model.Entity }) => Model.Entity
|
|
12
11
|
export type FieldUpdater<In extends Model.AnyField, Out extends Model.AnyField> = (args: {
|
|
@@ -271,13 +270,13 @@ export const removeField = (entityName: string, fieldName: string, version: numb
|
|
|
271
270
|
updateModel(
|
|
272
271
|
updateEntity(entity.name, ({ entity }) => {
|
|
273
272
|
const { [field.name]: removed, ...fields } = entity.fields
|
|
274
|
-
const indexes =
|
|
275
|
-
const unique =
|
|
273
|
+
const indexes = entity.indexes.filter(index => !index.fields.includes(field.name))
|
|
274
|
+
const unique = entity.unique.filter(index => !index.fields.includes(field.name))
|
|
276
275
|
return {
|
|
277
276
|
...entity,
|
|
278
277
|
fields,
|
|
279
|
-
indexes
|
|
280
|
-
unique
|
|
278
|
+
indexes,
|
|
279
|
+
unique,
|
|
281
280
|
}
|
|
282
281
|
}),
|
|
283
282
|
isRelation(field) && isInverseRelation(field)
|
|
@@ -290,14 +289,3 @@ export const removeField = (entityName: string, fieldName: string, version: numb
|
|
|
290
289
|
)({ schema })
|
|
291
290
|
}
|
|
292
291
|
}
|
|
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
|
-
})
|
package/src/tsconfig.json
CHANGED
|
@@ -6,17 +6,9 @@
|
|
|
6
6
|
"downlevelIteration": true
|
|
7
7
|
},
|
|
8
8
|
"references": [
|
|
9
|
-
{
|
|
10
|
-
|
|
11
|
-
},
|
|
12
|
-
{
|
|
13
|
-
"path": "../../database-migrations/src"
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
"path": "../../schema/src"
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
"path": "../../schema-utils/src"
|
|
20
|
-
}
|
|
9
|
+
{ "path": "../../database-migrations/src" },
|
|
10
|
+
{ "path": "../../engine-common/src" },
|
|
11
|
+
{ "path": "../../schema/src" },
|
|
12
|
+
{ "path": "../../schema-utils/src" }
|
|
21
13
|
]
|
|
22
14
|
}
|
|
@@ -2,4 +2,10 @@ import { Model } from '@contember/schema'
|
|
|
2
2
|
|
|
3
3
|
type SomePartial<E, K extends keyof E> = Omit<E, K> & Partial<Pick<E, K>>
|
|
4
4
|
|
|
5
|
-
export type
|
|
5
|
+
export type PossibleEntityShapeInMigrations =
|
|
6
|
+
& Omit<Model.Entity, 'eventLog' | 'indexes' | 'unique'>
|
|
7
|
+
& {
|
|
8
|
+
eventLog?: Model.Entity['eventLog']
|
|
9
|
+
indexes?: (readonly Model.Index[]) | Readonly<Record<string, Model.Index>>
|
|
10
|
+
unique: (readonly Model.UniqueConstraint[]) | Readonly<Record<string, Model.UniqueConstraint>>
|
|
11
|
+
}
|
|
@@ -67,7 +67,7 @@ testMigrations('convert one has many to many has many', {
|
|
|
67
67
|
"category_id" uuid NOT NULL REFERENCES "category"("id") ON DELETE CASCADE
|
|
68
68
|
);
|
|
69
69
|
ALTER TABLE "article_categories"
|
|
70
|
-
ADD
|
|
70
|
+
ADD PRIMARY KEY ("article_id", "category_id");
|
|
71
71
|
|
|
72
72
|
CREATE TRIGGER "log_event" AFTER INSERT OR UPDATE OR DELETE
|
|
73
73
|
ON "article_categories" FOR EACH ROW
|
|
@@ -24,8 +24,8 @@ testMigrations('convert one has one to many has one relation without inverse sid
|
|
|
24
24
|
},
|
|
25
25
|
],
|
|
26
26
|
sql: SQL`
|
|
27
|
-
CREATE INDEX
|
|
28
|
-
ALTER TABLE "post" DROP CONSTRAINT "
|
|
27
|
+
CREATE INDEX ON "post" ("image_id");
|
|
28
|
+
ALTER TABLE "post" DROP CONSTRAINT "uniq_post_image_id";
|
|
29
29
|
`,
|
|
30
30
|
})
|
|
31
31
|
|
|
@@ -52,8 +52,8 @@ testMigrations('convert one has one to many has one relation with inverse side',
|
|
|
52
52
|
},
|
|
53
53
|
],
|
|
54
54
|
sql: SQL`
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
CREATE INDEX ON "post" ("image_id");
|
|
56
|
+
ALTER TABLE "post" DROP CONSTRAINT "uniq_post_image_id";
|
|
57
|
+
`,
|
|
58
58
|
})
|
|
59
59
|
|
|
@@ -23,10 +23,10 @@ testMigrations('create index', {
|
|
|
23
23
|
{
|
|
24
24
|
modification: 'createIndex',
|
|
25
25
|
entityName: 'Article',
|
|
26
|
-
index: {
|
|
26
|
+
index: { fields: ['title'] },
|
|
27
27
|
},
|
|
28
28
|
],
|
|
29
|
-
sql: SQL`CREATE INDEX
|
|
29
|
+
sql: SQL`CREATE INDEX ON "article" ("title");`,
|
|
30
30
|
})
|
|
31
31
|
|
|
32
32
|
|
|
@@ -37,8 +37,8 @@ testMigrations('drop index', {
|
|
|
37
37
|
{
|
|
38
38
|
modification: 'removeIndex',
|
|
39
39
|
entityName: 'Article',
|
|
40
|
-
|
|
40
|
+
fields: ['title'],
|
|
41
41
|
},
|
|
42
42
|
],
|
|
43
|
-
sql: SQL`DROP INDEX "
|
|
43
|
+
sql: SQL`DROP INDEX "idx_article_title";`,
|
|
44
44
|
})
|
|
@@ -31,11 +31,11 @@ testMigrations('create a table (no relations, unique on column)', {
|
|
|
31
31
|
primary: 'id',
|
|
32
32
|
primaryColumn: 'id',
|
|
33
33
|
tableName: 'author',
|
|
34
|
-
unique:
|
|
34
|
+
unique: [],
|
|
35
35
|
eventLog: {
|
|
36
36
|
enabled: true,
|
|
37
37
|
},
|
|
38
|
-
indexes:
|
|
38
|
+
indexes: [],
|
|
39
39
|
},
|
|
40
40
|
},
|
|
41
41
|
{
|
|
@@ -74,10 +74,7 @@ testMigrations('create a table (no relations, unique on column)', {
|
|
|
74
74
|
{
|
|
75
75
|
modification: 'createUniqueConstraint',
|
|
76
76
|
entityName: 'Author',
|
|
77
|
-
unique: {
|
|
78
|
-
name: 'unique_Author_email_a3e587',
|
|
79
|
-
fields: ['email'],
|
|
80
|
-
},
|
|
77
|
+
unique: { fields: ['email'] },
|
|
81
78
|
},
|
|
82
79
|
],
|
|
83
80
|
sql: SQL`CREATE TABLE "author" (
|
|
@@ -101,7 +98,7 @@ testMigrations('create a table (no relations, unique on column)', {
|
|
|
101
98
|
ALTER TABLE "author"
|
|
102
99
|
ADD "registered_at" date;
|
|
103
100
|
ALTER TABLE "author"
|
|
104
|
-
ADD
|
|
101
|
+
ADD UNIQUE ("email");`,
|
|
105
102
|
})
|
|
106
103
|
|
|
107
104
|
namespace ViewEntityUpdatedSchema {
|
|
@@ -137,12 +134,12 @@ testMigrations('create a view', {
|
|
|
137
134
|
primary: 'id',
|
|
138
135
|
primaryColumn: 'id',
|
|
139
136
|
tableName: 'author',
|
|
140
|
-
unique:
|
|
137
|
+
unique: [],
|
|
141
138
|
view: { sql: "SELECT null as id, 'John' AS name" },
|
|
142
139
|
eventLog: {
|
|
143
140
|
enabled: true,
|
|
144
141
|
},
|
|
145
|
-
indexes:
|
|
142
|
+
indexes: [],
|
|
146
143
|
},
|
|
147
144
|
},
|
|
148
145
|
],
|
|
@@ -30,11 +30,11 @@ testMigrations('create many has many relation (post with categories)', {
|
|
|
30
30
|
primary: 'id',
|
|
31
31
|
primaryColumn: 'id',
|
|
32
32
|
tableName: 'category',
|
|
33
|
-
unique:
|
|
33
|
+
unique: [],
|
|
34
34
|
eventLog: {
|
|
35
35
|
enabled: true,
|
|
36
36
|
},
|
|
37
|
-
indexes:
|
|
37
|
+
indexes: [],
|
|
38
38
|
},
|
|
39
39
|
},
|
|
40
40
|
{
|
|
@@ -93,7 +93,7 @@ testMigrations('create many has many relation (post with categories)', {
|
|
|
93
93
|
"category_id" uuid NOT NULL REFERENCES "category"("id") ON DELETE CASCADE
|
|
94
94
|
);
|
|
95
95
|
ALTER TABLE "post_categories"
|
|
96
|
-
ADD
|
|
96
|
+
ADD PRIMARY KEY ("post_id", "category_id");
|
|
97
97
|
CREATE TRIGGER "log_event"
|
|
98
98
|
AFTER INSERT OR UPDATE OR DELETE
|
|
99
99
|
ON "post_categories"
|
|
@@ -32,11 +32,11 @@ testMigrations('create many has one relation (post with author)', {
|
|
|
32
32
|
primary: 'id',
|
|
33
33
|
primaryColumn: 'id',
|
|
34
34
|
tableName: 'post',
|
|
35
|
-
unique:
|
|
35
|
+
unique: [],
|
|
36
36
|
eventLog: {
|
|
37
37
|
enabled: true,
|
|
38
38
|
},
|
|
39
|
-
indexes:
|
|
39
|
+
indexes: [],
|
|
40
40
|
},
|
|
41
41
|
},
|
|
42
42
|
{
|
|
@@ -84,6 +84,6 @@ testMigrations('create many has one relation (post with author)', {
|
|
|
84
84
|
ALTER TABLE "post"
|
|
85
85
|
ADD "author_id" uuid;
|
|
86
86
|
ALTER TABLE "post"
|
|
87
|
-
ADD
|
|
88
|
-
CREATE INDEX
|
|
87
|
+
ADD FOREIGN KEY ("author_id") REFERENCES "author"("id") ON DELETE CASCADE DEFERRABLE INITIALLY IMMEDIATE;
|
|
88
|
+
CREATE INDEX ON "post" ("author_id");`,
|
|
89
89
|
})
|
|
@@ -33,11 +33,11 @@ testMigrations('create one has many relation (post with locales)', {
|
|
|
33
33
|
primary: 'id',
|
|
34
34
|
primaryColumn: 'id',
|
|
35
35
|
tableName: 'post_locale',
|
|
36
|
-
unique:
|
|
36
|
+
unique: [],
|
|
37
37
|
eventLog: {
|
|
38
38
|
enabled: true,
|
|
39
39
|
},
|
|
40
|
-
indexes:
|
|
40
|
+
indexes: [],
|
|
41
41
|
},
|
|
42
42
|
},
|
|
43
43
|
{
|
|
@@ -92,10 +92,7 @@ testMigrations('create one has many relation (post with locales)', {
|
|
|
92
92
|
{
|
|
93
93
|
modification: 'createUniqueConstraint',
|
|
94
94
|
entityName: 'PostLocale',
|
|
95
|
-
unique: {
|
|
96
|
-
name: 'unique_PostLocale_post_locale_5759e8',
|
|
97
|
-
fields: ['post', 'locale'],
|
|
98
|
-
},
|
|
95
|
+
unique: { fields: ['post', 'locale'] },
|
|
99
96
|
},
|
|
100
97
|
],
|
|
101
98
|
sql: SQL`CREATE TABLE "post_locale" (
|
|
@@ -119,8 +116,8 @@ testMigrations('create one has many relation (post with locales)', {
|
|
|
119
116
|
ALTER TABLE "post_locale"
|
|
120
117
|
ADD "post_id" uuid NOT NULL;
|
|
121
118
|
ALTER TABLE "post_locale"
|
|
122
|
-
ADD
|
|
123
|
-
CREATE INDEX
|
|
119
|
+
ADD FOREIGN KEY ("post_id") REFERENCES "post"("id") ON DELETE NO ACTION DEFERRABLE INITIALLY IMMEDIATE;
|
|
120
|
+
CREATE INDEX ON "post_locale" ("post_id");
|
|
124
121
|
ALTER TABLE "post_locale"
|
|
125
|
-
ADD
|
|
122
|
+
ADD UNIQUE ("post_id", "locale");`,
|
|
126
123
|
})
|
|
@@ -30,11 +30,11 @@ testMigrations('create one has one relation (site with settings)', {
|
|
|
30
30
|
primary: 'id',
|
|
31
31
|
primaryColumn: 'id',
|
|
32
32
|
tableName: 'site',
|
|
33
|
-
unique:
|
|
33
|
+
unique: [],
|
|
34
34
|
eventLog: {
|
|
35
35
|
enabled: true,
|
|
36
36
|
},
|
|
37
|
-
indexes:
|
|
37
|
+
indexes: [],
|
|
38
38
|
},
|
|
39
39
|
},
|
|
40
40
|
{
|
|
@@ -53,11 +53,11 @@ testMigrations('create one has one relation (site with settings)', {
|
|
|
53
53
|
primary: 'id',
|
|
54
54
|
primaryColumn: 'id',
|
|
55
55
|
tableName: 'site_setting',
|
|
56
|
-
unique:
|
|
56
|
+
unique: [],
|
|
57
57
|
eventLog: {
|
|
58
58
|
enabled: true,
|
|
59
59
|
},
|
|
60
|
-
indexes:
|
|
60
|
+
indexes: [],
|
|
61
61
|
},
|
|
62
62
|
},
|
|
63
63
|
{
|
|
@@ -140,8 +140,8 @@ testMigrations('create one has one relation (site with settings)', {
|
|
|
140
140
|
ALTER TABLE "site"
|
|
141
141
|
ADD "setting_id" uuid;
|
|
142
142
|
ALTER TABLE "site"
|
|
143
|
-
ADD
|
|
143
|
+
ADD FOREIGN KEY ("setting_id") REFERENCES "site_setting"("id") ON DELETE NO ACTION DEFERRABLE INITIALLY IMMEDIATE;
|
|
144
144
|
ALTER TABLE "site"
|
|
145
|
-
ADD
|
|
145
|
+
ADD UNIQUE ("setting_id");
|
|
146
146
|
`,
|
|
147
147
|
})
|
|
@@ -56,5 +56,5 @@ testMigrations('create inverse side relation together with changing onDelete beh
|
|
|
56
56
|
},
|
|
57
57
|
},
|
|
58
58
|
],
|
|
59
|
-
sql: SQL
|
|
59
|
+
sql: SQL`ALTER TABLE "post_locale" DROP CONSTRAINT "fk_post_locale_post_id_post_id"; ALTER TABLE "post_locale" ADD FOREIGN KEY ("post_id") REFERENCES "post"("id") ON DELETE NO ACTION DEFERRABLE INITIALLY IMMEDIATE;`,
|
|
60
60
|
})
|
|
@@ -33,7 +33,7 @@ testMigrations('create view', {
|
|
|
33
33
|
name: 'AuthorStats',
|
|
34
34
|
primary: 'id',
|
|
35
35
|
primaryColumn: 'id',
|
|
36
|
-
unique:
|
|
36
|
+
unique: [],
|
|
37
37
|
fields: {
|
|
38
38
|
id: {
|
|
39
39
|
name: 'id',
|
|
@@ -68,7 +68,7 @@ testMigrations('create view', {
|
|
|
68
68
|
eventLog: {
|
|
69
69
|
enabled: true,
|
|
70
70
|
},
|
|
71
|
-
indexes:
|
|
71
|
+
indexes: [],
|
|
72
72
|
},
|
|
73
73
|
},
|
|
74
74
|
{
|
|
@@ -129,8 +129,8 @@ testMigrations('create a relation and a view', {
|
|
|
129
129
|
entity: { name: 'ArticleStats',
|
|
130
130
|
primary: 'id',
|
|
131
131
|
primaryColumn: 'id',
|
|
132
|
-
unique:
|
|
133
|
-
indexes:
|
|
132
|
+
unique: [],
|
|
133
|
+
indexes: [],
|
|
134
134
|
fields: { id: { name: 'id', columnName: 'id', nullable: false, type: 'Uuid', columnType: 'uuid' },
|
|
135
135
|
article: { name: 'article', inversedBy: 'stats', nullable: true, type: 'OneHasOne', target: 'Article', joiningColumn: { columnName: 'article_id', onDelete: 'restrict' } },
|
|
136
136
|
visitCount: { name: 'visitCount', columnName: 'visit_count', nullable: true, type: 'Integer', columnType: 'integer' } },
|
|
@@ -151,8 +151,8 @@ testMigrations('create a relation and a view', {
|
|
|
151
151
|
},
|
|
152
152
|
],
|
|
153
153
|
sql: SQL`ALTER TABLE "article" ADD "category_id" uuid;
|
|
154
|
-
ALTER TABLE "article" ADD
|
|
155
|
-
CREATE INDEX
|
|
154
|
+
ALTER TABLE "article" ADD FOREIGN KEY ("category_id") REFERENCES "category"("id") ON DELETE NO ACTION DEFERRABLE INITIALLY IMMEDIATE;
|
|
155
|
+
CREATE INDEX ON "article" ("category_id");
|
|
156
156
|
CREATE VIEW "article_stats" AS SELECT 1;`,
|
|
157
157
|
})
|
|
158
158
|
|
|
@@ -47,8 +47,8 @@ testMigrations('remove relation (one has many)', {
|
|
|
47
47
|
.buildSchema(),
|
|
48
48
|
diff: [
|
|
49
49
|
{
|
|
50
|
-
constraintName: 'unique_PostLocale_post_locale_5759e8',
|
|
51
50
|
entityName: 'PostLocale',
|
|
51
|
+
fields: ['post', 'locale'],
|
|
52
52
|
modification: 'removeUniqueConstraint',
|
|
53
53
|
},
|
|
54
54
|
{
|
|
@@ -57,7 +57,7 @@ testMigrations('remove relation (one has many)', {
|
|
|
57
57
|
fieldName: 'post',
|
|
58
58
|
},
|
|
59
59
|
],
|
|
60
|
-
sql: SQL`ALTER TABLE "post_locale" DROP CONSTRAINT "
|
|
60
|
+
sql: SQL`ALTER TABLE "post_locale" DROP CONSTRAINT "uniq_post_locale_post_id_locale";
|
|
61
61
|
ALTER TABLE "post_locale" DROP "post_id";`,
|
|
62
62
|
})
|
|
63
63
|
|
|
@@ -173,15 +173,15 @@ testMigrations('test drop index / unique when removing a field', {
|
|
|
173
173
|
}, {
|
|
174
174
|
modification: 'createUniqueConstraint',
|
|
175
175
|
entityName: 'Article',
|
|
176
|
-
unique: {
|
|
176
|
+
unique: { fields: ['title', 'author'] },
|
|
177
177
|
}, {
|
|
178
178
|
modification: 'createIndex',
|
|
179
179
|
entityName: 'Article',
|
|
180
|
-
index: {
|
|
180
|
+
index: { fields: ['title', 'author'] },
|
|
181
181
|
}],
|
|
182
182
|
sql: SQL`ALTER TABLE "article" DROP "author_id";
|
|
183
183
|
ALTER TABLE "article" ADD "author" text;
|
|
184
|
-
ALTER TABLE "article" ADD
|
|
185
|
-
CREATE INDEX
|
|
184
|
+
ALTER TABLE "article" ADD UNIQUE ("title", "author");
|
|
185
|
+
CREATE INDEX ON "article" ("title", "author");`,
|
|
186
186
|
})
|
|
187
187
|
|
|
@@ -124,8 +124,8 @@ testMigrations('recreate view dependent on entity after changing column type', {
|
|
|
124
124
|
name: 'AuthorMetaX',
|
|
125
125
|
primary: 'id',
|
|
126
126
|
primaryColumn: 'id',
|
|
127
|
-
unique:
|
|
128
|
-
indexes:
|
|
127
|
+
unique: [],
|
|
128
|
+
indexes: [],
|
|
129
129
|
fields: {
|
|
130
130
|
id: {
|
|
131
131
|
name: 'id',
|
|
@@ -145,8 +145,8 @@ testMigrations('recreate view dependent on entity after changing column type', {
|
|
|
145
145
|
name: 'AuthorMetaY',
|
|
146
146
|
primary: 'id',
|
|
147
147
|
primaryColumn: 'id',
|
|
148
|
-
unique:
|
|
149
|
-
indexes:
|
|
148
|
+
unique: [],
|
|
149
|
+
indexes: [],
|
|
150
150
|
fields: {
|
|
151
151
|
id: {
|
|
152
152
|
name: 'id',
|
|
@@ -43,12 +43,15 @@ testMigrations('rename entity and table', {
|
|
|
43
43
|
noDiff: true,
|
|
44
44
|
})
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
|
|
47
|
+
testMigrations('rename entity with one-has-one (constraint)', {
|
|
47
48
|
originalSchema: new SchemaBuilder()
|
|
48
|
-
.entity('Author', e => e.
|
|
49
|
+
.entity('Author', e => e.oneHasOne('content', r => r.target('Content')))
|
|
50
|
+
.entity('Content', e => e.column('foo'))
|
|
49
51
|
.buildSchema(),
|
|
50
52
|
updatedSchema: new SchemaBuilder()
|
|
51
|
-
.entity('User', e => e.tableName('author').
|
|
53
|
+
.entity('User', e => e.tableName('author').oneHasOne('content', r => r.target('Content')))
|
|
54
|
+
.entity('Content', e => e.column('foo'))
|
|
52
55
|
.buildSchema(),
|
|
53
56
|
diff: [
|
|
54
57
|
{
|
|
@@ -57,8 +60,7 @@ testMigrations('rename entity with a constraint', {
|
|
|
57
60
|
newEntityName: 'User',
|
|
58
61
|
},
|
|
59
62
|
],
|
|
60
|
-
sql: SQL
|
|
61
|
-
RENAME CONSTRAINT "unique_Author_slug_a645b0" TO "unique_User_slug_d61dea";`,
|
|
63
|
+
sql: SQL``,
|
|
62
64
|
noDiff: true,
|
|
63
65
|
})
|
|
64
66
|
|