@contember/schema-migrations 2.1.0-alpha.25 → 2.1.0-alpha.27

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 (72) hide show
  1. package/dist/development/src/SchemaDiffer.cjs +1 -1
  2. package/dist/development/src/SchemaDiffer.cjs.map +1 -1
  3. package/dist/development/src/SchemaDiffer.js +1 -1
  4. package/dist/development/src/SchemaDiffer.js.map +1 -1
  5. package/dist/development/src/modifications/ModificationHandlerFactory.cjs +2 -0
  6. package/dist/development/src/modifications/ModificationHandlerFactory.cjs.map +1 -1
  7. package/dist/development/src/modifications/ModificationHandlerFactory.js +2 -0
  8. package/dist/development/src/modifications/ModificationHandlerFactory.js.map +1 -1
  9. package/dist/development/src/modifications/actions/PatchTriggerModification.cjs +44 -0
  10. package/dist/development/src/modifications/actions/PatchTriggerModification.cjs.map +1 -0
  11. package/dist/development/src/modifications/actions/PatchTriggerModification.js +44 -0
  12. package/dist/development/src/modifications/actions/PatchTriggerModification.js.map +1 -0
  13. package/dist/development/src/modifications/actions/UpdateTriggerModification.cjs +16 -1
  14. package/dist/development/src/modifications/actions/UpdateTriggerModification.cjs.map +1 -1
  15. package/dist/development/src/modifications/actions/UpdateTriggerModification.js +16 -1
  16. package/dist/development/src/modifications/actions/UpdateTriggerModification.js.map +1 -1
  17. package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.cjs +2 -1
  18. package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.cjs.map +1 -1
  19. package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.js +2 -1
  20. package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.js.map +1 -1
  21. package/dist/development/src/modifications/indexes/CreateIndexModification.cjs +4 -2
  22. package/dist/development/src/modifications/indexes/CreateIndexModification.cjs.map +1 -1
  23. package/dist/development/src/modifications/indexes/CreateIndexModification.js +4 -2
  24. package/dist/development/src/modifications/indexes/CreateIndexModification.js.map +1 -1
  25. package/dist/production/src/SchemaDiffer.cjs +1 -1
  26. package/dist/production/src/SchemaDiffer.cjs.map +1 -1
  27. package/dist/production/src/SchemaDiffer.js +1 -1
  28. package/dist/production/src/SchemaDiffer.js.map +1 -1
  29. package/dist/production/src/modifications/ModificationHandlerFactory.cjs +2 -0
  30. package/dist/production/src/modifications/ModificationHandlerFactory.cjs.map +1 -1
  31. package/dist/production/src/modifications/ModificationHandlerFactory.js +2 -0
  32. package/dist/production/src/modifications/ModificationHandlerFactory.js.map +1 -1
  33. package/dist/production/src/modifications/actions/PatchTriggerModification.cjs +44 -0
  34. package/dist/production/src/modifications/actions/PatchTriggerModification.cjs.map +1 -0
  35. package/dist/production/src/modifications/actions/PatchTriggerModification.js +44 -0
  36. package/dist/production/src/modifications/actions/PatchTriggerModification.js.map +1 -0
  37. package/dist/production/src/modifications/actions/UpdateTriggerModification.cjs +16 -1
  38. package/dist/production/src/modifications/actions/UpdateTriggerModification.cjs.map +1 -1
  39. package/dist/production/src/modifications/actions/UpdateTriggerModification.js +16 -1
  40. package/dist/production/src/modifications/actions/UpdateTriggerModification.js.map +1 -1
  41. package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.cjs +2 -1
  42. package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.cjs.map +1 -1
  43. package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.js +2 -1
  44. package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.js.map +1 -1
  45. package/dist/production/src/modifications/indexes/CreateIndexModification.cjs +4 -2
  46. package/dist/production/src/modifications/indexes/CreateIndexModification.cjs.map +1 -1
  47. package/dist/production/src/modifications/indexes/CreateIndexModification.js +4 -2
  48. package/dist/production/src/modifications/indexes/CreateIndexModification.js.map +1 -1
  49. package/dist/tests/cases/integration/patchTrigger.test.d.ts +2 -0
  50. package/dist/tests/cases/integration/patchTrigger.test.d.ts.map +1 -0
  51. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  52. package/dist/types/modifications/ModificationHandlerFactory.d.ts.map +1 -1
  53. package/dist/types/modifications/actions/PatchTriggerModification.d.ts +18 -0
  54. package/dist/types/modifications/actions/PatchTriggerModification.d.ts.map +1 -0
  55. package/dist/types/modifications/actions/UpdateTriggerModification.d.ts +5 -1
  56. package/dist/types/modifications/actions/UpdateTriggerModification.d.ts.map +1 -1
  57. package/dist/types/modifications/actions/index.d.ts +1 -0
  58. package/dist/types/modifications/actions/index.d.ts.map +1 -1
  59. package/dist/types/modifications/constraints/CreateUniqueConstraintModification.d.ts.map +1 -1
  60. package/dist/types/modifications/indexes/CreateIndexModification.d.ts.map +1 -1
  61. package/dist/types/tsconfig.tsbuildinfo +1 -1
  62. package/package.json +7 -7
  63. package/src/SchemaDiffer.ts +1 -1
  64. package/src/modifications/ModificationHandlerFactory.ts +2 -1
  65. package/src/modifications/actions/PatchTriggerModification.ts +51 -0
  66. package/src/modifications/actions/UpdateTriggerModification.ts +22 -1
  67. package/src/modifications/actions/index.ts +1 -0
  68. package/src/modifications/constraints/CreateUniqueConstraintModification.ts +2 -1
  69. package/src/modifications/indexes/CreateIndexModification.ts +4 -2
  70. package/tests/cases/integration/createAndDropIndex.test.ts +100 -0
  71. package/tests/cases/integration/createUnique.test.ts +153 -1
  72. package/tests/cases/integration/patchTrigger.test.ts +184 -0
@@ -21,7 +21,8 @@ class CreateIndexModificationHandler {
21
21
  });
22
22
  const tableNameId = wrapIdentifier(entity.tableName);
23
23
  const columnNameIds = columns.map(wrapIdentifier);
24
- builder.sql(`CREATE INDEX ON ${tableNameId} (${columnNameIds.join(", ")})`);
24
+ const methodClause = this.data.index.method ? ` USING ${this.data.index.method}` : "";
25
+ builder.sql(`CREATE INDEX ON ${tableNameId}${methodClause} (${columnNameIds.join(", ")})`);
25
26
  invalidateDatabaseMetadata();
26
27
  }
27
28
  getSchemaUpdater() {
@@ -36,8 +37,9 @@ class CreateIndexModificationHandler {
36
37
  );
37
38
  }
38
39
  describe() {
40
+ const methodText = this.data.index.method ? ` using ${this.data.index.method}` : "";
39
41
  return {
40
- message: `Create index(${this.data.index.fields.join(", ")}) on entity ${this.data.entityName}`
42
+ message: `Create index(${this.data.index.fields.join(", ")})${methodText} on entity ${this.data.entityName}`
41
43
  };
42
44
  }
43
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CreateIndexModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/CreateIndexModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n} from '../ModificationHandler'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { getIndexColumns } from './utils'\nimport deepEqual from 'fast-deep-equal'\n\nexport class CreateIndexModificationHandler implements ModificationHandler<CreateIndexModificationData> {\n\tconstructor(private readonly data: CreateIndexModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view && !entity.view.materialized) {\n\t\t\treturn\n\t\t}\n\t\tconst fields = this.data.index.fields\n\t\tconst columns = getIndexColumns({\n\t\t\tfields,\n\t\t\tentity,\n\t\t\tmodel: this.schema.model,\n\t\t})\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameIds = columns.map(wrapIdentifier)\n\n\t\tbuilder.sql(`CREATE INDEX ON ${tableNameId} (${columnNameIds.join(', ')})`)\n\n\t\tinvalidateDatabaseMetadata()\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, ({ entity }) => ({\n\t\t\t\t...entity,\n\t\t\t\tindexes: [\n\t\t\t\t\t...entity.indexes,\n\t\t\t\t\tthis.data.index,\n\t\t\t\t],\n\t\t\t})),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Create index(${this.data.index.fields.join(', ')}) on entity ${this.data.entityName}`,\n\t\t}\n\t}\n}\n\nexport const createIndexModification = createModificationType({\n\tid: 'createIndex',\n\thandler: CreateIndexModificationHandler,\n})\n\nexport interface CreateIndexModificationData {\n\tentityName: string\n\tindex: Model.Index\n}\n\nexport class CreateIndexDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities).flatMap(entity =>\n\t\t\tentity.indexes\n\t\t\t\t.filter(it => !originalSchema.model.entities[entity.name].indexes.find(idx => deepEqual(idx, it)))\n\t\t\t\t.map(index => createIndexModification.createModification({\n\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\tindex,\n\t\t\t\t})),\n\t\t)\n\t}\n}\n"],"names":[],"mappings":";;;;;AAaO,MAAM,+BAA2F;AAAA,EACvG,YAA6B,MAAoD,QAAgB;AAApE,SAAA,OAAA;AAAoD,SAAA,SAAA;AAAA,EAAA;AAAA,EAE1E,UAAU,SAA2B,EAAE,kBAAkB,8BAAyE;AACxI,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,cAAc;AAC7C;AAAA,IAAA;AAEK,UAAA,SAAS,KAAK,KAAK,MAAM;AAC/B,UAAM,UAAU,gBAAgB;AAAA,MAC/B;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IAAA,CACnB;AAEK,UAAA,cAAc,eAAe,OAAO,SAAS;AAC7C,UAAA,gBAAgB,QAAQ,IAAI,cAAc;AAExC,YAAA,IAAI,mBAAmB,WAAW,KAAK,cAAc,KAAK,IAAI,CAAC,GAAG;AAE/C,+BAAA;AAAA,EAAA;AAAA,EAGrB,mBAAkC;AACjC,WAAA;AAAA,MACN,aAAa,KAAK,KAAK,YAAY,CAAC,EAAE,cAAc;AAAA,QACnD,GAAG;AAAA,QACH,SAAS;AAAA,UACR,GAAG,OAAO;AAAA,UACV,KAAK,KAAK;AAAA,QAAA;AAAA,MACX,EACC;AAAA,IACH;AAAA,EAAA;AAAA,EAGD,WAAW;AACH,WAAA;AAAA,MACN,SAAS,gBAAgB,KAAK,KAAK,MAAM,OAAO,KAAK,IAAI,CAAC,eAAe,KAAK,KAAK,UAAU;AAAA,IAC9F;AAAA,EAAA;AAEF;AAEO,MAAM,0BAA0B,uBAAuB;AAAA,EAC7D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAOM,MAAM,kBAAoC;AAAA,EAChD,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAAE;AAAA,MAAQ,CAAA,WAC1D,OAAO,QACL,OAAO,CAAA,OAAM,CAAC,eAAe,MAAM,SAAS,OAAO,IAAI,EAAE,QAAQ,KAAK,CAAA,QAAO,UAAU,KAAK,EAAE,CAAC,CAAC,EAChG,IAAI,CAAS,UAAA,wBAAwB,mBAAmB;AAAA,QACxD,YAAY,OAAO;AAAA,QACnB;AAAA,MAAA,CACA,CAAC;AAAA,IACJ;AAAA,EAAA;AAEF;"}
1
+ {"version":3,"file":"CreateIndexModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/CreateIndexModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n} from '../ModificationHandler'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { getIndexColumns } from './utils'\nimport deepEqual from 'fast-deep-equal'\n\nexport class CreateIndexModificationHandler implements ModificationHandler<CreateIndexModificationData> {\n\tconstructor(private readonly data: CreateIndexModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view && !entity.view.materialized) {\n\t\t\treturn\n\t\t}\n\t\tconst fields = this.data.index.fields\n\t\tconst columns = getIndexColumns({\n\t\t\tfields,\n\t\t\tentity,\n\t\t\tmodel: this.schema.model,\n\t\t})\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameIds = columns.map(wrapIdentifier)\n\t\tconst methodClause = this.data.index.method ? ` USING ${this.data.index.method}` : ''\n\n\t\tbuilder.sql(`CREATE INDEX ON ${tableNameId}${methodClause} (${columnNameIds.join(', ')})`)\n\n\t\tinvalidateDatabaseMetadata()\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, ({ entity }) => ({\n\t\t\t\t...entity,\n\t\t\t\tindexes: [\n\t\t\t\t\t...entity.indexes,\n\t\t\t\t\tthis.data.index,\n\t\t\t\t],\n\t\t\t})),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\tconst methodText = this.data.index.method ? ` using ${this.data.index.method}` : ''\n\t\treturn {\n\t\t\tmessage: `Create index(${this.data.index.fields.join(', ')})${methodText} on entity ${this.data.entityName}`,\n\t\t}\n\t}\n}\n\nexport const createIndexModification = createModificationType({\n\tid: 'createIndex',\n\thandler: CreateIndexModificationHandler,\n})\n\nexport interface CreateIndexModificationData {\n\tentityName: string\n\tindex: Model.Index\n}\n\nexport class CreateIndexDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities).flatMap(entity =>\n\t\t\tentity.indexes\n\t\t\t\t.filter(it => !originalSchema.model.entities[entity.name].indexes.find(idx => deepEqual(idx, it)))\n\t\t\t\t.map(index => createIndexModification.createModification({\n\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\tindex,\n\t\t\t\t})),\n\t\t)\n\t}\n}\n"],"names":[],"mappings":";;;;;AAaO,MAAM,+BAA2F;AAAA,EACvG,YAA6B,MAAoD,QAAgB;AAApE,SAAA,OAAA;AAAoD,SAAA,SAAA;AAAA,EAAA;AAAA,EAE1E,UAAU,SAA2B,EAAE,kBAAkB,8BAAyE;AACxI,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,cAAc;AAC7C;AAAA,IAAA;AAEK,UAAA,SAAS,KAAK,KAAK,MAAM;AAC/B,UAAM,UAAU,gBAAgB;AAAA,MAC/B;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IAAA,CACnB;AAEK,UAAA,cAAc,eAAe,OAAO,SAAS;AAC7C,UAAA,gBAAgB,QAAQ,IAAI,cAAc;AAC1C,UAAA,eAAe,KAAK,KAAK,MAAM,SAAS,UAAU,KAAK,KAAK,MAAM,MAAM,KAAK;AAE3E,YAAA,IAAI,mBAAmB,WAAW,GAAG,YAAY,KAAK,cAAc,KAAK,IAAI,CAAC,GAAG;AAE9D,+BAAA;AAAA,EAAA;AAAA,EAGrB,mBAAkC;AACjC,WAAA;AAAA,MACN,aAAa,KAAK,KAAK,YAAY,CAAC,EAAE,cAAc;AAAA,QACnD,GAAG;AAAA,QACH,SAAS;AAAA,UACR,GAAG,OAAO;AAAA,UACV,KAAK,KAAK;AAAA,QAAA;AAAA,MACX,EACC;AAAA,IACH;AAAA,EAAA;AAAA,EAGD,WAAW;AACJ,UAAA,aAAa,KAAK,KAAK,MAAM,SAAS,UAAU,KAAK,KAAK,MAAM,MAAM,KAAK;AAC1E,WAAA;AAAA,MACN,SAAS,gBAAgB,KAAK,KAAK,MAAM,OAAO,KAAK,IAAI,CAAC,IAAI,UAAU,cAAc,KAAK,KAAK,UAAU;AAAA,IAC3G;AAAA,EAAA;AAEF;AAEO,MAAM,0BAA0B,uBAAuB;AAAA,EAC7D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAOM,MAAM,kBAAoC;AAAA,EAChD,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAAE;AAAA,MAAQ,CAAA,WAC1D,OAAO,QACL,OAAO,CAAA,OAAM,CAAC,eAAe,MAAM,SAAS,OAAO,IAAI,EAAE,QAAQ,KAAK,CAAA,QAAO,UAAU,KAAK,EAAE,CAAC,CAAC,EAChG,IAAI,CAAS,UAAA,wBAAwB,mBAAmB;AAAA,QACxD,YAAY,OAAO;AAAA,QACnB;AAAA,MAAA,CACA,CAAC;AAAA,IACJ;AAAA,EAAA;AAEF;"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=patchTrigger.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patchTrigger.test.d.ts","sourceRoot":"","sources":["../../../../tests/cases/integration/patchTrigger.test.ts"],"names":[],"mappings":""}