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

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 (34) hide show
  1. package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.cjs +1 -1
  2. package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.cjs.map +1 -1
  3. package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.js +1 -1
  4. package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
  5. package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.cjs +1 -1
  6. package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.cjs.map +1 -1
  7. package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.js +1 -1
  8. package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.js.map +1 -1
  9. package/dist/development/src/modifications/entities/RemoveEntityModification.cjs +5 -1
  10. package/dist/development/src/modifications/entities/RemoveEntityModification.cjs.map +1 -1
  11. package/dist/development/src/modifications/entities/RemoveEntityModification.js +5 -1
  12. package/dist/development/src/modifications/entities/RemoveEntityModification.js.map +1 -1
  13. package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.cjs +1 -1
  14. package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.cjs.map +1 -1
  15. package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.js +1 -1
  16. package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
  17. package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.cjs +1 -1
  18. package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.cjs.map +1 -1
  19. package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.js +1 -1
  20. package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.js.map +1 -1
  21. package/dist/production/src/modifications/entities/RemoveEntityModification.cjs +5 -1
  22. package/dist/production/src/modifications/entities/RemoveEntityModification.cjs.map +1 -1
  23. package/dist/production/src/modifications/entities/RemoveEntityModification.js +5 -1
  24. package/dist/production/src/modifications/entities/RemoveEntityModification.js.map +1 -1
  25. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  26. package/dist/types/modifications/columns/UpdateColumnDefinitionModification.d.ts.map +1 -1
  27. package/dist/types/modifications/entities/RemoveEntityModification.d.ts.map +1 -1
  28. package/dist/types/tsconfig.tsbuildinfo +1 -1
  29. package/package.json +7 -7
  30. package/src/modifications/columns/UpdateColumnDefinitionModification.ts +3 -1
  31. package/src/modifications/constraints/CreateUniqueConstraintModification.ts +1 -1
  32. package/src/modifications/entities/RemoveEntityModification.ts +5 -1
  33. package/tests/cases/integration/createUnique.test.ts +1 -1
  34. package/tests/cases/integration/updateColumnDefinition.test.ts +28 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contember/schema-migrations",
3
- "version": "2.1.0-alpha.2",
3
+ "version": "2.1.0-alpha.20",
4
4
  "license": "Apache-2.0",
5
5
  "main": "./dist/production/index.js",
6
6
  "typings": "./dist/types/index.d.ts",
@@ -23,16 +23,16 @@
23
23
  }
24
24
  },
25
25
  "dependencies": {
26
- "@contember/database": "2.1.0-alpha.2",
27
- "@contember/database-migrations": "2.1.0-alpha.2",
28
- "@contember/engine-common": "2.1.0-alpha.2",
29
- "@contember/schema": "2.1.0-alpha.2",
30
- "@contember/schema-utils": "2.1.0-alpha.2",
26
+ "@contember/database": "2.1.0-alpha.20",
27
+ "@contember/database-migrations": "2.1.0-alpha.20",
28
+ "@contember/engine-common": "2.1.0-alpha.20",
29
+ "@contember/schema": "2.1.0-alpha.20",
30
+ "@contember/schema-utils": "2.1.0-alpha.20",
31
31
  "fast-deep-equal": "^3.1.3",
32
32
  "rfc6902": "^5.1.1"
33
33
  },
34
34
  "devDependencies": {
35
- "@contember/schema-definition": "2.1.0-alpha.2"
35
+ "@contember/schema-definition": "2.1.0-alpha.20"
36
36
  },
37
37
  "peerDependencies": {
38
38
  "pg": "^8.9.0"
@@ -28,7 +28,9 @@ export class UpdateColumnDefinitionModificationHandler implements ModificationHa
28
28
 
29
29
  const columnNameWrapped = wrapIdentifier(oldColumn.columnName)
30
30
  const isChangedToArray = !oldColumn.list && newColumn.list
31
- const usingCast = (isChangedToArray ? `ARRAY[${columnNameWrapped}]` : columnNameWrapped) + `::${columnType}`
31
+ const usingCast = isChangedToArray
32
+ ? `CASE WHEN ${columnNameWrapped} IS NULL THEN ${newColumn.nullable ? 'NULL' : `ARRAY[]::${columnType}`} ELSE ARRAY[${columnNameWrapped}]::${columnType} END`
33
+ : `${columnNameWrapped}::${columnType}`
32
34
 
33
35
  const seedExpression = formatSeedExpression({
34
36
  model: this.schema.model,
@@ -34,7 +34,7 @@ export class CreateUniqueConstraintModificationHandler implements ModificationHa
34
34
  const columnNameIds = columns.map(wrapIdentifier)
35
35
 
36
36
  if ('index' in this.data.unique && this.data.unique.index) {
37
- const nulls = this.data.unique.nulls === 'not distinct' ? ' NULLS NOT DISTINCT' : ' NULLS DISTINCT'
37
+ const nulls = this.data.unique.nulls === 'not distinct' ? ' NULLS NOT DISTINCT' : ''
38
38
  builder.sql(`CREATE UNIQUE INDEX ON ${tableNameId} (${columnNameIds.join(', ')})${nulls}`)
39
39
  } else {
40
40
  let checkModifier = ''
@@ -31,7 +31,11 @@ export class RemoveEntityModificationHandler implements ModificationHandler<Remo
31
31
  public createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {
32
32
  const entity = this.schema.model.entities[this.data.entityName]
33
33
  if (entity.view) {
34
- builder.dropView(entity.tableName)
34
+ if (entity.view.materialized) {
35
+ builder.dropMaterializedView(entity.tableName)
36
+ } else {
37
+ builder.dropView(entity.tableName)
38
+ }
35
39
  return
36
40
  }
37
41
  if (this.options.formatVersion >= VERSION_REMOVE_REFERENCING_RELATIONS) {
@@ -233,5 +233,5 @@ describe('create unique index', () => testMigrations({
233
233
  },
234
234
  }),
235
235
  ],
236
- sql: SQL`CREATE UNIQUE INDEX ON "author" ("email") NULLS DISTINCT;`,
236
+ sql: SQL`CREATE UNIQUE INDEX ON "author" ("email");`,
237
237
  }))
@@ -251,5 +251,32 @@ describe('change string to array string', () => testMigrations({
251
251
  },
252
252
  }),
253
253
  ],
254
- sql: SQL`ALTER TABLE "author" ALTER "email" SET DATA TYPE text[] USING ARRAY["email"]::text[];`,
254
+ sql: SQL`ALTER TABLE "author" ALTER "email" SET DATA TYPE text[] USING CASE WHEN "email" IS NULL THEN NULL ELSE ARRAY["email"]::text[] END;`,
255
+ }))
256
+
257
+ describe('change string to array string not null', () => testMigrations({
258
+ original: createSchema({
259
+ Author: class Author {
260
+ email = def.stringColumn().notNull()
261
+ },
262
+ }),
263
+ updated: createSchema({
264
+ Author: class Author {
265
+ email = def.stringColumn().list().notNull()
266
+ },
267
+ }),
268
+ diff: [
269
+ updateColumnDefinitionModification.createModification({
270
+ entityName: 'Author',
271
+ fieldName: 'email',
272
+ definition: {
273
+ type: Model.ColumnType.String,
274
+ columnType: 'text',
275
+ nullable: false,
276
+ list: true,
277
+ },
278
+ }),
279
+ ],
280
+ sql: SQL`ALTER TABLE "author"
281
+ ALTER "email" SET DATA TYPE text[] USING CASE WHEN "email" IS NULL THEN ARRAY[]::text[] ELSE ARRAY["email"]::text[] END;`,
255
282
  }))