@contember/schema-migrations 2.0.1 → 2.1.0-alpha.2

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 (153) hide show
  1. package/dist/development/src/MigrationDescriber.cjs +2 -1
  2. package/dist/development/src/MigrationDescriber.cjs.map +1 -1
  3. package/dist/development/src/MigrationDescriber.js +2 -1
  4. package/dist/development/src/MigrationDescriber.js.map +1 -1
  5. package/dist/development/src/modifications/columns/CreateColumnModification.cjs +2 -1
  6. package/dist/development/src/modifications/columns/CreateColumnModification.cjs.map +1 -1
  7. package/dist/development/src/modifications/columns/CreateColumnModification.js +2 -1
  8. package/dist/development/src/modifications/columns/CreateColumnModification.js.map +1 -1
  9. package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.cjs +8 -3
  10. package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.cjs.map +1 -1
  11. package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.js +8 -3
  12. package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
  13. package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.cjs +15 -9
  14. package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.cjs.map +1 -1
  15. package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.js +15 -9
  16. package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.js.map +1 -1
  17. package/dist/development/src/modifications/constraints/RemoveUniqueConstraintModification.cjs +34 -16
  18. package/dist/development/src/modifications/constraints/RemoveUniqueConstraintModification.cjs.map +1 -1
  19. package/dist/development/src/modifications/constraints/RemoveUniqueConstraintModification.js +34 -16
  20. package/dist/development/src/modifications/constraints/RemoveUniqueConstraintModification.js.map +1 -1
  21. package/dist/development/src/modifications/entities/CreateEntityModification.cjs +2 -1
  22. package/dist/development/src/modifications/entities/CreateEntityModification.cjs.map +1 -1
  23. package/dist/development/src/modifications/entities/CreateEntityModification.js +2 -1
  24. package/dist/development/src/modifications/entities/CreateEntityModification.js.map +1 -1
  25. package/dist/development/src/modifications/entities/CreateViewModification.cjs +12 -2
  26. package/dist/development/src/modifications/entities/CreateViewModification.cjs.map +1 -1
  27. package/dist/development/src/modifications/entities/CreateViewModification.js +12 -2
  28. package/dist/development/src/modifications/entities/CreateViewModification.js.map +1 -1
  29. package/dist/development/src/modifications/indexes/CreateIndexModification.cjs +2 -2
  30. package/dist/development/src/modifications/indexes/CreateIndexModification.cjs.map +1 -1
  31. package/dist/development/src/modifications/indexes/CreateIndexModification.js +2 -2
  32. package/dist/development/src/modifications/indexes/CreateIndexModification.js.map +1 -1
  33. package/dist/development/src/modifications/indexes/RemoveIndexModification.cjs +3 -3
  34. package/dist/development/src/modifications/indexes/RemoveIndexModification.cjs.map +1 -1
  35. package/dist/development/src/modifications/indexes/RemoveIndexModification.js +3 -3
  36. package/dist/development/src/modifications/indexes/RemoveIndexModification.js.map +1 -1
  37. package/dist/development/src/modifications/upgrade/RemoveIndexNamesModification.cjs +8 -2
  38. package/dist/development/src/modifications/upgrade/RemoveIndexNamesModification.cjs.map +1 -1
  39. package/dist/development/src/modifications/upgrade/RemoveIndexNamesModification.js +8 -2
  40. package/dist/development/src/modifications/upgrade/RemoveIndexNamesModification.js.map +1 -1
  41. package/dist/development/src/modifications/utils/columnUtils.cjs +1 -1
  42. package/dist/development/src/modifications/utils/columnUtils.cjs.map +1 -1
  43. package/dist/development/src/modifications/utils/columnUtils.js +1 -1
  44. package/dist/development/src/modifications/utils/columnUtils.js.map +1 -1
  45. package/dist/development/src/modifications/utils/schemaUpdateUtils.cjs +1 -0
  46. package/dist/development/src/modifications/utils/schemaUpdateUtils.cjs.map +1 -1
  47. package/dist/development/src/modifications/utils/schemaUpdateUtils.js +1 -0
  48. package/dist/development/src/modifications/utils/schemaUpdateUtils.js.map +1 -1
  49. package/dist/production/src/MigrationDescriber.cjs +2 -1
  50. package/dist/production/src/MigrationDescriber.cjs.map +1 -1
  51. package/dist/production/src/MigrationDescriber.js +2 -1
  52. package/dist/production/src/MigrationDescriber.js.map +1 -1
  53. package/dist/production/src/modifications/columns/CreateColumnModification.cjs +2 -1
  54. package/dist/production/src/modifications/columns/CreateColumnModification.cjs.map +1 -1
  55. package/dist/production/src/modifications/columns/CreateColumnModification.js +2 -1
  56. package/dist/production/src/modifications/columns/CreateColumnModification.js.map +1 -1
  57. package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.cjs +8 -3
  58. package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.cjs.map +1 -1
  59. package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.js +8 -3
  60. package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
  61. package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.cjs +15 -9
  62. package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.cjs.map +1 -1
  63. package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.js +15 -9
  64. package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.js.map +1 -1
  65. package/dist/production/src/modifications/constraints/RemoveUniqueConstraintModification.cjs +34 -16
  66. package/dist/production/src/modifications/constraints/RemoveUniqueConstraintModification.cjs.map +1 -1
  67. package/dist/production/src/modifications/constraints/RemoveUniqueConstraintModification.js +34 -16
  68. package/dist/production/src/modifications/constraints/RemoveUniqueConstraintModification.js.map +1 -1
  69. package/dist/production/src/modifications/entities/CreateEntityModification.cjs +2 -1
  70. package/dist/production/src/modifications/entities/CreateEntityModification.cjs.map +1 -1
  71. package/dist/production/src/modifications/entities/CreateEntityModification.js +2 -1
  72. package/dist/production/src/modifications/entities/CreateEntityModification.js.map +1 -1
  73. package/dist/production/src/modifications/entities/CreateViewModification.cjs +12 -2
  74. package/dist/production/src/modifications/entities/CreateViewModification.cjs.map +1 -1
  75. package/dist/production/src/modifications/entities/CreateViewModification.js +12 -2
  76. package/dist/production/src/modifications/entities/CreateViewModification.js.map +1 -1
  77. package/dist/production/src/modifications/indexes/CreateIndexModification.cjs +2 -2
  78. package/dist/production/src/modifications/indexes/CreateIndexModification.cjs.map +1 -1
  79. package/dist/production/src/modifications/indexes/CreateIndexModification.js +2 -2
  80. package/dist/production/src/modifications/indexes/CreateIndexModification.js.map +1 -1
  81. package/dist/production/src/modifications/indexes/RemoveIndexModification.cjs +3 -3
  82. package/dist/production/src/modifications/indexes/RemoveIndexModification.cjs.map +1 -1
  83. package/dist/production/src/modifications/indexes/RemoveIndexModification.js +3 -3
  84. package/dist/production/src/modifications/indexes/RemoveIndexModification.js.map +1 -1
  85. package/dist/production/src/modifications/upgrade/RemoveIndexNamesModification.cjs +8 -2
  86. package/dist/production/src/modifications/upgrade/RemoveIndexNamesModification.cjs.map +1 -1
  87. package/dist/production/src/modifications/upgrade/RemoveIndexNamesModification.js +8 -2
  88. package/dist/production/src/modifications/upgrade/RemoveIndexNamesModification.js.map +1 -1
  89. package/dist/production/src/modifications/utils/columnUtils.cjs +1 -1
  90. package/dist/production/src/modifications/utils/columnUtils.cjs.map +1 -1
  91. package/dist/production/src/modifications/utils/columnUtils.js +1 -1
  92. package/dist/production/src/modifications/utils/columnUtils.js.map +1 -1
  93. package/dist/production/src/modifications/utils/schemaUpdateUtils.cjs +1 -0
  94. package/dist/production/src/modifications/utils/schemaUpdateUtils.cjs.map +1 -1
  95. package/dist/production/src/modifications/utils/schemaUpdateUtils.js +1 -0
  96. package/dist/production/src/modifications/utils/schemaUpdateUtils.js.map +1 -1
  97. package/dist/tests/src/tags.d.ts.map +1 -1
  98. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  99. package/dist/types/Migration.d.ts.map +1 -1
  100. package/dist/types/modifications/ModificationHandler.d.ts.map +1 -1
  101. package/dist/types/modifications/columns/CreateColumnModification.d.ts.map +1 -1
  102. package/dist/types/modifications/columns/UpdateColumnDefinitionModification.d.ts.map +1 -1
  103. package/dist/types/modifications/columns/columnUtils.d.ts.map +1 -1
  104. package/dist/types/modifications/constraints/CreateUniqueConstraintModification.d.ts +2 -2
  105. package/dist/types/modifications/constraints/CreateUniqueConstraintModification.d.ts.map +1 -1
  106. package/dist/types/modifications/constraints/RemoveUniqueConstraintModification.d.ts +7 -2
  107. package/dist/types/modifications/constraints/RemoveUniqueConstraintModification.d.ts.map +1 -1
  108. package/dist/types/modifications/constraints/utils.d.ts.map +1 -1
  109. package/dist/types/modifications/entities/CreateEntityModification.d.ts.map +1 -1
  110. package/dist/types/modifications/entities/CreateViewModification.d.ts +1 -0
  111. package/dist/types/modifications/entities/CreateViewModification.d.ts.map +1 -1
  112. package/dist/types/modifications/enums/enumUtils.d.ts.map +1 -1
  113. package/dist/types/modifications/indexes/utils.d.ts.map +1 -1
  114. package/dist/types/modifications/relations/helpers.d.ts.map +1 -1
  115. package/dist/types/modifications/relations/normalization.d.ts.map +1 -1
  116. package/dist/types/modifications/upgrade/RemoveIndexNamesModification.d.ts.map +1 -1
  117. package/dist/types/modifications/utils/columnUtils.d.ts +1 -1
  118. package/dist/types/modifications/utils/columnUtils.d.ts.map +1 -1
  119. package/dist/types/modifications/utils/createJunctionTable.d.ts.map +1 -1
  120. package/dist/types/modifications/utils/diffUtils.d.ts.map +1 -1
  121. package/dist/types/modifications/utils/getPrimaryColumnType.d.ts.map +1 -1
  122. package/dist/types/modifications/utils/schemaUpdateUtils.d.ts.map +1 -1
  123. package/dist/types/modifications/utils/sqlUpdateUtils.d.ts.map +1 -1
  124. package/dist/types/modifications/utils/stringArrayEquals.d.ts.map +1 -1
  125. package/dist/types/modifications/utils/valueUtils.d.ts.map +1 -1
  126. package/dist/types/modifications/utils/viewDependencies.d.ts.map +1 -1
  127. package/dist/types/tsconfig.tsbuildinfo +1 -1
  128. package/dist/types/utils/PartialEntity.d.ts +1 -1
  129. package/dist/types/utils/PartialEntity.d.ts.map +1 -1
  130. package/dist/types/utils/dbHelpers.d.ts.map +1 -1
  131. package/dist/types/utils/isDefined.d.ts.map +1 -1
  132. package/dist/types/utils/isIt.d.ts.map +1 -1
  133. package/package.json +7 -7
  134. package/src/MigrationDescriber.ts +2 -2
  135. package/src/modifications/columns/CreateColumnModification.ts +1 -0
  136. package/src/modifications/columns/UpdateColumnDefinitionModification.ts +8 -3
  137. package/src/modifications/constraints/CreateUniqueConstraintModification.ts +19 -10
  138. package/src/modifications/constraints/RemoveUniqueConstraintModification.ts +52 -19
  139. package/src/modifications/entities/CreateEntityModification.ts +1 -0
  140. package/src/modifications/entities/CreateViewModification.ts +13 -2
  141. package/src/modifications/indexes/CreateIndexModification.ts +2 -2
  142. package/src/modifications/indexes/RemoveIndexModification.ts +3 -3
  143. package/src/modifications/upgrade/RemoveIndexNamesModification.ts +8 -2
  144. package/src/modifications/utils/columnUtils.ts +6 -3
  145. package/src/modifications/utils/schemaUpdateUtils.ts +1 -0
  146. package/src/utils/PartialEntity.ts +1 -1
  147. package/tests/cases/integration/convertManyHasOneToOneHasOneRelation.test.ts +1 -0
  148. package/tests/cases/integration/createAndDropIndex.test.ts +1 -0
  149. package/tests/cases/integration/createColumn.test.ts +27 -0
  150. package/tests/cases/integration/createEntity.test.ts +69 -0
  151. package/tests/cases/integration/createUnique.test.ts +91 -1
  152. package/tests/cases/integration/removeField.test.ts +6 -4
  153. package/tests/cases/integration/updateColumnDefinition.test.ts +27 -0
@@ -92,7 +92,9 @@ describe('change unique timing', () => testMigrations({
92
92
  diff: [
93
93
  removeUniqueConstraintModification.createModification({
94
94
  entityName: 'Author',
95
- fields: ['email'],
95
+ unique: {
96
+ fields: ['email'],
97
+ },
96
98
  }),
97
99
  createUniqueConstraintModification.createModification({
98
100
  entityName: 'Author',
@@ -145,3 +147,91 @@ describe('create unique using decorator', () => testMigrations({
145
147
  sql: SQL`ALTER TABLE "author"
146
148
  ADD UNIQUE ("email") INITIALLY DEFERRED;`,
147
149
  }))
150
+
151
+ namespace AuthorWithUniqueIndex {
152
+ @c.Unique({ fields: ['email'], index: true, nulls: 'not distinct' })
153
+ export class Author {
154
+ email = c.stringColumn()
155
+ }
156
+ }
157
+
158
+ describe('create unique index', () => testMigrations({
159
+ original: createSchema({
160
+ Author: class Author {
161
+ email = c.stringColumn()
162
+ },
163
+ }),
164
+ updated: createSchema(AuthorWithUniqueIndex),
165
+ diff: [
166
+ createUniqueConstraintModification.createModification({
167
+ entityName: 'Author',
168
+ unique: {
169
+ fields: ['email'],
170
+ index: true,
171
+ nulls: 'not distinct',
172
+ },
173
+ }),
174
+ ],
175
+ sql: SQL`CREATE UNIQUE INDEX ON "author" ("email") NULLS NOT DISTINCT;`,
176
+ }))
177
+
178
+ namespace ViewWithUniqueIndexOriginal {
179
+ @c.View(`select 1 as id, 'foo@localhost' as email)`)
180
+ export class Author {
181
+ email = c.stringColumn()
182
+ }
183
+ }
184
+
185
+ namespace ViewWithUniqueIndexUpdated {
186
+ @c.View(`select 1 as id, 'foo@localhost' as email)`)
187
+ @c.Unique({ fields: ['email'], index: true })
188
+ export class Author {
189
+ email = c.stringColumn()
190
+ }
191
+ }
192
+
193
+ describe('create unique index', () => testMigrations({
194
+ original: createSchema(ViewWithUniqueIndexOriginal),
195
+ updated: createSchema(ViewWithUniqueIndexUpdated),
196
+ diff: [
197
+ createUniqueConstraintModification.createModification({
198
+ entityName: 'Author',
199
+ unique: {
200
+ fields: ['email'],
201
+ index: true,
202
+ },
203
+ }),
204
+ ],
205
+ sql: SQL``,
206
+ }))
207
+
208
+
209
+ namespace MaterializedViewWithUniqueIndexOriginal {
210
+ @c.View(`select 1 as id, 'foo@localhost' as email)`, { materialized: true })
211
+ export class Author {
212
+ email = c.stringColumn()
213
+ }
214
+ }
215
+
216
+ namespace MaterializedViewWithUniqueIndexUpdated {
217
+ @c.View(`select 1 as id, 'foo@localhost' as email)`, { materialized: true })
218
+ @c.Unique({ fields: ['email'], index: true })
219
+ export class Author {
220
+ email = c.stringColumn()
221
+ }
222
+ }
223
+
224
+ describe('create unique index', () => testMigrations({
225
+ original: createSchema(MaterializedViewWithUniqueIndexOriginal),
226
+ updated: createSchema(MaterializedViewWithUniqueIndexUpdated),
227
+ diff: [
228
+ createUniqueConstraintModification.createModification({
229
+ entityName: 'Author',
230
+ unique: {
231
+ fields: ['email'],
232
+ index: true,
233
+ },
234
+ }),
235
+ ],
236
+ sql: SQL`CREATE UNIQUE INDEX ON "author" ("email") NULLS DISTINCT;`,
237
+ }))
@@ -5,6 +5,7 @@ import { Model } from '@contember/schema'
5
5
  import { SQL } from '../../src/tags'
6
6
  import { SchemaDefinition as def } from '@contember/schema-definition'
7
7
  import { createDatabaseMetadata } from '@contember/database'
8
+ import { removeUniqueConstraintModification } from '../../../src'
8
9
 
9
10
 
10
11
  describe('remove relation (many has one)', () => testMigrations({
@@ -56,11 +57,12 @@ describe('remove relation (one has many)', () => testMigrations({
56
57
  .buildSchema(),
57
58
  },
58
59
  diff: [
59
- {
60
+ removeUniqueConstraintModification.createModification({
60
61
  entityName: 'PostLocale',
61
- fields: ['post', 'locale'],
62
- modification: 'removeUniqueConstraint',
63
- },
62
+ unique: {
63
+ fields: ['post', 'locale'],
64
+ },
65
+ }),
64
66
  {
65
67
  modification: 'removeField',
66
68
  entityName: 'PostLocale',
@@ -226,3 +226,30 @@ describe('set not null and fill with "using"', () => testMigrations({
226
226
  ],
227
227
  sql: SQL` ALTER TABLE "author" ALTER "name" SET DATA TYPE text USING COALESCE("name"::text, $pga$unnamed$pga$), ALTER "name" SET NOT NULL;`,
228
228
  }))
229
+
230
+
231
+ describe('change string to array string', () => testMigrations({
232
+ original: createSchema({
233
+ Author: class Author {
234
+ email = def.stringColumn()
235
+ },
236
+ }),
237
+ updated: createSchema({
238
+ Author: class Author {
239
+ email = def.stringColumn().list()
240
+ },
241
+ }),
242
+ diff: [
243
+ updateColumnDefinitionModification.createModification({
244
+ entityName: 'Author',
245
+ fieldName: 'email',
246
+ definition: {
247
+ type: Model.ColumnType.String,
248
+ columnType: 'text',
249
+ nullable: true,
250
+ list: true,
251
+ },
252
+ }),
253
+ ],
254
+ sql: SQL`ALTER TABLE "author" ALTER "email" SET DATA TYPE text[] USING ARRAY["email"]::text[];`,
255
+ }))