@contember/schema-migrations 1.3.0-alpha.7 → 1.3.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/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.d.ts +1 -1
- package/dist/src/SchemaDiffer.d.ts.map +1 -1
- package/dist/src/SchemaDiffer.js +10 -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 +10 -6
- 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 +3 -2
- 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/CreateColumnModification.d.ts +2 -2
- package/dist/src/modifications/columns/CreateColumnModification.d.ts.map +1 -1
- package/dist/src/modifications/columns/CreateColumnModification.js +14 -24
- package/dist/src/modifications/columns/CreateColumnModification.js.map +1 -1
- package/dist/src/modifications/columns/UpdateColumnDefinitionModification.d.ts +5 -3
- package/dist/src/modifications/columns/UpdateColumnDefinitionModification.d.ts.map +1 -1
- package/dist/src/modifications/columns/UpdateColumnDefinitionModification.js +19 -4
- package/dist/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
- package/dist/src/modifications/columns/columnUtils.d.ts +14 -0
- package/dist/src/modifications/columns/columnUtils.d.ts.map +1 -0
- package/dist/src/modifications/columns/columnUtils.js +29 -0
- package/dist/src/modifications/columns/columnUtils.js.map +1 -0
- 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 +4 -5
- 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/relations/normalization.d.ts +2 -2
- package/dist/src/modifications/relations/normalization.d.ts.map +1 -1
- package/dist/src/modifications/settings/UpdateSettingsModification.d.ts +1 -1
- package/dist/src/modifications/settings/UpdateSettingsModification.d.ts.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 +12 -14
- 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/modifications/utils/viewDependencies.d.ts +1 -1
- package/dist/src/modifications/utils/viewDependencies.d.ts.map +1 -1
- 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/createColumn.test.js +0 -2
- package/dist/tests/cases/integration/createColumn.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 +42 -4
- package/dist/tests/cases/integration/updateColumnDefinition.test.js.map +1 -1
- 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 +8 -9
- package/src/MigrationDescriber.ts +11 -9
- package/src/SchemaDiffer.ts +12 -13
- 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/CreateColumnModification.ts +19 -27
- package/src/modifications/columns/UpdateColumnDefinitionModification.ts +22 -4
- package/src/modifications/columns/columnUtils.ts +35 -0
- 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/createColumn.test.ts +0 -2
- 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 +36 -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
|
@@ -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
|
@@ -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
|
})
|
|
@@ -32,7 +32,6 @@ testMigrations('create a column with default value', {
|
|
|
32
32
|
],
|
|
33
33
|
sql: SQL`ALTER TABLE "author" ADD "name" text;
|
|
34
34
|
UPDATE "author" SET "name" = $pga$unnamed author$pga$;
|
|
35
|
-
SET CONSTRAINTS ALL IMMEDIATE; SET CONSTRAINTS ALL DEFERRED;
|
|
36
35
|
ALTER TABLE "author" ALTER "name" SET NOT NULL;`,
|
|
37
36
|
})
|
|
38
37
|
|
|
@@ -65,6 +64,5 @@ testMigrations('create a column with copy value', {
|
|
|
65
64
|
noDiff: true,
|
|
66
65
|
sql: SQL`ALTER TABLE "author" ADD "name" text;
|
|
67
66
|
UPDATE "author" SET "name" = "email"::text;
|
|
68
|
-
SET CONSTRAINTS ALL IMMEDIATE; SET CONSTRAINTS ALL DEFERRED;
|
|
69
67
|
ALTER TABLE "author" ALTER "name" SET NOT NULL;`,
|
|
70
68
|
})
|
|
@@ -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`ALTER TABLE "post_locale" DROP CONSTRAINT "
|
|
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',
|
|
@@ -168,3 +168,35 @@ ALTER TABLE "author"
|
|
|
168
168
|
CREATE VIEW "author_meta_x" AS SELECT * FROM author;
|
|
169
169
|
CREATE VIEW "author_meta_y" AS SELECT * FROM author_meta_x;`,
|
|
170
170
|
})
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
namespace NotNullOrig {
|
|
174
|
+
export class Author {
|
|
175
|
+
name = def.stringColumn()
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
namespace NotNullUpdated {
|
|
179
|
+
export class Author {
|
|
180
|
+
name = def.stringColumn().notNull()
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
testMigrations('set not null and fill', {
|
|
184
|
+
originalSchema: createSchema(NotNullOrig).model,
|
|
185
|
+
updatedSchema: createSchema(NotNullUpdated).model,
|
|
186
|
+
noDiff: true,
|
|
187
|
+
diff: [
|
|
188
|
+
updateColumnDefinitionModification.createModification({
|
|
189
|
+
entityName: 'Author',
|
|
190
|
+
fieldName: 'name',
|
|
191
|
+
definition: {
|
|
192
|
+
type: Model.ColumnType.String,
|
|
193
|
+
columnType: 'text',
|
|
194
|
+
nullable: false,
|
|
195
|
+
},
|
|
196
|
+
fillValue: 'unnamed',
|
|
197
|
+
}),
|
|
198
|
+
],
|
|
199
|
+
sql: SQL`
|
|
200
|
+
UPDATE "author" SET "name" = $pga$unnamed$pga$ WHERE "name" IS NULL;
|
|
201
|
+
ALTER TABLE "author" ALTER "name" SET NOT NULL;`,
|
|
202
|
+
})
|
|
@@ -43,24 +43,6 @@ testMigrations('rename entity and table', {
|
|
|
43
43
|
noDiff: true,
|
|
44
44
|
})
|
|
45
45
|
|
|
46
|
-
testMigrations('rename entity with a constraint', {
|
|
47
|
-
originalSchema: new SchemaBuilder()
|
|
48
|
-
.entity('Author', e => e.column('slug', c => c.type(Model.ColumnType.String).unique()))
|
|
49
|
-
.buildSchema(),
|
|
50
|
-
updatedSchema: new SchemaBuilder()
|
|
51
|
-
.entity('User', e => e.tableName('author').column('slug', c => c.type(Model.ColumnType.String).unique()))
|
|
52
|
-
.buildSchema(),
|
|
53
|
-
diff: [
|
|
54
|
-
{
|
|
55
|
-
modification: 'updateEntityName',
|
|
56
|
-
entityName: 'Author',
|
|
57
|
-
newEntityName: 'User',
|
|
58
|
-
},
|
|
59
|
-
],
|
|
60
|
-
sql: SQL`ALTER TABLE "author"
|
|
61
|
-
RENAME CONSTRAINT "unique_Author_slug_a645b0" TO "unique_User_slug_d61dea";`,
|
|
62
|
-
noDiff: true,
|
|
63
|
-
})
|
|
64
46
|
|
|
65
47
|
testMigrations('rename entity with one-has-one (constraint)', {
|
|
66
48
|
originalSchema: new SchemaBuilder()
|
|
@@ -78,8 +60,7 @@ testMigrations('rename entity with one-has-one (constraint)', {
|
|
|
78
60
|
newEntityName: 'User',
|
|
79
61
|
},
|
|
80
62
|
],
|
|
81
|
-
sql: SQL
|
|
82
|
-
RENAME CONSTRAINT "unique_Author_content_b64856" TO "unique_User_content_43c77f";`,
|
|
63
|
+
sql: SQL``,
|
|
83
64
|
noDiff: true,
|
|
84
65
|
})
|
|
85
66
|
|
|
@@ -43,25 +43,6 @@ testMigrations('rename a field with column', {
|
|
|
43
43
|
})
|
|
44
44
|
|
|
45
45
|
|
|
46
|
-
testMigrations('rename a field with a constraint', {
|
|
47
|
-
originalSchema: new SchemaBuilder()
|
|
48
|
-
.entity('Author', e => e.column('slug', c => c.type(Model.ColumnType.String).unique()))
|
|
49
|
-
.buildSchema(),
|
|
50
|
-
updatedSchema: new SchemaBuilder()
|
|
51
|
-
.entity('Author', e => e.column('identifier', c => c.type(Model.ColumnType.String).columnName('slug').unique()))
|
|
52
|
-
.buildSchema(),
|
|
53
|
-
diff: [
|
|
54
|
-
{
|
|
55
|
-
modification: 'updateFieldName',
|
|
56
|
-
entityName: 'Author',
|
|
57
|
-
fieldName: 'slug',
|
|
58
|
-
newFieldName: 'identifier',
|
|
59
|
-
},
|
|
60
|
-
],
|
|
61
|
-
sql: SQL`ALTER TABLE "author"
|
|
62
|
-
RENAME CONSTRAINT "unique_Author_slug_a645b0" TO "unique_Author_identifier_4eb9f2";`,
|
|
63
|
-
noDiff: true,
|
|
64
|
-
})
|
|
65
46
|
|
|
66
47
|
testMigrations('rename a field with one-has-one', {
|
|
67
48
|
originalSchema: new SchemaBuilder()
|
|
@@ -80,8 +61,7 @@ testMigrations('rename a field with one-has-one', {
|
|
|
80
61
|
newFieldName: 'description',
|
|
81
62
|
},
|
|
82
63
|
],
|
|
83
|
-
sql: SQL
|
|
84
|
-
RENAME CONSTRAINT "unique_Author_content_b64856" TO "unique_Author_description_00f1ef";`,
|
|
64
|
+
sql: SQL``,
|
|
85
65
|
noDiff: true,
|
|
86
66
|
})
|
|
87
67
|
|
|
@@ -26,6 +26,6 @@ testMigrations('update relation ondelete to cascade', {
|
|
|
26
26
|
onDelete: Model.OnDelete.cascade,
|
|
27
27
|
},
|
|
28
28
|
],
|
|
29
|
-
sql: SQL`ALTER TABLE "post" DROP CONSTRAINT "
|
|
30
|
-
ALTER TABLE "post" ADD
|
|
29
|
+
sql: SQL`ALTER TABLE "post" DROP CONSTRAINT "fk_post_category_id_category_id";
|
|
30
|
+
ALTER TABLE "post" ADD FOREIGN KEY ("category_id") REFERENCES "category"("id") ON DELETE NO ACTION DEFERRABLE INITIALLY IMMEDIATE;`,
|
|
31
31
|
})
|