@contember/schema-migrations 1.3.0-rc.2 → 1.3.0

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.
Files changed (125) hide show
  1. package/dist/src/SchemaDiffer.d.ts.map +1 -1
  2. package/dist/src/SchemaDiffer.js +1 -2
  3. package/dist/src/SchemaDiffer.js.map +1 -1
  4. package/dist/src/modifications/differs/{RemoveChangedViewDiffer.d.ts → RemoveViewDiffer.d.ts} +5 -2
  5. package/dist/src/modifications/differs/RemoveViewDiffer.d.ts.map +1 -0
  6. package/dist/src/modifications/differs/RemoveViewDiffer.js +48 -0
  7. package/dist/src/modifications/differs/RemoveViewDiffer.js.map +1 -0
  8. package/dist/src/modifications/differs/index.d.ts +1 -2
  9. package/dist/src/modifications/differs/index.d.ts.map +1 -1
  10. package/dist/src/modifications/differs/index.js +1 -2
  11. package/dist/src/modifications/differs/index.js.map +1 -1
  12. package/dist/src/modifications/utils/viewDependencies.js +3 -3
  13. package/dist/src/tsconfig.tsbuildinfo +1 -1
  14. package/dist/tests/cases/integration/convertOneHasManyToManyHasManyRelation.test.js +2 -2
  15. package/dist/tests/cases/integration/convertOneHasManyToManyHasManyRelation.test.js.map +1 -1
  16. package/dist/tests/cases/integration/convertOneToManyRelation.test.js +24 -16
  17. package/dist/tests/cases/integration/convertOneToManyRelation.test.js.map +1 -1
  18. package/dist/tests/cases/integration/createAndDropIndex.test.js +4 -4
  19. package/dist/tests/cases/integration/createAndDropIndex.test.js.map +1 -1
  20. package/dist/tests/cases/integration/createColumn.test.js +4 -4
  21. package/dist/tests/cases/integration/createColumn.test.js.map +1 -1
  22. package/dist/tests/cases/integration/createEntity.test.js +11 -9
  23. package/dist/tests/cases/integration/createEntity.test.js.map +1 -1
  24. package/dist/tests/cases/integration/createEnum.test.js +13 -9
  25. package/dist/tests/cases/integration/createEnum.test.js.map +1 -1
  26. package/dist/tests/cases/integration/createManyHasMany.test.js +11 -7
  27. package/dist/tests/cases/integration/createManyHasMany.test.js.map +1 -1
  28. package/dist/tests/cases/integration/createManyHasOne.test.js +13 -9
  29. package/dist/tests/cases/integration/createManyHasOne.test.js.map +1 -1
  30. package/dist/tests/cases/integration/createOneHasMany.test.js +10 -8
  31. package/dist/tests/cases/integration/createOneHasMany.test.js.map +1 -1
  32. package/dist/tests/cases/integration/createOneHasOne.test.js +9 -7
  33. package/dist/tests/cases/integration/createOneHasOne.test.js.map +1 -1
  34. package/dist/tests/cases/integration/createRelationInverseSide.test.js +24 -16
  35. package/dist/tests/cases/integration/createRelationInverseSide.test.js.map +1 -1
  36. package/dist/tests/cases/integration/createView.test.js +3 -3
  37. package/dist/tests/cases/integration/createView.test.js.map +1 -1
  38. package/dist/tests/cases/integration/disableOrphanRemoval.test.js +14 -10
  39. package/dist/tests/cases/integration/disableOrphanRemoval.test.js.map +1 -1
  40. package/dist/tests/cases/integration/enableOrphanRemoval.test.js +14 -10
  41. package/dist/tests/cases/integration/enableOrphanRemoval.test.js.map +1 -1
  42. package/dist/tests/cases/integration/makeColumnNotNull.test.js +10 -6
  43. package/dist/tests/cases/integration/makeColumnNotNull.test.js.map +1 -1
  44. package/dist/tests/cases/integration/makeRelationNotNull.test.js +14 -10
  45. package/dist/tests/cases/integration/makeRelationNotNull.test.js.map +1 -1
  46. package/dist/tests/cases/integration/makeRelationNullable.test.js +26 -18
  47. package/dist/tests/cases/integration/makeRelationNullable.test.js.map +1 -1
  48. package/dist/tests/cases/integration/patchAclSchema.test.js +21 -17
  49. package/dist/tests/cases/integration/patchAclSchema.test.js.map +1 -1
  50. package/dist/tests/cases/integration/removeEntity.test.js +60 -52
  51. package/dist/tests/cases/integration/removeEntity.test.js.map +1 -1
  52. package/dist/tests/cases/integration/removeEnum.test.js +13 -9
  53. package/dist/tests/cases/integration/removeEnum.test.js.map +1 -1
  54. package/dist/tests/cases/integration/removeField.test.js +71 -51
  55. package/dist/tests/cases/integration/removeField.test.js.map +1 -1
  56. package/dist/tests/cases/integration/toggleEventLog.test.js +4 -4
  57. package/dist/tests/cases/integration/toggleEventLog.test.js.map +1 -1
  58. package/dist/tests/cases/integration/toggleJunctionEventLog.test.js +4 -4
  59. package/dist/tests/cases/integration/toggleJunctionEventLog.test.js.map +1 -1
  60. package/dist/tests/cases/integration/updateColumnDefinition.test.js +18 -14
  61. package/dist/tests/cases/integration/updateColumnDefinition.test.js.map +1 -1
  62. package/dist/tests/cases/integration/updateEntityName.test.js +66 -50
  63. package/dist/tests/cases/integration/updateEntityName.test.js.map +1 -1
  64. package/dist/tests/cases/integration/updateEntityOrderBy.test.js +4 -4
  65. package/dist/tests/cases/integration/updateEntityOrderBy.test.js.map +1 -1
  66. package/dist/tests/cases/integration/updateEnum.test.js +16 -12
  67. package/dist/tests/cases/integration/updateEnum.test.js.map +1 -1
  68. package/dist/tests/cases/integration/updateFieldName.test.js +120 -96
  69. package/dist/tests/cases/integration/updateFieldName.test.js.map +1 -1
  70. package/dist/tests/cases/integration/updateRelationOnDelete.test.js +14 -10
  71. package/dist/tests/cases/integration/updateRelationOnDelete.test.js.map +1 -1
  72. package/dist/tests/cases/integration/updateRelationOrderBy.test.js +15 -11
  73. package/dist/tests/cases/integration/updateRelationOrderBy.test.js.map +1 -1
  74. package/dist/tests/cases/integration/updateView.test.js +8 -8
  75. package/dist/tests/cases/integration/updateView.test.js.map +1 -1
  76. package/dist/tests/src/tests.d.ts +7 -9
  77. package/dist/tests/src/tests.d.ts.map +1 -1
  78. package/dist/tests/src/tests.js +13 -16
  79. package/dist/tests/src/tests.js.map +1 -1
  80. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  81. package/package.json +6 -6
  82. package/src/SchemaDiffer.ts +2 -3
  83. package/src/modifications/differs/{RemoveChangedViewDiffer.ts → RemoveViewDiffer.ts} +30 -7
  84. package/src/modifications/differs/index.ts +1 -2
  85. package/src/modifications/utils/viewDependencies.ts +3 -3
  86. package/tests/cases/integration/convertOneHasManyToManyHasManyRelation.test.ts +3 -3
  87. package/tests/cases/integration/convertOneToManyRelation.test.ts +32 -24
  88. package/tests/cases/integration/createAndDropIndex.test.ts +5 -5
  89. package/tests/cases/integration/createColumn.test.ts +5 -5
  90. package/tests/cases/integration/createEntity.test.ts +14 -12
  91. package/tests/cases/integration/createEnum.test.ts +15 -11
  92. package/tests/cases/integration/createManyHasMany.test.ts +13 -9
  93. package/tests/cases/integration/createManyHasOne.test.ts +15 -11
  94. package/tests/cases/integration/createOneHasMany.test.ts +14 -12
  95. package/tests/cases/integration/createOneHasOne.test.ts +11 -9
  96. package/tests/cases/integration/createRelationInverseSide.test.ts +26 -18
  97. package/tests/cases/integration/createView.test.ts +4 -4
  98. package/tests/cases/integration/disableOrphanRemoval.test.ts +18 -14
  99. package/tests/cases/integration/enableOrphanRemoval.test.ts +18 -14
  100. package/tests/cases/integration/makeColumnNotNull.test.ts +10 -6
  101. package/tests/cases/integration/makeRelationNotNull.test.ts +18 -14
  102. package/tests/cases/integration/makeRelationNullable.test.ts +30 -22
  103. package/tests/cases/integration/patchAclSchema.test.ts +21 -17
  104. package/tests/cases/integration/removeEntity.test.ts +63 -55
  105. package/tests/cases/integration/removeEnum.test.ts +15 -11
  106. package/tests/cases/integration/removeField.test.ts +86 -66
  107. package/tests/cases/integration/toggleEventLog.test.ts +5 -5
  108. package/tests/cases/integration/toggleJunctionEventLog.test.ts +5 -5
  109. package/tests/cases/integration/updateColumnDefinition.test.ts +22 -18
  110. package/tests/cases/integration/updateEntityName.test.ts +67 -51
  111. package/tests/cases/integration/updateEntityOrderBy.test.ts +5 -5
  112. package/tests/cases/integration/updateEnum.test.ts +20 -16
  113. package/tests/cases/integration/updateFieldName.test.ts +126 -102
  114. package/tests/cases/integration/updateRelationOnDelete.test.ts +18 -14
  115. package/tests/cases/integration/updateRelationOrderBy.test.ts +23 -19
  116. package/tests/cases/integration/updateView.test.ts +9 -9
  117. package/tests/src/tests.ts +19 -29
  118. package/dist/src/modifications/differs/ChangeViewNonViewDiffer.d.ts +0 -6
  119. package/dist/src/modifications/differs/ChangeViewNonViewDiffer.d.ts.map +0 -1
  120. package/dist/src/modifications/differs/ChangeViewNonViewDiffer.js +0 -19
  121. package/dist/src/modifications/differs/ChangeViewNonViewDiffer.js.map +0 -1
  122. package/dist/src/modifications/differs/RemoveChangedViewDiffer.d.ts.map +0 -1
  123. package/dist/src/modifications/differs/RemoveChangedViewDiffer.js +0 -33
  124. package/dist/src/modifications/differs/RemoveChangedViewDiffer.js.map +0 -1
  125. package/src/modifications/differs/ChangeViewNonViewDiffer.ts +0 -17
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contember/schema-migrations",
3
- "version": "1.3.0-rc.2",
3
+ "version": "1.3.0",
4
4
  "license": "Apache-2.0",
5
5
  "main": "dist/src/index.js",
6
6
  "typings": "dist/src/index.d.ts",
@@ -12,15 +12,15 @@
12
12
  "test": "vitest --dir ./tests/cases"
13
13
  },
14
14
  "dependencies": {
15
- "@contember/database-migrations": "1.3.0-rc.2",
16
- "@contember/engine-common": "1.3.0-rc.2",
17
- "@contember/schema": "1.3.0-rc.2",
18
- "@contember/schema-utils": "1.3.0-rc.2",
15
+ "@contember/database-migrations": "1.3.0",
16
+ "@contember/engine-common": "1.3.0",
17
+ "@contember/schema": "1.3.0",
18
+ "@contember/schema-utils": "1.3.0",
19
19
  "fast-deep-equal": "^3.1.3",
20
20
  "rfc6902": "^5.0.1"
21
21
  },
22
22
  "devDependencies": {
23
- "@contember/schema-definition": "1.3.0-rc.2"
23
+ "@contember/schema-definition": "1.3.0"
24
24
  },
25
25
  "peerDependencies": {
26
26
  "pg": "^8.9.0"
@@ -35,7 +35,7 @@ import {
35
35
  UpdateValidationSchemaDiffer,
36
36
  VERSION_LATEST,
37
37
  } from './modifications'
38
- import { ChangeViewNonViewDiffer, RemoveChangedFieldDiffer, RemoveChangedViewDiffer } from './modifications/differs'
38
+ import { RemoveChangedFieldDiffer, RemoveViewDiffer } from './modifications/differs'
39
39
  import { CreateIndexDiffer, RemoveIndexDiffer } from './modifications/indexes'
40
40
  import { CreateTriggerDiffer, RemoveTriggerDiffer, UpdateTriggerDiffer } from './modifications/actions'
41
41
  import { UpdateTargetDiffer } from './modifications/actions/UpdateTargetModification'
@@ -71,8 +71,7 @@ export class SchemaDiffer {
71
71
  new ConvertOneHasManyToManyHasManyRelationDiffer(),
72
72
  new RemoveUniqueConstraintDiffer(),
73
73
  new RemoveIndexDiffer(),
74
- new ChangeViewNonViewDiffer(),
75
- new RemoveChangedViewDiffer(),
74
+ new RemoveViewDiffer(),
76
75
  new RemoveEntityDiffer(),
77
76
  new RemoveFieldDiffer(),
78
77
  new CreateEnumDiffer(),
@@ -4,26 +4,49 @@ import deepEqual from 'fast-deep-equal'
4
4
  import { cascadeRemoveDependantViews } from '../utils/viewDependencies'
5
5
  import { UpdateColumnDefinitionDiffer } from '../columns'
6
6
 
7
- export class RemoveChangedViewDiffer implements Differ {
7
+ /**
8
+ * Remove changed or removed view.
9
+ */
10
+ export class RemoveViewDiffer implements Differ {
8
11
  constructor() {
9
12
  }
10
13
 
11
14
  createDiff(originalSchema: Schema, updatedSchema: Schema) {
12
- const changedViews = Object.values(originalSchema.model.entities)
15
+ const changedOrRemovedViews = Object.values(originalSchema.model.entities)
13
16
  .filter(it => {
14
17
  const updatedEntity = updatedSchema.model.entities[it.name]
15
- if (!updatedEntity || !it.view || !updatedEntity.view) {
16
- return false
18
+
19
+ if (!updatedEntity && !!it.view) {
20
+ return true // view entity removed
21
+ }
22
+
23
+ if (!updatedEntity) {
24
+ return false // non-view entity removed
25
+ }
26
+
27
+ if (!updatedEntity.view && !it.view) {
28
+ return false // none is view
29
+ }
30
+
31
+ if (!!it.view !== !!updatedEntity.view) {
32
+ return true // change between regular entity and view entity
33
+ }
34
+
35
+ if (!deepEqual(updatedEntity.view, it.view)) {
36
+ return true // view is different
17
37
  }
18
- return !deepEqual(updatedEntity.view, it.view)
38
+
39
+ return false
19
40
  })
41
+
20
42
  const columnDiffer = new UpdateColumnDefinitionDiffer()
21
43
  const columnChanges = columnDiffer.createDiff(originalSchema, updatedSchema)
22
- if (changedViews.length === 0 && columnChanges.length === 0) {
44
+ if (changedOrRemovedViews.length === 0 && columnChanges.length === 0) {
23
45
  return []
24
46
  }
47
+
25
48
  const changedColumnsEntities = Array.from(new Set(columnChanges.map(it => it.entityName)))
26
49
  .map(it => originalSchema.model.entities[it])
27
- return cascadeRemoveDependantViews(originalSchema.model, [...changedViews, ...changedColumnsEntities])
50
+ return cascadeRemoveDependantViews(originalSchema.model, [...changedOrRemovedViews, ...changedColumnsEntities])
28
51
  }
29
52
  }
@@ -1,3 +1,2 @@
1
- export * from './ChangeViewNonViewDiffer'
2
1
  export * from './RemoveChangedFieldDiffer'
3
- export * from './RemoveChangedViewDiffer'
2
+ export * from './RemoveViewDiffer'
@@ -21,14 +21,14 @@ export const getEntityDependantViews = (model: Model.Schema): EntityDependantVie
21
21
  }
22
22
 
23
23
  export const cascadeRemoveDependantViews = (model: Model.Schema, entities: Model.Entity[]): Migration.Modification[] => {
24
- const removed = new Set<string>()
24
+ const visited = new Set<string>()
25
25
  const dependants = getEntityDependantViews(model)
26
26
  const modifications: Migration.Modification[] = []
27
27
  const removeCascade = (entity: Model.Entity) => {
28
- if (removed.has(entity.name)) {
28
+ if (visited.has(entity.name)) {
29
29
  return
30
30
  }
31
- removed.add(entity.name)
31
+ visited.add(entity.name)
32
32
  for (const dependant of dependants.get(entity.name) ?? []) {
33
33
  removeCascade(dependant)
34
34
  }
@@ -1,6 +1,6 @@
1
1
  import { testMigrations } from '../../src/tests'
2
2
  import { SQL } from '../../src/tags'
3
- import { SchemaDefinition as def } from '@contember/schema-definition'
3
+ import { createSchema, SchemaDefinition as def } from '@contember/schema-definition'
4
4
 
5
5
  namespace ConvertOHMToMHMSchemaOrig {
6
6
  export class Article {
@@ -26,8 +26,8 @@ namespace ConvertOHMToMHMSchemaOrigUpdated {
26
26
 
27
27
 
28
28
  testMigrations('convert one has many to many has many', {
29
- originalSchema: def.createModel(ConvertOHMToMHMSchemaOrig),
30
- updatedSchema: def.createModel(ConvertOHMToMHMSchemaOrigUpdated),
29
+ original: createSchema(ConvertOHMToMHMSchemaOrig),
30
+ updated: createSchema(ConvertOHMToMHMSchemaOrigUpdated),
31
31
  diff: [
32
32
  {
33
33
  modification: 'convertOneHasManyToManyHasManyRelation',
@@ -4,18 +4,22 @@ import { Model } from '@contember/schema'
4
4
  import { SQL } from '../../src/tags'
5
5
 
6
6
  testMigrations('convert one has one to many has one relation without inverse side', {
7
- originalSchema: new SchemaBuilder()
8
- .entity('Post', entity =>
9
- entity.oneHasOne('image', rel => rel.target('Image')),
10
- )
11
- .entity('Image', e => e.column('url', c => c.type(Model.ColumnType.String)))
12
- .buildSchema(),
13
- updatedSchema: new SchemaBuilder()
14
- .entity('Post', entity =>
15
- entity.manyHasOne('image', rel => rel.target('Image')),
16
- )
17
- .entity('Image', e => e.column('url', c => c.type(Model.ColumnType.String)))
18
- .buildSchema(),
7
+ original: {
8
+ model: new SchemaBuilder()
9
+ .entity('Post', entity =>
10
+ entity.oneHasOne('image', rel => rel.target('Image')),
11
+ )
12
+ .entity('Image', e => e.column('url', c => c.type(Model.ColumnType.String)))
13
+ .buildSchema(),
14
+ },
15
+ updated: {
16
+ model: new SchemaBuilder()
17
+ .entity('Post', entity =>
18
+ entity.manyHasOne('image', rel => rel.target('Image')),
19
+ )
20
+ .entity('Image', e => e.column('url', c => c.type(Model.ColumnType.String)))
21
+ .buildSchema(),
22
+ },
19
23
  diff: [
20
24
  {
21
25
  modification: 'convertOneToManyRelation',
@@ -31,18 +35,22 @@ testMigrations('convert one has one to many has one relation without inverse sid
31
35
 
32
36
 
33
37
  testMigrations('convert one has one to many has one relation with inverse side', {
34
- originalSchema: new SchemaBuilder()
35
- .entity('Post', entity =>
36
- entity.oneHasOne('image', rel => rel.target('Image').inversedBy('post')),
37
- )
38
- .entity('Image', e => e.column('url', c => c.type(Model.ColumnType.String)))
39
- .buildSchema(),
40
- updatedSchema: new SchemaBuilder()
41
- .entity('Post', entity =>
42
- entity.manyHasOne('image', rel => rel.target('Image').inversedBy('posts')),
43
- )
44
- .entity('Image', e => e.column('url', c => c.type(Model.ColumnType.String)))
45
- .buildSchema(),
38
+ original: {
39
+ model: new SchemaBuilder()
40
+ .entity('Post', entity =>
41
+ entity.oneHasOne('image', rel => rel.target('Image').inversedBy('post')),
42
+ )
43
+ .entity('Image', e => e.column('url', c => c.type(Model.ColumnType.String)))
44
+ .buildSchema(),
45
+ },
46
+ updated: {
47
+ model: new SchemaBuilder()
48
+ .entity('Post', entity =>
49
+ entity.manyHasOne('image', rel => rel.target('Image').inversedBy('posts')),
50
+ )
51
+ .entity('Image', e => e.column('url', c => c.type(Model.ColumnType.String)))
52
+ .buildSchema(),
53
+ },
46
54
  diff: [
47
55
  {
48
56
  modification: 'convertOneToManyRelation',
@@ -1,6 +1,6 @@
1
1
  import { testMigrations } from '../../src/tests'
2
2
  import { SQL } from '../../src/tags'
3
- import { SchemaDefinition as def } from '@contember/schema-definition'
3
+ import { createSchema, SchemaDefinition as def } from '@contember/schema-definition'
4
4
 
5
5
  namespace SchemaWithoutIndex {
6
6
  export class Article {
@@ -17,8 +17,8 @@ namespace SchemaWithIndex {
17
17
 
18
18
 
19
19
  testMigrations('create index', {
20
- originalSchema: def.createModel(SchemaWithoutIndex),
21
- updatedSchema: def.createModel(SchemaWithIndex),
20
+ original: createSchema(SchemaWithoutIndex),
21
+ updated: createSchema(SchemaWithIndex),
22
22
  diff: [
23
23
  {
24
24
  modification: 'createIndex',
@@ -31,8 +31,8 @@ testMigrations('create index', {
31
31
 
32
32
 
33
33
  testMigrations('drop index', {
34
- originalSchema: def.createModel(SchemaWithIndex),
35
- updatedSchema: def.createModel(SchemaWithoutIndex),
34
+ original: createSchema(SchemaWithIndex),
35
+ updated: createSchema(SchemaWithoutIndex),
36
36
  diff: [
37
37
  {
38
38
  modification: 'removeIndex',
@@ -1,15 +1,15 @@
1
- import { SchemaDefinition as def } from '@contember/schema-definition'
1
+ import { createSchema, SchemaDefinition as def } from '@contember/schema-definition'
2
2
  import { Model } from '@contember/schema'
3
3
  import { SQL } from '../../src/tags'
4
4
  import { testMigrations } from '../../src/tests'
5
5
 
6
6
  testMigrations('create a column with default value', {
7
- originalSchema: def.createModel({
7
+ original: createSchema({
8
8
  Author: class Author {
9
9
  email = def.stringColumn().unique()
10
10
  },
11
11
  }),
12
- updatedSchema: def.createModel({
12
+ updated: createSchema({
13
13
  Author: class Author {
14
14
  name = def.stringColumn().default('unnamed author').notNull()
15
15
  email = def.stringColumn().unique()
@@ -37,12 +37,12 @@ ALTER TABLE "author" ALTER "name" SET NOT NULL;`,
37
37
  })
38
38
 
39
39
  testMigrations('create a column with copy value', {
40
- originalSchema: def.createModel({
40
+ original: createSchema({
41
41
  Author: class Author {
42
42
  email = def.stringColumn().unique()
43
43
  },
44
44
  }),
45
- updatedSchema: def.createModel({
45
+ updated: createSchema({
46
46
  Author: class Author {
47
47
  name = def.stringColumn().notNull()
48
48
  email = def.stringColumn().unique()
@@ -1,19 +1,21 @@
1
- import { SchemaBuilder } from '@contember/schema-definition'
1
+ import { createSchema, SchemaBuilder } from '@contember/schema-definition'
2
2
  import { Model } from '@contember/schema'
3
3
  import { SQL } from '../../src/tags'
4
4
  import { testMigrations } from '../../src/tests'
5
5
  import { SchemaDefinition as def } from '@contember/schema-definition'
6
6
 
7
7
  testMigrations('create a table (no relations, unique on column)', {
8
- originalSchema: new SchemaBuilder().buildSchema(),
9
- updatedSchema: new SchemaBuilder()
10
- .entity('Author', e =>
11
- e
12
- .column('name', c => c.type(Model.ColumnType.String))
13
- .column('email', c => c.type(Model.ColumnType.String).unique())
14
- .column('registeredAt', c => c.type(Model.ColumnType.Date)),
15
- )
16
- .buildSchema(),
8
+ original: { },
9
+ updated: {
10
+ model: new SchemaBuilder()
11
+ .entity('Author', e =>
12
+ e
13
+ .column('name', c => c.type(Model.ColumnType.String))
14
+ .column('email', c => c.type(Model.ColumnType.String).unique())
15
+ .column('registeredAt', c => c.type(Model.ColumnType.Date)),
16
+ )
17
+ .buildSchema(),
18
+ },
17
19
  diff: [
18
20
  {
19
21
  modification: 'createEntity',
@@ -108,8 +110,8 @@ namespace ViewEntityUpdatedSchema {
108
110
  }
109
111
  }
110
112
  testMigrations('create a view', {
111
- originalSchema: new SchemaBuilder().buildSchema(),
112
- updatedSchema: def.createModel(ViewEntityUpdatedSchema),
113
+ original: {},
114
+ updated: createSchema(ViewEntityUpdatedSchema),
113
115
  diff: [
114
116
  {
115
117
  modification: 'createView',
@@ -4,17 +4,21 @@ import { Model } from '@contember/schema'
4
4
  import { SQL } from '../../src/tags'
5
5
 
6
6
  testMigrations('create enum', {
7
- originalSchema: new SchemaBuilder()
8
- .entity('Post', e => e.column('title', c => c.type(Model.ColumnType.String)))
9
- .buildSchema(),
10
- updatedSchema: new SchemaBuilder()
11
- .entity('Post', e =>
12
- e
13
- .column('title', c => c.type(Model.ColumnType.String))
14
- .column('status', c => c.type(Model.ColumnType.Enum, { enumName: 'postStatus' })),
15
- )
16
- .enum('postStatus', ['publish', 'draft'])
17
- .buildSchema(),
7
+ original: {
8
+ model: new SchemaBuilder()
9
+ .entity('Post', e => e.column('title', c => c.type(Model.ColumnType.String)))
10
+ .buildSchema(),
11
+ },
12
+ updated: {
13
+ model: new SchemaBuilder()
14
+ .entity('Post', e =>
15
+ e
16
+ .column('title', c => c.type(Model.ColumnType.String))
17
+ .column('status', c => c.type(Model.ColumnType.Enum, { enumName: 'postStatus' })),
18
+ )
19
+ .enum('postStatus', ['publish', 'draft'])
20
+ .buildSchema(),
21
+ },
18
22
  diff: [
19
23
  {
20
24
  modification: 'createEnum',
@@ -4,15 +4,19 @@ import { Model } from '@contember/schema'
4
4
  import { SQL } from '../../src/tags'
5
5
 
6
6
  testMigrations('create many has many relation (post with categories)', {
7
- originalSchema: new SchemaBuilder()
8
- .entity('Post', e => e.column('title', c => c.type(Model.ColumnType.String)))
9
- .buildSchema(),
10
- updatedSchema: new SchemaBuilder()
11
- .entity('Post', e =>
12
- e.column('title', c => c.type(Model.ColumnType.String)).manyHasMany('categories', r => r.target('Category')),
13
- )
14
- .entity('Category', e => e.column('title', c => c.type(Model.ColumnType.String)))
15
- .buildSchema(),
7
+ original: {
8
+ model: new SchemaBuilder()
9
+ .entity('Post', e => e.column('title', c => c.type(Model.ColumnType.String)))
10
+ .buildSchema(),
11
+ },
12
+ updated: {
13
+ model: new SchemaBuilder()
14
+ .entity('Post', e =>
15
+ e.column('title', c => c.type(Model.ColumnType.String)).manyHasMany('categories', r => r.target('Category')),
16
+ )
17
+ .entity('Category', e => e.column('title', c => c.type(Model.ColumnType.String)))
18
+ .buildSchema(),
19
+ },
16
20
  diff: [
17
21
  {
18
22
  modification: 'createEntity',
@@ -4,17 +4,21 @@ import { SQL } from '../../src/tags'
4
4
  import { testMigrations } from '../../src/tests'
5
5
 
6
6
  testMigrations('create many has one relation (post with author)', {
7
- originalSchema: new SchemaBuilder()
8
- .entity('Author', e => e.column('name', c => c.type(Model.ColumnType.String)))
9
- .buildSchema(),
10
- updatedSchema: new SchemaBuilder()
11
- .entity('Author', e => e.column('name', c => c.type(Model.ColumnType.String)))
12
- .entity('Post', e =>
13
- e
14
- .column('title', c => c.type(Model.ColumnType.String))
15
- .manyHasOne('author', r => r.target('Author').onDelete(Model.OnDelete.cascade)),
16
- )
17
- .buildSchema(),
7
+ original: {
8
+ model: new SchemaBuilder()
9
+ .entity('Author', e => e.column('name', c => c.type(Model.ColumnType.String)))
10
+ .buildSchema(),
11
+ },
12
+ updated: {
13
+ model: new SchemaBuilder()
14
+ .entity('Author', e => e.column('name', c => c.type(Model.ColumnType.String)))
15
+ .entity('Post', e =>
16
+ e
17
+ .column('title', c => c.type(Model.ColumnType.String))
18
+ .manyHasOne('author', r => r.target('Author').onDelete(Model.OnDelete.cascade)),
19
+ )
20
+ .buildSchema(),
21
+ },
18
22
  diff: [
19
23
  {
20
24
  modification: 'createEntity',
@@ -4,18 +4,20 @@ import { Model } from '@contember/schema'
4
4
  import { SQL } from '../../src/tags'
5
5
 
6
6
  testMigrations('create one has many relation (post with locales)', {
7
- originalSchema: new SchemaBuilder().entity('Post', e => e).buildSchema(),
8
- updatedSchema: new SchemaBuilder()
9
- .entity('Post', e =>
10
- e.oneHasMany('locales', r => r.target('PostLocale').ownerNotNull().ownedBy('post').orderBy('title')),
11
- )
12
- .entity('PostLocale', e =>
13
- e
14
- .unique(['post', 'locale'])
15
- .column('title', c => c.type(Model.ColumnType.String))
16
- .column('locale', c => c.type(Model.ColumnType.String)),
17
- )
18
- .buildSchema(),
7
+ original: { model: new SchemaBuilder().entity('Post', e => e).buildSchema() },
8
+ updated: {
9
+ model: new SchemaBuilder()
10
+ .entity('Post', e =>
11
+ e.oneHasMany('locales', r => r.target('PostLocale').ownerNotNull().ownedBy('post').orderBy('title')),
12
+ )
13
+ .entity('PostLocale', e =>
14
+ e
15
+ .unique(['post', 'locale'])
16
+ .column('title', c => c.type(Model.ColumnType.String))
17
+ .column('locale', c => c.type(Model.ColumnType.String)),
18
+ )
19
+ .buildSchema(),
20
+ },
19
21
  diff: [
20
22
  {
21
23
  modification: 'createEntity',
@@ -4,15 +4,17 @@ import { Model } from '@contember/schema'
4
4
  import { SQL } from '../../src/tags'
5
5
 
6
6
  testMigrations('create one has one relation (site with settings)', {
7
- originalSchema: new SchemaBuilder().buildSchema(),
8
- updatedSchema: new SchemaBuilder()
9
- .entity('Site', entity =>
10
- entity
11
- .column('name', c => c.type(Model.ColumnType.String))
12
- .oneHasOne('setting', r => r.target('SiteSetting').inversedBy('site')),
13
- )
14
- .entity('SiteSetting', e => e.column('url', c => c.type(Model.ColumnType.String)))
15
- .buildSchema(),
7
+ original: {},
8
+ updated: {
9
+ model: new SchemaBuilder()
10
+ .entity('Site', entity =>
11
+ entity
12
+ .column('name', c => c.type(Model.ColumnType.String))
13
+ .oneHasOne('setting', r => r.target('SiteSetting').inversedBy('site')),
14
+ )
15
+ .entity('SiteSetting', e => e.column('url', c => c.type(Model.ColumnType.String)))
16
+ .buildSchema(),
17
+ },
16
18
  diff: [
17
19
  {
18
20
  modification: 'createEntity',
@@ -4,14 +4,18 @@ import { SQL } from '../../src/tags'
4
4
  import { SchemaBuilder } from '@contember/schema-definition'
5
5
 
6
6
  testMigrations('create inverse side relation (post with locales)', {
7
- originalSchema: new SchemaBuilder()
8
- .entity('Post', e => e)
9
- .entity('PostLocale', e => e.manyHasOne('post', r => r.target('Post')))
10
- .buildSchema(),
11
- updatedSchema: new SchemaBuilder()
12
- .entity('Post', e => e)
13
- .entity('PostLocale', e => e.manyHasOne('post', r => r.target('Post').inversedBy('locales')))
14
- .buildSchema(),
7
+ original: {
8
+ model: new SchemaBuilder()
9
+ .entity('Post', e => e)
10
+ .entity('PostLocale', e => e.manyHasOne('post', r => r.target('Post')))
11
+ .buildSchema(),
12
+ },
13
+ updated: {
14
+ model: new SchemaBuilder()
15
+ .entity('Post', e => e)
16
+ .entity('PostLocale', e => e.manyHasOne('post', r => r.target('Post').inversedBy('locales')))
17
+ .buildSchema(),
18
+ },
15
19
  diff: [
16
20
  {
17
21
  modification: 'createRelationInverseSide',
@@ -28,16 +32,20 @@ testMigrations('create inverse side relation (post with locales)', {
28
32
  })
29
33
 
30
34
  testMigrations('create inverse side relation together with changing onDelete behaviour', {
31
- originalSchema: new SchemaBuilder()
32
- .entity('Post', e => e)
33
- .entity('PostLocale', e => e.manyHasOne('post', r => r.target('Post')))
34
- .buildSchema(),
35
- updatedSchema: new SchemaBuilder()
36
- .entity('Post', e => e)
37
- .entity('PostLocale', e =>
38
- e.manyHasOne('post', r => r.target('Post').inversedBy('locales').onDelete(Model.OnDelete.cascade)),
39
- )
40
- .buildSchema(),
35
+ original: {
36
+ model: new SchemaBuilder()
37
+ .entity('Post', e => e)
38
+ .entity('PostLocale', e => e.manyHasOne('post', r => r.target('Post')))
39
+ .buildSchema(),
40
+ },
41
+ updated: {
42
+ model: new SchemaBuilder()
43
+ .entity('Post', e => e)
44
+ .entity('PostLocale', e =>
45
+ e.manyHasOne('post', r => r.target('Post').inversedBy('locales').onDelete(Model.OnDelete.cascade)),
46
+ )
47
+ .buildSchema(),
48
+ },
41
49
  diff: [
42
50
  {
43
51
  modification: 'updateRelationOnDelete',
@@ -1,6 +1,6 @@
1
1
  import { testMigrations } from '../../src/tests.js'
2
2
  import { SQL } from '../../src/tags.js'
3
- import { SchemaDefinition as def } from '@contember/schema-definition'
3
+ import { createSchema, SchemaDefinition as def } from '@contember/schema-definition'
4
4
 
5
5
  namespace ViewEntityOriginalSchema {
6
6
 
@@ -24,8 +24,8 @@ namespace ViewEntityUpdatedSchema {
24
24
 
25
25
 
26
26
  testMigrations('create view', {
27
- originalSchema: def.createModel(ViewEntityOriginalSchema),
28
- updatedSchema: def.createModel(ViewEntityUpdatedSchema),
27
+ original: createSchema(ViewEntityOriginalSchema),
28
+ updated: createSchema(ViewEntityUpdatedSchema),
29
29
  diff: [
30
30
  {
31
31
  modification: 'createView',
@@ -118,7 +118,7 @@ namespace ViewAddRelationUpdateSchema {
118
118
 
119
119
 
120
120
  testMigrations('create a relation and a view', {
121
- originalSchema: def.createModel(ViewAddRelationOriginalSchema), updatedSchema: def.createModel(ViewAddRelationUpdateSchema), diff: [
121
+ original: createSchema(ViewAddRelationOriginalSchema), updated: createSchema(ViewAddRelationUpdateSchema), diff: [
122
122
  {
123
123
  modification: 'createRelation',
124
124
  entityName: 'Article',
@@ -4,20 +4,24 @@ import { Model } from '@contember/schema'
4
4
  import { SQL } from '../../src/tags'
5
5
 
6
6
  testMigrations('disable orphan removal', {
7
- originalSchema: new SchemaBuilder()
8
- .entity('Post', entity =>
9
- entity
10
- .column('name', c => c.type(Model.ColumnType.String))
11
- .oneHasOne('content', r => r.target('Content').removeOrphan()),
12
- )
13
- .entity('Content', e => e.column('text', c => c.type(Model.ColumnType.String)))
14
- .buildSchema(),
15
- updatedSchema: new SchemaBuilder()
16
- .entity('Post', entity =>
17
- entity.column('name', c => c.type(Model.ColumnType.String)).oneHasOne('content', r => r.target('Content')),
18
- )
19
- .entity('Content', e => e.column('text', c => c.type(Model.ColumnType.String)))
20
- .buildSchema(),
7
+ original: {
8
+ model: new SchemaBuilder()
9
+ .entity('Post', entity =>
10
+ entity
11
+ .column('name', c => c.type(Model.ColumnType.String))
12
+ .oneHasOne('content', r => r.target('Content').removeOrphan()),
13
+ )
14
+ .entity('Content', e => e.column('text', c => c.type(Model.ColumnType.String)))
15
+ .buildSchema(),
16
+ },
17
+ updated: {
18
+ model: new SchemaBuilder()
19
+ .entity('Post', entity =>
20
+ entity.column('name', c => c.type(Model.ColumnType.String)).oneHasOne('content', r => r.target('Content')),
21
+ )
22
+ .entity('Content', e => e.column('text', c => c.type(Model.ColumnType.String)))
23
+ .buildSchema(),
24
+ },
21
25
  diff: [
22
26
  {
23
27
  modification: 'disableOrphanRemoval',