@contember/schema-migrations 1.1.0-alpha.4 → 1.1.0-alpha.7

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 (166) hide show
  1. package/dist/src/MigrationFilesManager.js +5 -1
  2. package/dist/src/MigrationFilesManager.js.map +1 -1
  3. package/dist/src/SchemaDiffer.d.ts.map +1 -1
  4. package/dist/src/SchemaDiffer.js +2 -0
  5. package/dist/src/SchemaDiffer.js.map +1 -1
  6. package/dist/src/index.js +5 -1
  7. package/dist/src/index.js.map +1 -1
  8. package/dist/src/modifications/ModificationHandlerFactory.d.ts.map +1 -1
  9. package/dist/src/modifications/ModificationHandlerFactory.js +2 -0
  10. package/dist/src/modifications/ModificationHandlerFactory.js.map +1 -1
  11. package/dist/src/modifications/acl/index.js +5 -1
  12. package/dist/src/modifications/acl/index.js.map +1 -1
  13. package/dist/src/modifications/columns/CreateColumnModification.d.ts.map +1 -1
  14. package/dist/src/modifications/columns/CreateColumnModification.js +1 -0
  15. package/dist/src/modifications/columns/CreateColumnModification.js.map +1 -1
  16. package/dist/src/modifications/columns/UpdateColumnDefinitionModification.d.ts +8 -1
  17. package/dist/src/modifications/columns/UpdateColumnDefinitionModification.d.ts.map +1 -1
  18. package/dist/src/modifications/columns/UpdateColumnDefinitionModification.js +16 -0
  19. package/dist/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
  20. package/dist/src/modifications/columns/UpdateColumnNameModification.d.ts.map +1 -1
  21. package/dist/src/modifications/columns/UpdateColumnNameModification.js +62 -3
  22. package/dist/src/modifications/columns/UpdateColumnNameModification.js.map +1 -1
  23. package/dist/src/modifications/columns/index.js +5 -1
  24. package/dist/src/modifications/columns/index.js.map +1 -1
  25. package/dist/src/modifications/constraints/index.js +5 -1
  26. package/dist/src/modifications/constraints/index.js.map +1 -1
  27. package/dist/src/modifications/differs/index.js +5 -1
  28. package/dist/src/modifications/differs/index.js.map +1 -1
  29. package/dist/src/modifications/entities/CreateEntityModification.d.ts +3 -1
  30. package/dist/src/modifications/entities/CreateEntityModification.d.ts.map +1 -1
  31. package/dist/src/modifications/entities/CreateEntityModification.js +10 -3
  32. package/dist/src/modifications/entities/CreateEntityModification.js.map +1 -1
  33. package/dist/src/modifications/entities/CreateViewModification.d.ts +3 -1
  34. package/dist/src/modifications/entities/CreateViewModification.d.ts.map +1 -1
  35. package/dist/src/modifications/entities/CreateViewModification.js +4 -1
  36. package/dist/src/modifications/entities/CreateViewModification.js.map +1 -1
  37. package/dist/src/modifications/entities/ToggleEventLogModification.d.ts +7 -0
  38. package/dist/src/modifications/entities/ToggleEventLogModification.d.ts.map +1 -0
  39. package/dist/src/modifications/entities/ToggleEventLogModification.js +63 -0
  40. package/dist/src/modifications/entities/ToggleEventLogModification.js.map +1 -0
  41. package/dist/src/modifications/entities/index.d.ts +1 -0
  42. package/dist/src/modifications/entities/index.d.ts.map +1 -1
  43. package/dist/src/modifications/entities/index.js +6 -1
  44. package/dist/src/modifications/entities/index.js.map +1 -1
  45. package/dist/src/modifications/enums/CreateEnumModification.d.ts +1 -1
  46. package/dist/src/modifications/enums/CreateEnumModification.d.ts.map +1 -1
  47. package/dist/src/modifications/enums/UpdateEnumModification.d.ts +1 -1
  48. package/dist/src/modifications/enums/UpdateEnumModification.d.ts.map +1 -1
  49. package/dist/src/modifications/enums/enumUtils.d.ts +1 -1
  50. package/dist/src/modifications/enums/enumUtils.d.ts.map +1 -1
  51. package/dist/src/modifications/enums/enumUtils.js.map +1 -1
  52. package/dist/src/modifications/enums/index.js +5 -1
  53. package/dist/src/modifications/enums/index.js.map +1 -1
  54. package/dist/src/modifications/fields/UpdateFieldNameModification.d.ts +1 -0
  55. package/dist/src/modifications/fields/UpdateFieldNameModification.d.ts.map +1 -1
  56. package/dist/src/modifications/fields/UpdateFieldNameModification.js +13 -2
  57. package/dist/src/modifications/fields/UpdateFieldNameModification.js.map +1 -1
  58. package/dist/src/modifications/fields/index.js +5 -1
  59. package/dist/src/modifications/fields/index.js.map +1 -1
  60. package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts +2 -1
  61. package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts.map +1 -1
  62. package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js +3 -2
  63. package/dist/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js.map +1 -1
  64. package/dist/src/modifications/relations/CreateRelationModification.d.ts +5 -4
  65. package/dist/src/modifications/relations/CreateRelationModification.d.ts.map +1 -1
  66. package/dist/src/modifications/relations/CreateRelationModification.js +10 -2
  67. package/dist/src/modifications/relations/CreateRelationModification.js.map +1 -1
  68. package/dist/src/modifications/relations/ToggleManyHasManyEventLogModification.d.ts +8 -0
  69. package/dist/src/modifications/relations/ToggleManyHasManyEventLogModification.d.ts.map +1 -0
  70. package/dist/src/modifications/relations/ToggleManyHasManyEventLogModification.js +81 -0
  71. package/dist/src/modifications/relations/ToggleManyHasManyEventLogModification.js.map +1 -0
  72. package/dist/src/modifications/relations/UpdateRelationOrderByModification.d.ts +1 -1
  73. package/dist/src/modifications/relations/UpdateRelationOrderByModification.d.ts.map +1 -1
  74. package/dist/src/modifications/relations/index.d.ts +1 -0
  75. package/dist/src/modifications/relations/index.d.ts.map +1 -1
  76. package/dist/src/modifications/relations/index.js +6 -1
  77. package/dist/src/modifications/relations/index.js.map +1 -1
  78. package/dist/src/modifications/relations/normalization.d.ts +8 -0
  79. package/dist/src/modifications/relations/normalization.d.ts.map +1 -0
  80. package/dist/src/modifications/relations/normalization.js +16 -0
  81. package/dist/src/modifications/relations/normalization.js.map +1 -0
  82. package/dist/src/modifications/utils/createJunctionTable.d.ts.map +1 -1
  83. package/dist/src/modifications/utils/createJunctionTable.js +4 -2
  84. package/dist/src/modifications/utils/createJunctionTable.js.map +1 -1
  85. package/dist/src/modifications/utils/renameConstraintsHelper.d.ts.map +1 -1
  86. package/dist/src/modifications/utils/renameConstraintsHelper.js.map +1 -1
  87. package/dist/src/modifications/utils/schemaUpdateUtils.d.ts.map +1 -1
  88. package/dist/src/modifications/utils/schemaUpdateUtils.js.map +1 -1
  89. package/dist/src/modifications/utils/sqlUpdateUtils.d.ts +2 -0
  90. package/dist/src/modifications/utils/sqlUpdateUtils.d.ts.map +1 -1
  91. package/dist/src/modifications/utils/sqlUpdateUtils.js +9 -1
  92. package/dist/src/modifications/utils/sqlUpdateUtils.js.map +1 -1
  93. package/dist/src/modifications/validation/index.js +5 -1
  94. package/dist/src/modifications/validation/index.js.map +1 -1
  95. package/dist/src/tsconfig.tsbuildinfo +1 -1
  96. package/dist/tests/cases/integration/convertOneHasManyToManyHasManyRelation.test.js +3 -0
  97. package/dist/tests/cases/integration/convertOneHasManyToManyHasManyRelation.test.js.map +1 -1
  98. package/dist/tests/cases/integration/createEntity.test.js +6 -0
  99. package/dist/tests/cases/integration/createEntity.test.js.map +1 -1
  100. package/dist/tests/cases/integration/createManyHasMany.test.js +6 -0
  101. package/dist/tests/cases/integration/createManyHasMany.test.js.map +1 -1
  102. package/dist/tests/cases/integration/createManyHasOne.test.js +3 -0
  103. package/dist/tests/cases/integration/createManyHasOne.test.js.map +1 -1
  104. package/dist/tests/cases/integration/createOneHasMany.test.js +3 -0
  105. package/dist/tests/cases/integration/createOneHasMany.test.js.map +1 -1
  106. package/dist/tests/cases/integration/createOneHasOne.test.js +6 -0
  107. package/dist/tests/cases/integration/createOneHasOne.test.js.map +1 -1
  108. package/dist/tests/cases/integration/createView.test.js +3 -0
  109. package/dist/tests/cases/integration/createView.test.js.map +1 -1
  110. package/dist/tests/cases/integration/toggleEventLog.test.d.ts +2 -0
  111. package/dist/tests/cases/integration/toggleEventLog.test.d.ts.map +1 -0
  112. package/dist/tests/cases/integration/toggleEventLog.test.js +68 -0
  113. package/dist/tests/cases/integration/toggleEventLog.test.js.map +1 -0
  114. package/dist/tests/cases/integration/toggleJunctionEventLog.test.d.ts +2 -0
  115. package/dist/tests/cases/integration/toggleJunctionEventLog.test.d.ts.map +1 -0
  116. package/dist/tests/cases/integration/toggleJunctionEventLog.test.js +75 -0
  117. package/dist/tests/cases/integration/toggleJunctionEventLog.test.js.map +1 -0
  118. package/dist/tests/cases/integration/updateFieldName.test.js +40 -0
  119. package/dist/tests/cases/integration/updateFieldName.test.js.map +1 -1
  120. package/dist/tests/cases/integration/updateView.test.js +27 -0
  121. package/dist/tests/cases/integration/updateView.test.js.map +1 -1
  122. package/dist/tests/scripts/checkCreateConsistentMigrations.js +5 -0
  123. package/dist/tests/scripts/checkCreateConsistentMigrations.js.map +1 -1
  124. package/dist/tests/src/tests.d.ts +1 -1
  125. package/dist/tests/src/tests.d.ts.map +1 -1
  126. package/dist/tests/src/tests.js +19 -39
  127. package/dist/tests/src/tests.js.map +1 -1
  128. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  129. package/package.json +7 -8
  130. package/src/SchemaDiffer.ts +4 -0
  131. package/src/modifications/ModificationHandlerFactory.ts +4 -0
  132. package/src/modifications/columns/CreateColumnModification.ts +1 -0
  133. package/src/modifications/columns/UpdateColumnDefinitionModification.ts +30 -1
  134. package/src/modifications/columns/UpdateColumnNameModification.ts +62 -3
  135. package/src/modifications/entities/CreateEntityModification.ts +14 -4
  136. package/src/modifications/entities/CreateViewModification.ts +7 -2
  137. package/src/modifications/entities/ToggleEventLogModification.ts +83 -0
  138. package/src/modifications/entities/index.ts +1 -0
  139. package/src/modifications/enums/CreateEnumModification.ts +1 -1
  140. package/src/modifications/enums/UpdateEnumModification.ts +1 -1
  141. package/src/modifications/enums/enumUtils.ts +1 -1
  142. package/src/modifications/fields/UpdateFieldNameModification.ts +26 -4
  143. package/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.ts +4 -3
  144. package/src/modifications/relations/CreateRelationModification.ts +17 -5
  145. package/src/modifications/relations/ToggleManyHasManyEventLogModification.ts +102 -0
  146. package/src/modifications/relations/UpdateRelationOrderByModification.ts +1 -1
  147. package/src/modifications/relations/index.ts +1 -0
  148. package/src/modifications/relations/normalization.ts +21 -0
  149. package/src/modifications/utils/createJunctionTable.ts +4 -2
  150. package/src/modifications/utils/renameConstraintsHelper.ts +2 -2
  151. package/src/modifications/utils/schemaUpdateUtils.ts +2 -2
  152. package/src/modifications/utils/sqlUpdateUtils.ts +8 -0
  153. package/tests/cases/integration/convertOneHasManyToManyHasManyRelation.test.ts +3 -0
  154. package/tests/cases/integration/createEntity.test.ts +6 -0
  155. package/tests/cases/integration/createManyHasMany.test.ts +6 -0
  156. package/tests/cases/integration/createManyHasOne.test.ts +3 -0
  157. package/tests/cases/integration/createOneHasMany.test.ts +3 -0
  158. package/tests/cases/integration/createOneHasOne.test.ts +6 -0
  159. package/tests/cases/integration/createView.test.ts +3 -0
  160. package/tests/cases/integration/toggleEventLog.test.ts +54 -0
  161. package/tests/cases/integration/toggleJunctionEventLog.test.ts +63 -0
  162. package/tests/cases/integration/updateFieldName.test.ts +47 -0
  163. package/tests/cases/integration/updateView.test.ts +27 -0
  164. package/tests/scripts/checkCreateConsistentMigrations.ts +6 -1
  165. package/tests/src/tests.ts +18 -19
  166. package/tests/tsconfig.json +3 -0
@@ -13,6 +13,10 @@ export const createEventTrigger = (builder: MigrationBuilder, systemSchema: stri
13
13
  })
14
14
  }
15
15
 
16
+ export const dropEventTrigger = (builder: MigrationBuilder, tableName: Name) => {
17
+ builder.dropTrigger(tableName, 'log_event')
18
+ }
19
+
16
20
  export const createEventTrxTrigger = (builder: MigrationBuilder, systemSchema: string, tableName: Name) => {
17
21
  builder.createTrigger(tableName, 'log_event_trx', {
18
22
  when: 'AFTER',
@@ -27,3 +31,7 @@ export const createEventTrxTrigger = (builder: MigrationBuilder, systemSchema: s
27
31
  },
28
32
  })
29
33
  }
34
+
35
+ export const dropEventTrxTrigger = (builder: MigrationBuilder, tableName: Name) => {
36
+ builder.dropTrigger(tableName, 'log_event_trx')
37
+ }
@@ -48,6 +48,9 @@ testMigrations('convert one has many to many has many', {
48
48
  columnName: 'category_id',
49
49
  onDelete: 'cascade',
50
50
  },
51
+ eventLog: {
52
+ enabled: true,
53
+ },
51
54
  },
52
55
  },
53
56
  inverseSide: {
@@ -32,6 +32,9 @@ testMigrations('create a table (no relations, unique on column)', {
32
32
  primaryColumn: 'id',
33
33
  tableName: 'author',
34
34
  unique: {},
35
+ eventLog: {
36
+ enabled: true,
37
+ },
35
38
  },
36
39
  },
37
40
  {
@@ -135,6 +138,9 @@ testMigrations('create a view', {
135
138
  tableName: 'author',
136
139
  unique: {},
137
140
  view: { sql: "SELECT null as id, 'John' AS name" },
141
+ eventLog: {
142
+ enabled: true,
143
+ },
138
144
  },
139
145
  },
140
146
  ],
@@ -31,6 +31,9 @@ testMigrations('create many has many relation (post with categories)', {
31
31
  primaryColumn: 'id',
32
32
  tableName: 'category',
33
33
  unique: {},
34
+ eventLog: {
35
+ enabled: true,
36
+ },
34
37
  },
35
38
  },
36
39
  {
@@ -61,6 +64,9 @@ testMigrations('create many has many relation (post with categories)', {
61
64
  columnName: 'category_id',
62
65
  onDelete: Model.OnDelete.cascade,
63
66
  },
67
+ eventLog: {
68
+ enabled: true,
69
+ },
64
70
  },
65
71
  },
66
72
  },
@@ -33,6 +33,9 @@ testMigrations('create many has one relation (post with author)', {
33
33
  primaryColumn: 'id',
34
34
  tableName: 'post',
35
35
  unique: {},
36
+ eventLog: {
37
+ enabled: true,
38
+ },
36
39
  },
37
40
  },
38
41
  {
@@ -34,6 +34,9 @@ testMigrations('create one has many relation (post with locales)', {
34
34
  primaryColumn: 'id',
35
35
  tableName: 'post_locale',
36
36
  unique: {},
37
+ eventLog: {
38
+ enabled: true,
39
+ },
37
40
  },
38
41
  },
39
42
  {
@@ -31,6 +31,9 @@ testMigrations('create one has one relation (site with settings)', {
31
31
  primaryColumn: 'id',
32
32
  tableName: 'site',
33
33
  unique: {},
34
+ eventLog: {
35
+ enabled: true,
36
+ },
34
37
  },
35
38
  },
36
39
  {
@@ -50,6 +53,9 @@ testMigrations('create one has one relation (site with settings)', {
50
53
  primaryColumn: 'id',
51
54
  tableName: 'site_setting',
52
55
  unique: {},
56
+ eventLog: {
57
+ enabled: true,
58
+ },
53
59
  },
54
60
  },
55
61
  {
@@ -65,6 +65,9 @@ testMigrations('create view', {
65
65
  view: {
66
66
  sql: 'SELECT 1',
67
67
  },
68
+ eventLog: {
69
+ enabled: true,
70
+ },
68
71
  },
69
72
  },
70
73
  {
@@ -0,0 +1,54 @@
1
+ import { SchemaDefinition as def } from '@contember/schema-definition'
2
+ import { testMigrations } from '../../src/tests'
3
+ import { SQL } from '../../src/tags'
4
+
5
+ namespace EventLogNoConfig {
6
+ export class Author {
7
+ name = def.stringColumn()
8
+ }
9
+ }
10
+
11
+ namespace EventLogDisabled {
12
+ @def.DisableEventLog()
13
+ export class Author {
14
+ name = def.stringColumn()
15
+ }
16
+ }
17
+
18
+
19
+ testMigrations('event log - disable', {
20
+ originalSchema: def.createModel(EventLogNoConfig),
21
+ updatedSchema: def.createModel(EventLogDisabled),
22
+ diff: [
23
+ {
24
+ modification: 'toggleEventLog',
25
+ entityName: 'Author',
26
+ enabled: false,
27
+ },
28
+ ],
29
+ sql: SQL `DROP TRIGGER "log_event" ON "author";
30
+ DROP TRIGGER "log_event_trx" ON "author";`,
31
+ })
32
+
33
+ testMigrations('event log - enable', {
34
+ originalSchema: def.createModel(EventLogDisabled),
35
+ updatedSchema: def.createModel(EventLogNoConfig),
36
+ diff: [
37
+ {
38
+ modification: 'toggleEventLog',
39
+ entityName: 'Author',
40
+ enabled: true,
41
+ },
42
+ ],
43
+ sql: SQL`CREATE TRIGGER "log_event"
44
+ AFTER INSERT OR UPDATE OR DELETE
45
+ ON "author"
46
+ FOR EACH ROW
47
+ EXECUTE PROCEDURE "system"."trigger_event"($pga$id$pga$);
48
+ CREATE CONSTRAINT TRIGGER "log_event_trx"
49
+ AFTER INSERT OR UPDATE OR DELETE
50
+ ON "author"
51
+ DEFERRABLE INITIALLY DEFERRED
52
+ FOR EACH ROW
53
+ EXECUTE PROCEDURE "system"."trigger_event_commit"();`,
54
+ })
@@ -0,0 +1,63 @@
1
+ import { SchemaDefinition as def } from '@contember/schema-definition'
2
+ import { testMigrations } from '../../src/tests'
3
+ import { SQL } from '../../src/tags'
4
+
5
+ namespace EventLogNoConfig {
6
+ export class Author {
7
+ name = def.stringColumn()
8
+ tags = def.manyHasMany(Tag)
9
+ }
10
+ export class Tag {
11
+ name = def.stringColumn()
12
+ }
13
+ }
14
+
15
+ namespace EventLogDisabled {
16
+ export class Author {
17
+ name = def.stringColumn()
18
+ tags = def.manyHasMany(Tag).joiningTable({ eventLog: { enabled: false } })
19
+ }
20
+
21
+ export class Tag {
22
+ name = def.stringColumn()
23
+ }
24
+ }
25
+
26
+ testMigrations('event log junction - disable', {
27
+ originalSchema: def.createModel(EventLogNoConfig),
28
+ updatedSchema: def.createModel(EventLogDisabled),
29
+ diff: [
30
+ {
31
+ modification: 'toggleJunctionEventLog',
32
+ entityName: 'Author',
33
+ fieldName: 'tags',
34
+ enabled: false,
35
+ },
36
+ ],
37
+ sql: SQL `DROP TRIGGER "log_event" ON "author_tags";
38
+ DROP TRIGGER "log_event_trx" ON "author_tags";`,
39
+ })
40
+
41
+ testMigrations('event log junction - enable', {
42
+ originalSchema: def.createModel(EventLogDisabled),
43
+ updatedSchema: def.createModel(EventLogNoConfig),
44
+ diff: [
45
+ {
46
+ modification: 'toggleJunctionEventLog',
47
+ entityName: 'Author',
48
+ fieldName: 'tags',
49
+ enabled: true,
50
+ },
51
+ ],
52
+ sql: SQL`CREATE TRIGGER "log_event"
53
+ AFTER INSERT OR UPDATE OR DELETE
54
+ ON "author_tags"
55
+ FOR EACH ROW
56
+ EXECUTE PROCEDURE "system"."trigger_event"($pga$author_id$pga$, $pga$tag_id$pga$);
57
+ CREATE CONSTRAINT TRIGGER "log_event_trx"
58
+ AFTER INSERT OR UPDATE OR DELETE
59
+ ON "author_tags"
60
+ DEFERRABLE INITIALLY DEFERRED
61
+ FOR EACH ROW
62
+ EXECUTE PROCEDURE "system"."trigger_event_commit"();`,
63
+ })
@@ -22,6 +22,27 @@ testMigrations('rename a field', {
22
22
  noDiff: true,
23
23
  })
24
24
 
25
+ testMigrations('rename a field with column', {
26
+ originalSchema: new SchemaBuilder()
27
+ .entity('Author', e => e.column('firstName', c => c.type(Model.ColumnType.String)))
28
+ .buildSchema(),
29
+ updatedSchema: new SchemaBuilder()
30
+ .entity('Author', e => e.column('name', c => c.type(Model.ColumnType.String)))
31
+ .buildSchema(),
32
+ diff: [
33
+ {
34
+ modification: 'updateFieldName',
35
+ entityName: 'Author',
36
+ fieldName: 'firstName',
37
+ newFieldName: 'name',
38
+ columnName: 'name',
39
+ },
40
+ ],
41
+ sql: SQL`ALTER TABLE "author" RENAME "first_name" TO "name";`,
42
+ noDiff: true,
43
+ })
44
+
45
+
25
46
  testMigrations('rename a field with a constraint', {
26
47
  originalSchema: new SchemaBuilder()
27
48
  .entity('Author', e => e.column('slug', c => c.type(Model.ColumnType.String).unique()))
@@ -65,6 +86,32 @@ testMigrations('rename a relation', {
65
86
  noDiff: true,
66
87
  })
67
88
 
89
+
90
+ testMigrations('rename a relation with joining column', {
91
+ originalSchema: new SchemaBuilder()
92
+ .entity('Post', e => e.column('title').manyHasOne('user', r => r.target('Author').inversedBy('posts')))
93
+ .entity('Author', e => e.column('name'))
94
+ .buildSchema(),
95
+ updatedSchema: new SchemaBuilder()
96
+ .entity('Post', e =>
97
+ e.column('title').manyHasOne('author', r => r.target('Author').inversedBy('posts')),
98
+ )
99
+ .entity('Author', e => e.column('name'))
100
+ .buildSchema(),
101
+ diff: [
102
+ {
103
+ modification: 'updateFieldName',
104
+ entityName: 'Post',
105
+ fieldName: 'user',
106
+ newFieldName: 'author',
107
+ columnName: 'author_id',
108
+ },
109
+ ],
110
+ sql: SQL`ALTER TABLE "post" RENAME "user_id" TO "author_id";`,
111
+ noDiff: true,
112
+ })
113
+
114
+
68
115
  testMigrations('rename relation with acl', {
69
116
  originalSchema: new SchemaBuilder()
70
117
  .entity('Post', e => e.column('title').manyHasOne('user', r => r.target('Author').inversedBy('posts')))
@@ -80,6 +80,9 @@ testMigrations('update a view 1', {
80
80
  view: {
81
81
  sql: "SELECT null as id, 'Jack' AS name",
82
82
  },
83
+ eventLog: {
84
+ enabled: true,
85
+ },
83
86
  },
84
87
  },
85
88
  {
@@ -112,6 +115,9 @@ testMigrations('update a view 1', {
112
115
  'Author',
113
116
  ],
114
117
  },
118
+ eventLog: {
119
+ enabled: true,
120
+ },
115
121
  },
116
122
  },
117
123
  {
@@ -144,6 +150,9 @@ testMigrations('update a view 1', {
144
150
  'Author2',
145
151
  ],
146
152
  },
153
+ eventLog: {
154
+ enabled: true,
155
+ },
147
156
  },
148
157
  },
149
158
  ],
@@ -215,6 +224,9 @@ testMigrations('update a view 2', {
215
224
  'Author',
216
225
  ],
217
226
  },
227
+ eventLog: {
228
+ enabled: true,
229
+ },
218
230
  },
219
231
  },
220
232
  {
@@ -247,6 +259,9 @@ testMigrations('update a view 2', {
247
259
  'Author2',
248
260
  ],
249
261
  },
262
+ eventLog: {
263
+ enabled: true,
264
+ },
250
265
  },
251
266
  },
252
267
  ],
@@ -313,6 +328,9 @@ testMigrations('update a view 3', {
313
328
  'Author2',
314
329
  ],
315
330
  },
331
+ eventLog: {
332
+ enabled: true,
333
+ },
316
334
  },
317
335
  },
318
336
  ],
@@ -381,6 +399,9 @@ testMigrations('update a view 4', {
381
399
  view: {
382
400
  sql: "SELECT null as id, 'Jack' AS name",
383
401
  },
402
+ eventLog: {
403
+ enabled: true,
404
+ },
384
405
  },
385
406
  },
386
407
  {
@@ -413,6 +434,9 @@ testMigrations('update a view 4', {
413
434
  'Author',
414
435
  ],
415
436
  },
437
+ eventLog: {
438
+ enabled: true,
439
+ },
416
440
  },
417
441
  },
418
442
  {
@@ -445,6 +469,9 @@ testMigrations('update a view 4', {
445
469
  'Author2',
446
470
  ],
447
471
  },
472
+ eventLog: {
473
+ enabled: true,
474
+ },
448
475
  },
449
476
  },
450
477
  ],
@@ -6,8 +6,10 @@ import {
6
6
  SchemaDiffer,
7
7
  SchemaMigrator,
8
8
  } from '../../src'
9
- import { emptySchema } from '@contember/schema-utils'
9
+ import { emptySchema, schemaType } from '@contember/schema-utils'
10
10
  ;(async () => {
11
+ // eslint-disable-next-line no-console
12
+ console.log(relative(process.cwd(), process.argv[2]))
11
13
  const migrationsResolver = new MigrationsResolver(new MigrationFilesManager(relative(process.cwd(), process.argv[2])))
12
14
  const modificationHandlerFactory = new ModificationHandlerFactory(ModificationHandlerFactory.defaultFactoryMap)
13
15
  const differ = new SchemaDiffer(new SchemaMigrator(modificationHandlerFactory))
@@ -15,10 +17,13 @@ import { emptySchema } from '@contember/schema-utils'
15
17
  let schema = emptySchema
16
18
  for (const migration of await migrationsResolver.getMigrations()) {
17
19
  const nextSchema = migrator.applyModifications(schema, migration.modifications, migration.formatVersion)
20
+ schemaType(nextSchema)
18
21
  differ.diffSchemas(schema, nextSchema)
19
22
 
20
23
  schema = nextSchema
21
24
  }
25
+ // eslint-disable-next-line no-console
26
+ console.log('OK')
22
27
  })().catch(e => {
23
28
  // eslint-disable-next-line no-console
24
29
  console.error(e)
@@ -1,8 +1,7 @@
1
1
  import { Migration, ModificationHandlerFactory, SchemaDiffer, SchemaMigrator, VERSION_LATEST } from '../../src'
2
2
  import { Acl, Model } from '@contember/schema'
3
3
  import { createMigrationBuilder } from '@contember/database-migrations'
4
- import * as assert from 'uvu/assert'
5
- import { suite } from 'uvu'
4
+ import { assert, describe, it } from 'vitest'
6
5
 
7
6
  const modificationFactory = new ModificationHandlerFactory(ModificationHandlerFactory.defaultFactoryMap)
8
7
  const schemaMigrator = new SchemaMigrator(modificationFactory)
@@ -32,13 +31,13 @@ export function testDiffSchemas(
32
31
  { model: updatedModel, acl: updatedAcl, validation: {} },
33
32
  false,
34
33
  )
35
- assert.equal(actualDiff, expectedDiff)
34
+ assert.deepStrictEqual(actualDiff, expectedDiff)
36
35
  const schema = schemaMigrator.applyModifications(
37
36
  { model: originalModel, acl: originalAcl, validation: {} },
38
37
  actualDiff,
39
38
  VERSION_LATEST,
40
39
  )
41
- assert.equal(schema, {
40
+ assert.deepStrictEqual(schema, {
42
41
  model: updatedModel,
43
42
  acl: updatedAcl,
44
43
  validation: {},
@@ -58,7 +57,7 @@ export function testApplyDiff(
58
57
  VERSION_LATEST,
59
58
  )
60
59
 
61
- assert.equal(actualSchema, {
60
+ assert.deepStrictEqual(actualSchema, {
62
61
  model: expectedModel,
63
62
  acl: expectedAcl,
64
63
  validation: {},
@@ -77,19 +76,19 @@ export function testGenerateSql(originalSchema: Model.Schema, diff: Migration.Mo
77
76
  assert.equal(actual, expectedSql)
78
77
  }
79
78
 
80
- export function testMigrations(title: string, ctx: TestContext) {
81
- const migrationsSuite = suite<TestContext>(title, ctx)
82
- migrationsSuite('diff schemas', ({ originalSchema, updatedSchema, diff, noDiff }) => {
83
- if (noDiff) {
84
- return
85
- }
86
- testDiffSchemas(originalSchema, updatedSchema, diff, ctx.originalAcl, ctx.updatedAcl)
79
+ export function testMigrations(title: string, { originalSchema, updatedSchema, diff, noDiff, originalAcl, updatedAcl, sql }: TestContext) {
80
+ describe(title, () => {
81
+ it('diff schemas', () => {
82
+ if (noDiff) {
83
+ return
84
+ }
85
+ testDiffSchemas(originalSchema, updatedSchema, diff, originalAcl, updatedAcl)
86
+ })
87
+ it('apply diff', () => {
88
+ testApplyDiff(originalSchema, diff, updatedSchema, originalAcl, updatedAcl)
89
+ })
90
+ it('generate sql', () => {
91
+ testGenerateSql(originalSchema, diff, sql)
92
+ })
87
93
  })
88
- migrationsSuite('apply diff', ({ originalSchema, diff, updatedSchema }) => {
89
- testApplyDiff(originalSchema, diff, updatedSchema, ctx.originalAcl, ctx.updatedAcl)
90
- })
91
- migrationsSuite('generate sql', ({ originalSchema, diff, sql }) => {
92
- testGenerateSql(originalSchema, diff, sql)
93
- })
94
- migrationsSuite.run()
95
94
  }
@@ -7,6 +7,9 @@
7
7
  "references": [
8
8
  {
9
9
  "path": "../src"
10
+ },
11
+ {
12
+ "path": "../../schema-definition/src"
10
13
  }
11
14
  ]
12
15
  }