@contember/schema-migrations 1.3.0-alpha.6 → 1.3.0-alpha.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/MigrationDescriber.d.ts +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/SchemaDiffer.js +3 -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/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 +2 -0
- package/dist/src/modifications/ModificationHandlerFactory.js.map +1 -1
- package/dist/src/modifications/ModificationVersions.d.ts +4 -3
- package/dist/src/modifications/ModificationVersions.d.ts.map +1 -1
- package/dist/src/modifications/ModificationVersions.js +5 -4
- package/dist/src/modifications/ModificationVersions.js.map +1 -1
- 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 -34
- package/dist/src/modifications/entities/UpdateEntityNameModification.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 -42
- 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 +13 -17
- 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 +3 -3
- package/dist/src/modifications/relations/UpdateRelationOnDeleteModification.js.map +1 -1
- package/dist/src/modifications/relations/helpers.d.ts +4 -1
- package/dist/src/modifications/relations/helpers.d.ts.map +1 -1
- package/dist/src/modifications/relations/helpers.js +20 -17
- package/dist/src/modifications/relations/helpers.js.map +1 -1
- 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 +1 -20
- package/dist/tests/cases/integration/updateEntityName.test.js.map +1 -1
- package/dist/tests/cases/integration/updateFieldName.test.js +1 -21
- package/dist/tests/cases/integration/updateFieldName.test.js.map +1 -1
- package/dist/tests/cases/integration/updateRelationOnDelete.test.js +2 -2
- 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 +10 -4
- package/dist/tests/src/tests.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -7
- package/src/MigrationDescriber.ts +11 -9
- package/src/SchemaDiffer.ts +3 -3
- package/src/SchemaMigrator.ts +1 -3
- package/src/modifications/ModificationHandler.ts +10 -5
- package/src/modifications/ModificationHandlerFactory.ts +12 -11
- package/src/modifications/ModificationVersions.ts +4 -3
- 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 -46
- package/src/modifications/fields/RemoveFieldModification.ts +1 -1
- package/src/modifications/fields/UpdateFieldNameModification.ts +30 -57
- 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 +20 -35
- package/src/modifications/relations/ToggleJunctionEventLogModification.ts +4 -5
- package/src/modifications/relations/UpdateRelationOnDeleteModification.ts +13 -5
- package/src/modifications/relations/helpers.ts +27 -22
- 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 +0 -1
- 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 +1 -20
- package/tests/cases/integration/updateFieldName.test.ts +1 -21
- package/tests/cases/integration/updateRelationOnDelete.test.ts +2 -2
- package/tests/cases/integration/updateView.test.ts +18 -18
- package/tests/scripts/checkCreateConsistentMigrations.ts +1 -1
- package/tests/src/tests.ts +13 -8
- 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/modifications/utils/renameConstraintsHelper.ts +0 -34
- package/src/modifications/utils/schemaMeta.ts +0 -18
- package/tests/cases/integration/takenIndexName.test.ts +0 -314
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
createModificationType,
|
|
6
6
|
Differ,
|
|
7
7
|
ModificationHandler,
|
|
8
|
+
ModificationHandlerCreateSqlOptions,
|
|
8
9
|
ModificationHandlerOptions,
|
|
9
10
|
} from '../ModificationHandler'
|
|
10
11
|
import {
|
|
@@ -23,14 +24,14 @@ export class ToggleEventLogModificationHandler implements ModificationHandler<To
|
|
|
23
24
|
) {
|
|
24
25
|
}
|
|
25
26
|
|
|
26
|
-
public createSql(builder: MigrationBuilder): void {
|
|
27
|
+
public createSql(builder: MigrationBuilder, { systemSchema }: ModificationHandlerCreateSqlOptions): void {
|
|
27
28
|
const entity = this.schema.model.entities[this.data.entityName]
|
|
28
29
|
if (entity.view) {
|
|
29
30
|
return
|
|
30
31
|
}
|
|
31
32
|
if (this.data.enabled) {
|
|
32
|
-
createEventTrigger(builder,
|
|
33
|
-
createEventTrxTrigger(builder,
|
|
33
|
+
createEventTrigger(builder, systemSchema, entity.tableName, [entity.primaryColumn])
|
|
34
|
+
createEventTrxTrigger(builder, systemSchema, entity.tableName)
|
|
34
35
|
} else {
|
|
35
36
|
dropEventTrigger(builder, entity.tableName)
|
|
36
37
|
dropEventTrxTrigger(builder, entity.tableName)
|
|
@@ -5,32 +5,29 @@ import {
|
|
|
5
5
|
updateAcl,
|
|
6
6
|
updateAclEntities,
|
|
7
7
|
updateAclEveryRole,
|
|
8
|
-
updateEntity,
|
|
9
8
|
updateEveryEntity,
|
|
10
9
|
updateEveryField,
|
|
11
10
|
updateModel,
|
|
12
11
|
updateSchema,
|
|
13
12
|
} from '../utils/schemaUpdateUtils'
|
|
14
|
-
import { createModificationType, ModificationHandler, ModificationHandlerOptions } from '../ModificationHandler'
|
|
15
|
-
import { isIt } from '../../utils/isIt'
|
|
16
13
|
import {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
14
|
+
createModificationType,
|
|
15
|
+
ModificationHandler,
|
|
16
|
+
ModificationHandlerCreateSqlOptions,
|
|
17
|
+
ModificationHandlerOptions,
|
|
18
|
+
} from '../ModificationHandler'
|
|
19
|
+
import { isIt } from '../../utils/isIt'
|
|
20
|
+
import { VERSION_ACL_PATCH } from '../ModificationVersions'
|
|
22
21
|
import { NoopModification } from '../NoopModification'
|
|
23
|
-
import { renameConstraintSchemaUpdater, renameConstraintsSqlBuilder } from '../utils/renameConstraintsHelper'
|
|
24
22
|
import { changeValue } from '../utils/valueUtils'
|
|
25
23
|
import { updateEntityTableNameModification } from './UpdateEntityTableNameModification'
|
|
26
|
-
import { SchemaWithMeta } from '../utils/schemaMeta'
|
|
27
24
|
|
|
28
25
|
export class UpdateEntityNameModificationHandler implements ModificationHandler<UpdateEntityNameModificationData> {
|
|
29
26
|
private subModification: ModificationHandler<any>
|
|
30
27
|
|
|
31
28
|
constructor(
|
|
32
29
|
private readonly data: UpdateEntityNameModificationData,
|
|
33
|
-
private readonly schema:
|
|
30
|
+
private readonly schema: Schema,
|
|
34
31
|
private readonly options: ModificationHandlerOptions,
|
|
35
32
|
) {
|
|
36
33
|
this.subModification = data.tableName
|
|
@@ -42,29 +39,8 @@ export class UpdateEntityNameModificationHandler implements ModificationHandler<
|
|
|
42
39
|
: new NoopModification()
|
|
43
40
|
}
|
|
44
41
|
|
|
45
|
-
public createSql(builder: MigrationBuilder): void {
|
|
46
|
-
|
|
47
|
-
if (!entity.view && this.options.formatVersion >= VERSION_UPDATE_CONSTRAINT_NAME) {
|
|
48
|
-
renameConstraintsSqlBuilder(builder, entity, this.getNewConstraintName.bind(this))
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (this.options.formatVersion >= VERSION_UPDATE_CONSTRAINT_NAME_ONE_HAS_ONE) {
|
|
52
|
-
acceptEveryFieldVisitor(this.schema.model, this.data.entityName, {
|
|
53
|
-
visitColumn: () => {},
|
|
54
|
-
visitManyHasManyOwning: () => {},
|
|
55
|
-
visitManyHasManyInverse: () => {},
|
|
56
|
-
visitOneHasOneInverse: () => {},
|
|
57
|
-
visitManyHasOne: () => {},
|
|
58
|
-
visitOneHasMany: () => {},
|
|
59
|
-
visitOneHasOneOwning: ({ relation }) => {
|
|
60
|
-
const uniqueConstraintName = NamingHelper.createUniqueConstraintName(entity.name, [relation.name])
|
|
61
|
-
const newUniqueConstraintName = NamingHelper.createUniqueConstraintName(this.data.newEntityName, [relation.name])
|
|
62
|
-
builder.renameConstraint(entity.tableName, uniqueConstraintName, newUniqueConstraintName)
|
|
63
|
-
},
|
|
64
|
-
})
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
this.subModification.createSql(builder)
|
|
42
|
+
public createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {
|
|
43
|
+
this.subModification.createSql(builder, options)
|
|
68
44
|
}
|
|
69
45
|
|
|
70
46
|
public getSchemaUpdater(): SchemaUpdater {
|
|
@@ -79,9 +55,6 @@ export class UpdateEntityNameModificationHandler implements ModificationHandler<
|
|
|
79
55
|
return field
|
|
80
56
|
}),
|
|
81
57
|
),
|
|
82
|
-
this.options.formatVersion >= VERSION_UPDATE_CONSTRAINT_NAME
|
|
83
|
-
? updateEntity(this.data.entityName, renameConstraintSchemaUpdater(this.getNewConstraintName.bind(this)))
|
|
84
|
-
: undefined,
|
|
85
58
|
({ model }) => {
|
|
86
59
|
const { [this.data.entityName]: renamed, ...entities } = model.entities
|
|
87
60
|
const newEntities = {
|
|
@@ -133,15 +106,6 @@ export class UpdateEntityNameModificationHandler implements ModificationHandler<
|
|
|
133
106
|
)
|
|
134
107
|
}
|
|
135
108
|
|
|
136
|
-
private getNewConstraintName(constraint: Model.UniqueConstraint): string | null {
|
|
137
|
-
const generatedName = NamingHelper.createUniqueConstraintName(this.data.entityName, constraint.fields)
|
|
138
|
-
const isGenerated = constraint.name === generatedName
|
|
139
|
-
if (!isGenerated) {
|
|
140
|
-
null
|
|
141
|
-
}
|
|
142
|
-
return NamingHelper.createUniqueConstraintName(this.data.newEntityName, constraint.fields)
|
|
143
|
-
}
|
|
144
|
-
|
|
145
109
|
describe() {
|
|
146
110
|
return { message: `Change entity name from ${this.data.entityName} to ${this.data.newEntityName}` }
|
|
147
111
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { acceptFieldVisitor, isInverseRelation, isRelation
|
|
1
|
+
import { acceptFieldVisitor, isInverseRelation, isRelation } from '@contember/schema-utils'
|
|
2
2
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
3
3
|
import { Schema } from '@contember/schema'
|
|
4
4
|
import { removeField, SchemaUpdater } from '../utils/schemaUpdateUtils'
|
|
@@ -13,25 +13,28 @@ import {
|
|
|
13
13
|
updateModel,
|
|
14
14
|
updateSchema,
|
|
15
15
|
} from '../utils/schemaUpdateUtils'
|
|
16
|
-
import {
|
|
17
|
-
|
|
16
|
+
import {
|
|
17
|
+
createModificationType,
|
|
18
|
+
ModificationHandler,
|
|
19
|
+
ModificationHandlerCreateSqlOptions,
|
|
20
|
+
ModificationHandlerOptions,
|
|
21
|
+
} from '../ModificationHandler'
|
|
22
|
+
import { acceptFieldVisitor, PredicateDefinitionProcessor } from '@contember/schema-utils'
|
|
18
23
|
import {
|
|
19
24
|
VERSION_ACL_PATCH,
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
VERSION_UPDATE_CONSTRAINT_FIELDS,
|
|
26
|
+
VERSION_UPDATE_INDEX_FIELDS,
|
|
22
27
|
} from '../ModificationVersions'
|
|
23
|
-
import { renameConstraintSchemaUpdater, renameConstraintsSqlBuilder } from '../utils/renameConstraintsHelper'
|
|
24
28
|
import { changeValue } from '../utils/valueUtils'
|
|
25
29
|
import { updateColumnNameModification } from '../columns'
|
|
26
30
|
import { NoopModification } from '../NoopModification'
|
|
27
|
-
import { SchemaWithMeta } from '../utils/schemaMeta'
|
|
28
31
|
|
|
29
32
|
export class UpdateFieldNameModificationHandler implements ModificationHandler<UpdateFieldNameModificationData> {
|
|
30
33
|
private renameColumnSubModification: ModificationHandler<any> = new NoopModification()
|
|
31
34
|
|
|
32
35
|
constructor(
|
|
33
36
|
private readonly data: UpdateFieldNameModificationData,
|
|
34
|
-
private readonly schema:
|
|
37
|
+
private readonly schema: Schema,
|
|
35
38
|
private readonly options: ModificationHandlerOptions,
|
|
36
39
|
) {
|
|
37
40
|
if (this.data.columnName) {
|
|
@@ -43,57 +46,39 @@ export class UpdateFieldNameModificationHandler implements ModificationHandler<U
|
|
|
43
46
|
}
|
|
44
47
|
}
|
|
45
48
|
|
|
46
|
-
public createSql(builder: MigrationBuilder): void {
|
|
49
|
+
public createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {
|
|
47
50
|
const entity = this.schema.model.entities[this.data.entityName]
|
|
48
51
|
if (entity.view) {
|
|
49
52
|
return
|
|
50
53
|
}
|
|
51
|
-
|
|
52
|
-
renameConstraintsSqlBuilder(builder, entity, this.getNewConstraintName.bind(this))
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
if (this.options.formatVersion >= VERSION_UPDATE_CONSTRAINT_NAME_ONE_HAS_ONE) {
|
|
56
|
-
acceptFieldVisitor(this.schema.model, this.data.entityName, this.data.fieldName, {
|
|
57
|
-
visitColumn: () => {},
|
|
58
|
-
visitManyHasManyOwning: () => {},
|
|
59
|
-
visitManyHasManyInverse: () => {},
|
|
60
|
-
visitOneHasOneInverse: () => {},
|
|
61
|
-
visitManyHasOne: () => {},
|
|
62
|
-
visitOneHasMany: () => {},
|
|
63
|
-
visitOneHasOneOwning: ({ relation }) => {
|
|
64
|
-
const uniqueConstraintName = NamingHelper.createUniqueConstraintName(entity.name, [relation.name])
|
|
65
|
-
const newUniqueConstraintName = NamingHelper.createUniqueConstraintName(entity.name, [this.data.newFieldName])
|
|
66
|
-
builder.renameConstraint(entity.tableName, uniqueConstraintName, newUniqueConstraintName)
|
|
67
|
-
},
|
|
68
|
-
})
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
this.renameColumnSubModification.createSql(builder)
|
|
54
|
+
this.renameColumnSubModification.createSql(builder, options)
|
|
72
55
|
}
|
|
73
56
|
|
|
74
57
|
public getSchemaUpdater(): SchemaUpdater {
|
|
75
|
-
const updateConstraintName =
|
|
76
|
-
this.options.formatVersion >= VERSION_UPDATE_CONSTRAINT_NAME
|
|
77
|
-
? updateEntity(this.data.entityName, renameConstraintSchemaUpdater(this.getNewConstraintName.bind(this)))
|
|
78
|
-
: undefined
|
|
79
58
|
const updateConstraintFields =
|
|
80
|
-
this.options.formatVersion >=
|
|
59
|
+
this.options.formatVersion >= VERSION_UPDATE_CONSTRAINT_FIELDS
|
|
81
60
|
? updateEntity(this.data.entityName, ({ entity }) => {
|
|
82
61
|
return {
|
|
83
62
|
...entity,
|
|
84
|
-
unique:
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
...unique,
|
|
89
|
-
fields: unique.fields.map(changeValue(this.data.fieldName, this.data.newFieldName)),
|
|
90
|
-
},
|
|
91
|
-
]),
|
|
92
|
-
),
|
|
63
|
+
unique: entity.unique.map(unique => ({
|
|
64
|
+
...unique,
|
|
65
|
+
fields: unique.fields.map(changeValue(this.data.fieldName, this.data.newFieldName)),
|
|
66
|
+
})),
|
|
93
67
|
}
|
|
94
68
|
})
|
|
95
69
|
: undefined
|
|
96
|
-
|
|
70
|
+
const updateIndexFields =
|
|
71
|
+
this.options.formatVersion >= VERSION_UPDATE_INDEX_FIELDS
|
|
72
|
+
? updateEntity(this.data.entityName, ({ entity }) => {
|
|
73
|
+
return {
|
|
74
|
+
...entity,
|
|
75
|
+
indexes: entity.indexes.map(unique => ({
|
|
76
|
+
...unique,
|
|
77
|
+
fields: unique.fields.map(changeValue(this.data.fieldName, this.data.newFieldName)),
|
|
78
|
+
})),
|
|
79
|
+
}
|
|
80
|
+
})
|
|
81
|
+
: undefined
|
|
97
82
|
const updateRelationReferences = updateEveryEntity(
|
|
98
83
|
updateEveryField(({ field, entity }) => {
|
|
99
84
|
const isUpdatedRelation = (entity: Model.Entity, relation: Model.AnyRelation | null) => {
|
|
@@ -189,26 +174,14 @@ export class UpdateFieldNameModificationHandler implements ModificationHandler<U
|
|
|
189
174
|
updateAclOp,
|
|
190
175
|
this.renameColumnSubModification.getSchemaUpdater(),
|
|
191
176
|
updateModel(
|
|
192
|
-
updateConstraintName,
|
|
193
177
|
updateConstraintFields,
|
|
178
|
+
updateIndexFields,
|
|
194
179
|
updateRelationReferences,
|
|
195
180
|
updateFieldName,
|
|
196
181
|
),
|
|
197
182
|
)
|
|
198
183
|
}
|
|
199
184
|
|
|
200
|
-
|
|
201
|
-
private getNewConstraintName(constraint: Model.UniqueConstraint): string | null {
|
|
202
|
-
const generatedName = NamingHelper.createUniqueConstraintName(this.data.entityName, constraint.fields)
|
|
203
|
-
const isGenerated = constraint.name === generatedName
|
|
204
|
-
if (!isGenerated) {
|
|
205
|
-
null
|
|
206
|
-
}
|
|
207
|
-
const newFieldNames = constraint.fields.map(changeValue(this.data.fieldName, this.data.newFieldName))
|
|
208
|
-
const newName = NamingHelper.createUniqueConstraintName(this.data.entityName, newFieldNames)
|
|
209
|
-
return newName === constraint.name ? null : newName
|
|
210
|
-
}
|
|
211
|
-
|
|
212
185
|
describe() {
|
|
213
186
|
return { message: `Change field name ${this.data.entityName}.${this.data.fieldName} to ${this.data.newFieldName}` }
|
|
214
187
|
}
|
|
@@ -1,56 +1,47 @@
|
|
|
1
1
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
2
|
import { Model, Schema } from '@contember/schema'
|
|
3
3
|
import { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'
|
|
4
|
-
import {
|
|
5
|
-
|
|
4
|
+
import {
|
|
5
|
+
createModificationType,
|
|
6
|
+
Differ,
|
|
7
|
+
ModificationHandler,
|
|
8
|
+
ModificationHandlerCreateSqlOptions,
|
|
9
|
+
} from '../ModificationHandler'
|
|
10
|
+
import { wrapIdentifier } from '../../utils/dbHelpers'
|
|
11
|
+
import { getIndexColumns } from './utils'
|
|
12
|
+
import deepEqual from 'fast-deep-equal'
|
|
6
13
|
|
|
7
14
|
export class CreateIndexModificationHandler implements ModificationHandler<CreateIndexModificationData> {
|
|
8
15
|
constructor(private readonly data: CreateIndexModificationData, private readonly schema: Schema) {}
|
|
9
16
|
|
|
10
|
-
public createSql(builder: MigrationBuilder): void {
|
|
17
|
+
public createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {
|
|
11
18
|
const entity = this.schema.model.entities[this.data.entityName]
|
|
12
19
|
if (entity.view) {
|
|
13
20
|
return
|
|
14
21
|
}
|
|
15
22
|
const fields = this.data.index.fields
|
|
16
|
-
const columns =
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
},
|
|
21
|
-
visitManyHasOne: ({ relation }) => {
|
|
22
|
-
return relation.joiningColumn.columnName
|
|
23
|
-
},
|
|
24
|
-
visitOneHasOneOwning: ({ relation }) => {
|
|
25
|
-
return relation.joiningColumn.columnName
|
|
26
|
-
},
|
|
27
|
-
visitOneHasMany: () => {
|
|
28
|
-
throw new Error(`Cannot create index on 1:m relation in ${entity.name}.${fieldName}`)
|
|
29
|
-
},
|
|
30
|
-
visitOneHasOneInverse: () => {
|
|
31
|
-
throw new Error(`Cannot create index on 1:1 inverse relation in ${entity.name}.${fieldName}`)
|
|
32
|
-
},
|
|
33
|
-
visitManyHasManyOwning: () => {
|
|
34
|
-
throw new Error(`Cannot create index on m:m relation in ${entity.name}.${fieldName}`)
|
|
35
|
-
},
|
|
36
|
-
visitManyHasManyInverse: () => {
|
|
37
|
-
throw new Error(`Cannot create index on m:m inverse relation in ${entity.name}.${fieldName}`)
|
|
38
|
-
},
|
|
39
|
-
})
|
|
40
|
-
})
|
|
41
|
-
builder.addIndex(entity.tableName, [...columns], {
|
|
42
|
-
name: this.data.index.name,
|
|
23
|
+
const columns = getIndexColumns({
|
|
24
|
+
fields,
|
|
25
|
+
entity,
|
|
26
|
+
model: this.schema.model,
|
|
43
27
|
})
|
|
28
|
+
|
|
29
|
+
const tableNameId = wrapIdentifier(entity.tableName)
|
|
30
|
+
const columnNameIds = columns.map(wrapIdentifier)
|
|
31
|
+
|
|
32
|
+
builder.sql(`CREATE INDEX ON ${tableNameId} (${columnNameIds.join(', ')})`)
|
|
33
|
+
|
|
34
|
+
invalidateDatabaseMetadata()
|
|
44
35
|
}
|
|
45
36
|
|
|
46
37
|
public getSchemaUpdater(): SchemaUpdater {
|
|
47
38
|
return updateModel(
|
|
48
39
|
updateEntity(this.data.entityName, ({ entity }) => ({
|
|
49
40
|
...entity,
|
|
50
|
-
indexes:
|
|
41
|
+
indexes: [
|
|
51
42
|
...entity.indexes,
|
|
52
|
-
|
|
53
|
-
|
|
43
|
+
this.data.index,
|
|
44
|
+
],
|
|
54
45
|
})),
|
|
55
46
|
)
|
|
56
47
|
}
|
|
@@ -67,17 +58,20 @@ export const createIndexModification = createModificationType({
|
|
|
67
58
|
handler: CreateIndexModificationHandler,
|
|
68
59
|
})
|
|
69
60
|
|
|
61
|
+
export interface CreateIndexModificationData {
|
|
62
|
+
entityName: string
|
|
63
|
+
index: Model.Index
|
|
64
|
+
}
|
|
65
|
+
|
|
70
66
|
export class CreateIndexDiffer implements Differ {
|
|
71
67
|
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
72
68
|
return Object.values(updatedSchema.model.entities).flatMap(entity =>
|
|
73
|
-
|
|
74
|
-
.filter(it => !originalSchema.model.entities[entity.name].indexes
|
|
75
|
-
.map(index => createIndexModification.createModification({
|
|
69
|
+
entity.indexes
|
|
70
|
+
.filter(it => !originalSchema.model.entities[entity.name].indexes.find(idx => deepEqual(idx.fields, it.fields)))
|
|
71
|
+
.map(index => createIndexModification.createModification({
|
|
72
|
+
entityName: entity.name,
|
|
73
|
+
index,
|
|
74
|
+
})),
|
|
76
75
|
)
|
|
77
76
|
}
|
|
78
77
|
}
|
|
79
|
-
|
|
80
|
-
export interface CreateIndexModificationData {
|
|
81
|
-
entityName: string
|
|
82
|
-
index: Model.Index
|
|
83
|
-
}
|
|
@@ -1,26 +1,45 @@
|
|
|
1
1
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
2
|
import { Schema } from '@contember/schema'
|
|
3
3
|
import { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
createModificationType,
|
|
6
|
+
Differ,
|
|
7
|
+
ModificationHandler,
|
|
8
|
+
ModificationHandlerCreateSqlOptions,
|
|
9
|
+
} from '../ModificationHandler'
|
|
5
10
|
import deepEqual from 'fast-deep-equal'
|
|
11
|
+
import { getIndexColumns } from './utils'
|
|
12
|
+
import { wrapIdentifier } from '../../utils/dbHelpers'
|
|
6
13
|
|
|
7
14
|
export class RemoveIndexModificationHandler implements ModificationHandler<RemoveIndexModificationData> {
|
|
8
15
|
constructor(private readonly data: RemoveIndexModificationData, private readonly schema: Schema) {}
|
|
9
16
|
|
|
10
|
-
public createSql(builder: MigrationBuilder): void {
|
|
17
|
+
public createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {
|
|
11
18
|
const entity = this.schema.model.entities[this.data.entityName]
|
|
12
19
|
if (entity.view) {
|
|
13
20
|
return
|
|
14
21
|
}
|
|
15
|
-
|
|
16
|
-
|
|
22
|
+
const fields = this.getFields()
|
|
23
|
+
|
|
24
|
+
const columns = getIndexColumns({
|
|
25
|
+
entity,
|
|
26
|
+
fields,
|
|
27
|
+
model: this.schema.model,
|
|
17
28
|
})
|
|
29
|
+
|
|
30
|
+
const indexNames = databaseMetadata.getIndexNames({ tableName: entity.tableName, columnNames: columns })
|
|
31
|
+
|
|
32
|
+
for (const name of indexNames) {
|
|
33
|
+
builder.sql(`DROP INDEX ${wrapIdentifier(name)}`)
|
|
34
|
+
}
|
|
35
|
+
invalidateDatabaseMetadata()
|
|
18
36
|
}
|
|
19
37
|
|
|
20
38
|
public getSchemaUpdater(): SchemaUpdater {
|
|
39
|
+
const fields = this.getFields()
|
|
21
40
|
return updateModel(
|
|
22
41
|
updateEntity(this.data.entityName, ({ entity }) => {
|
|
23
|
-
const
|
|
42
|
+
const indexes = entity.indexes.filter(it => !deepEqual(it.fields, fields))
|
|
24
43
|
return {
|
|
25
44
|
...entity,
|
|
26
45
|
indexes,
|
|
@@ -30,9 +49,20 @@ export class RemoveIndexModificationHandler implements ModificationHandler<Remov
|
|
|
30
49
|
}
|
|
31
50
|
|
|
32
51
|
describe() {
|
|
33
|
-
const fields = this.
|
|
52
|
+
const fields = this.getFields()
|
|
34
53
|
return { message: `Remove index (${fields.join(', ')}) on entity ${this.data.entityName}` }
|
|
35
54
|
}
|
|
55
|
+
|
|
56
|
+
getFields() {
|
|
57
|
+
const entity = this.schema.model.entities[this.data.entityName]
|
|
58
|
+
const fields = 'indexName' in this.data
|
|
59
|
+
? entity.indexes.find(it => it.name === this.data.indexName)?.fields
|
|
60
|
+
: this.data.fields
|
|
61
|
+
if (!fields) {
|
|
62
|
+
throw new Error()
|
|
63
|
+
}
|
|
64
|
+
return fields
|
|
65
|
+
}
|
|
36
66
|
}
|
|
37
67
|
|
|
38
68
|
export const removeIndexModification = createModificationType({
|
|
@@ -41,28 +71,38 @@ export const removeIndexModification = createModificationType({
|
|
|
41
71
|
})
|
|
42
72
|
|
|
43
73
|
|
|
74
|
+
export type RemoveIndexModificationData =
|
|
75
|
+
| {
|
|
76
|
+
entityName: string
|
|
77
|
+
indexName: string
|
|
78
|
+
fields?: never
|
|
79
|
+
}
|
|
80
|
+
| {
|
|
81
|
+
entityName: string
|
|
82
|
+
fields: readonly string[]
|
|
83
|
+
indexName?: never
|
|
84
|
+
}
|
|
85
|
+
|
|
44
86
|
export class RemoveIndexDiffer implements Differ {
|
|
45
87
|
|
|
46
88
|
createDiff(originalSchema: Schema, updatedSchema: Schema) {
|
|
47
89
|
return Object.values(originalSchema.model.entities).flatMap(entity =>
|
|
48
|
-
|
|
90
|
+
entity.indexes
|
|
49
91
|
.filter(
|
|
50
|
-
it =>
|
|
51
|
-
updatedSchema.model.entities[entity.name]
|
|
52
|
-
(!
|
|
53
|
-
|
|
92
|
+
it => {
|
|
93
|
+
const updatedEntity = updatedSchema.model.entities[entity.name]
|
|
94
|
+
if (!updatedEntity) {
|
|
95
|
+
return false
|
|
96
|
+
}
|
|
97
|
+
return !updatedEntity.indexes.find(index => deepEqual(index.fields, it.fields))
|
|
98
|
+
},
|
|
54
99
|
)
|
|
55
100
|
.map(index =>
|
|
56
101
|
removeIndexModification.createModification({
|
|
57
102
|
entityName: entity.name,
|
|
58
|
-
|
|
103
|
+
fields: index.fields,
|
|
59
104
|
}),
|
|
60
105
|
),
|
|
61
106
|
)
|
|
62
107
|
}
|
|
63
108
|
}
|
|
64
|
-
|
|
65
|
-
export interface RemoveIndexModificationData {
|
|
66
|
-
entityName: string
|
|
67
|
-
indexName: string
|
|
68
|
-
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { acceptFieldVisitor } from '@contember/schema-utils'
|
|
2
|
+
import { Model } from '@contember/schema'
|
|
3
|
+
|
|
4
|
+
export const getIndexColumns = ({ entity, fields, model }: { fields: readonly string[]; model: Model.Schema; entity: Model.Entity }) => {
|
|
5
|
+
return fields.map(fieldName => {
|
|
6
|
+
return acceptFieldVisitor(model, entity, fieldName, {
|
|
7
|
+
visitColumn: ({ column }) => {
|
|
8
|
+
return column.columnName
|
|
9
|
+
},
|
|
10
|
+
visitManyHasOne: ({ relation }) => {
|
|
11
|
+
return relation.joiningColumn.columnName
|
|
12
|
+
},
|
|
13
|
+
visitOneHasOneOwning: ({ relation }) => {
|
|
14
|
+
return relation.joiningColumn.columnName
|
|
15
|
+
},
|
|
16
|
+
visitOneHasMany: () => {
|
|
17
|
+
throw new Error(`Cannot create index on 1:m relation in ${entity.name}.${fieldName}`)
|
|
18
|
+
},
|
|
19
|
+
visitOneHasOneInverse: () => {
|
|
20
|
+
throw new Error(`Cannot create index on 1:1 inverse relation in ${entity.name}.${fieldName}`)
|
|
21
|
+
},
|
|
22
|
+
visitManyHasManyOwning: () => {
|
|
23
|
+
throw new Error(`Cannot create index on m:m relation in ${entity.name}.${fieldName}`)
|
|
24
|
+
},
|
|
25
|
+
visitManyHasManyInverse: () => {
|
|
26
|
+
throw new Error(`Cannot create index on m:m inverse relation in ${entity.name}.${fieldName}`)
|
|
27
|
+
},
|
|
28
|
+
})
|
|
29
|
+
})
|
|
30
|
+
}
|
|
@@ -1,33 +1,25 @@
|
|
|
1
1
|
import { MigrationBuilder } from '@contember/database-migrations'
|
|
2
2
|
import { Model, Schema } from '@contember/schema'
|
|
3
|
-
import {
|
|
4
|
-
addField,
|
|
5
|
-
addTakenIndexName,
|
|
6
|
-
SchemaUpdater,
|
|
7
|
-
updateEntity,
|
|
8
|
-
updateModel,
|
|
9
|
-
updateSchema,
|
|
10
|
-
} from '../utils/schemaUpdateUtils'
|
|
3
|
+
import { addField, SchemaUpdater, updateEntity, updateModel, updateSchema } from '../utils/schemaUpdateUtils'
|
|
11
4
|
import {
|
|
12
5
|
createModificationType,
|
|
13
6
|
Differ,
|
|
14
|
-
ModificationHandler,
|
|
7
|
+
ModificationHandler, ModificationHandlerCreateSqlOptions,
|
|
15
8
|
ModificationHandlerOptions,
|
|
16
9
|
} from '../ModificationHandler'
|
|
17
|
-
import { isInverseRelation, isOwningRelation
|
|
10
|
+
import { isInverseRelation, isOwningRelation } from '@contember/schema-utils'
|
|
18
11
|
import { updateRelations } from '../utils/diffUtils'
|
|
19
12
|
import { createJunctionTableSql } from '../utils/createJunctionTable'
|
|
20
|
-
import { wrapIdentifier } from '
|
|
13
|
+
import { wrapIdentifier } from '../../utils/dbHelpers'
|
|
21
14
|
import { normalizeManyHasManyRelation, PartialManyHasManyRelation } from './normalization'
|
|
22
15
|
import { updateFieldNameModification } from '../fields'
|
|
23
|
-
import { SchemaWithMeta } from '../utils/schemaMeta'
|
|
24
16
|
|
|
25
17
|
export class ConvertOneHasManyToManyHasManyRelationModificationHandler implements ModificationHandler<ConvertOneHasManyToManyHasManyRelationModificationData> {
|
|
26
18
|
private subModification: ModificationHandler<any>
|
|
27
19
|
|
|
28
20
|
constructor(
|
|
29
21
|
private readonly data: ConvertOneHasManyToManyHasManyRelationModificationData,
|
|
30
|
-
private readonly schema:
|
|
22
|
+
private readonly schema: Schema,
|
|
31
23
|
private readonly options: ModificationHandlerOptions,
|
|
32
24
|
) {
|
|
33
25
|
this.subModification = updateFieldNameModification.createHandler(
|
|
@@ -41,12 +33,12 @@ export class ConvertOneHasManyToManyHasManyRelationModificationHandler implement
|
|
|
41
33
|
)
|
|
42
34
|
}
|
|
43
35
|
|
|
44
|
-
public createSql(builder: MigrationBuilder): void {
|
|
36
|
+
public createSql(builder: MigrationBuilder, { systemSchema }: ModificationHandlerCreateSqlOptions): void {
|
|
45
37
|
const targetEntity = this.schema.model.entities[this.data.owningSide.target]
|
|
46
38
|
const { relation: oldRelation } = this.getRelation()
|
|
47
39
|
const entity = this.schema.model.entities[this.data.entityName]
|
|
48
40
|
|
|
49
|
-
createJunctionTableSql(builder,
|
|
41
|
+
createJunctionTableSql(builder, systemSchema, this.schema, entity, targetEntity, normalizeManyHasManyRelation(this.data.owningSide))
|
|
50
42
|
const joiningTable = this.data.owningSide.joiningTable
|
|
51
43
|
builder.sql(`
|
|
52
44
|
INSERT INTO ${wrapIdentifier(joiningTable.tableName)} (
|
|
@@ -66,7 +58,6 @@ export class ConvertOneHasManyToManyHasManyRelationModificationHandler implement
|
|
|
66
58
|
this.subModification.getSchemaUpdater(),
|
|
67
59
|
updateModel(updateEntity(entityName, addField(normalizeManyHasManyRelation(this.data.owningSide)))),
|
|
68
60
|
this.data.inverseSide ? updateModel(updateEntity(this.data.owningSide.target, addField(this.data.inverseSide))) : undefined,
|
|
69
|
-
addTakenIndexName(NamingHelper.createJunctionTablePrimaryConstraintName(this.data.owningSide.joiningTable.tableName)),
|
|
70
61
|
)
|
|
71
62
|
}
|
|
72
63
|
|
|
@@ -76,9 +67,6 @@ export class ConvertOneHasManyToManyHasManyRelationModificationHandler implement
|
|
|
76
67
|
}
|
|
77
68
|
}
|
|
78
69
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
70
|
private getRelation(): { entity: Model.Entity; relation: Model.ManyHasOneRelation } {
|
|
83
71
|
const entity = this.schema.model.entities[this.data.entityName]
|
|
84
72
|
const relation = entity.fields[this.data.fieldName]
|