@contember/schema-migrations 2.1.0-alpha.24 → 2.1.0-alpha.26
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.
- package/dist/development/src/SchemaDiffer.cjs +1 -1
- package/dist/development/src/SchemaDiffer.cjs.map +1 -1
- package/dist/development/src/SchemaDiffer.js +1 -1
- package/dist/development/src/SchemaDiffer.js.map +1 -1
- package/dist/development/src/modifications/ModificationHandlerFactory.cjs +2 -0
- package/dist/development/src/modifications/ModificationHandlerFactory.cjs.map +1 -1
- package/dist/development/src/modifications/ModificationHandlerFactory.js +2 -0
- package/dist/development/src/modifications/ModificationHandlerFactory.js.map +1 -1
- package/dist/development/src/modifications/actions/PatchTriggerModification.cjs +44 -0
- package/dist/development/src/modifications/actions/PatchTriggerModification.cjs.map +1 -0
- package/dist/development/src/modifications/actions/PatchTriggerModification.js +44 -0
- package/dist/development/src/modifications/actions/PatchTriggerModification.js.map +1 -0
- package/dist/development/src/modifications/actions/UpdateTriggerModification.cjs +16 -1
- package/dist/development/src/modifications/actions/UpdateTriggerModification.cjs.map +1 -1
- package/dist/development/src/modifications/actions/UpdateTriggerModification.js +16 -1
- package/dist/development/src/modifications/actions/UpdateTriggerModification.js.map +1 -1
- package/dist/production/src/SchemaDiffer.cjs +1 -1
- package/dist/production/src/SchemaDiffer.cjs.map +1 -1
- package/dist/production/src/SchemaDiffer.js +1 -1
- package/dist/production/src/SchemaDiffer.js.map +1 -1
- package/dist/production/src/modifications/ModificationHandlerFactory.cjs +2 -0
- package/dist/production/src/modifications/ModificationHandlerFactory.cjs.map +1 -1
- package/dist/production/src/modifications/ModificationHandlerFactory.js +2 -0
- package/dist/production/src/modifications/ModificationHandlerFactory.js.map +1 -1
- package/dist/production/src/modifications/actions/PatchTriggerModification.cjs +44 -0
- package/dist/production/src/modifications/actions/PatchTriggerModification.cjs.map +1 -0
- package/dist/production/src/modifications/actions/PatchTriggerModification.js +44 -0
- package/dist/production/src/modifications/actions/PatchTriggerModification.js.map +1 -0
- package/dist/production/src/modifications/actions/UpdateTriggerModification.cjs +16 -1
- package/dist/production/src/modifications/actions/UpdateTriggerModification.cjs.map +1 -1
- package/dist/production/src/modifications/actions/UpdateTriggerModification.js +16 -1
- package/dist/production/src/modifications/actions/UpdateTriggerModification.js.map +1 -1
- package/dist/tests/cases/integration/patchTrigger.test.d.ts +2 -0
- package/dist/tests/cases/integration/patchTrigger.test.d.ts.map +1 -0
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/modifications/ModificationHandlerFactory.d.ts.map +1 -1
- package/dist/types/modifications/actions/PatchTriggerModification.d.ts +18 -0
- package/dist/types/modifications/actions/PatchTriggerModification.d.ts.map +1 -0
- package/dist/types/modifications/actions/UpdateTriggerModification.d.ts +5 -1
- package/dist/types/modifications/actions/UpdateTriggerModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/index.d.ts +1 -0
- package/dist/types/modifications/actions/index.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/src/SchemaDiffer.ts +1 -1
- package/src/modifications/ModificationHandlerFactory.ts +2 -1
- package/src/modifications/actions/PatchTriggerModification.ts +51 -0
- package/src/modifications/actions/UpdateTriggerModification.ts +22 -1
- package/src/modifications/actions/index.ts +1 -0
- package/tests/cases/integration/patchTrigger.test.ts +184 -0
|
@@ -105,7 +105,7 @@ class SchemaDiffer {
|
|
|
105
105
|
new UpdateEntityOrderByModification.UpdateEntityOrderByDiffer(),
|
|
106
106
|
new UpdateTargetModification.UpdateTargetDiffer(),
|
|
107
107
|
new CreateTargetModification.CreateTargetDiffer(),
|
|
108
|
-
new UpdateTriggerModification.UpdateTriggerDiffer(),
|
|
108
|
+
new UpdateTriggerModification.UpdateTriggerDiffer(this.options),
|
|
109
109
|
new CreateTriggerModification.CreateTriggerDiffer(),
|
|
110
110
|
new RemoveTriggerModification.RemoveTriggerDiffer(),
|
|
111
111
|
new RemoveTargetModification.RemoveTargetDiffer()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaDiffer.cjs","sources":["../../../../packages/schema-migrations/src/SchemaDiffer.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { compareArraysIgnoreOrder, deepCompare, isInverseRelation, isOwningRelation, isRelation, SchemaValidator, ValidationError } from '@contember/schema-utils'\nimport { SchemaMigrator } from './SchemaMigrator'\nimport { Migration } from './Migration'\nimport { ImplementationException } from './exceptions'\nimport {\n\tConvertOneHasManyToManyHasManyRelationDiffer,\n\tConvertOneToManyRelationDiffer,\n\tCreateColumnDiffer,\n\tCreateEntityDiffer,\n\tCreateEnumDiffer,\n\tCreateRelationDiffer,\n\tCreateRelationInverseSideDiffer,\n\tCreateUniqueConstraintDiffer,\n\tCreateViewDiffer,\n\tDiffer,\n\tDisableOrphanRemovalDiffer,\n\tEnableOrphanRemovalDiffer,\n\tMakeRelationNotNullDiffer,\n\tMakeRelationNullableDiffer,\n\tRemoveEntityDiffer,\n\tRemoveEnumDiffer,\n\tRemoveFieldDiffer,\n\tRemoveUniqueConstraintDiffer,\n\tToggleEventLogDiffer,\n\tToggleJunctionEventLogDiffer,\n\tUpdateAclSchemaDiffer,\n\tUpdateColumnDefinitionDiffer,\n\tUpdateColumnNameDiffer,\n\tUpdateEntityOrderByDiffer,\n\tUpdateEntityTableNameDiffer,\n\tUpdateEnumDiffer,\n\tUpdateRelationOnDeleteDiffer,\n\tUpdateRelationOrderByDiffer,\n\tUpdateValidationSchemaDiffer,\n\tVERSION_LATEST,\n} from './modifications'\nimport { RemoveChangedFieldDiffer, RemoveViewDiffer } from './modifications/differs'\nimport { CreateIndexDiffer, RemoveIndexDiffer } from './modifications/indexes'\nimport { CreateTriggerDiffer, RemoveTriggerDiffer, UpdateTriggerDiffer } from './modifications/actions'\nimport { UpdateTargetDiffer } from './modifications/actions/UpdateTargetModification'\nimport { CreateTargetDiffer } from './modifications/actions/CreateTargetModification'\nimport { RemoveTargetDiffer } from './modifications/actions/RemoveTargetModification'\nimport { UpdateSettingsDiffer } from './modifications/settings'\nimport { RemoveIndexNamesDiffer } from './modifications/upgrade/RemoveIndexNamesModification'\nimport { ConvertOneHasManyToOneHasOneRelationDiffer } from './modifications/relations/ConvertOneHasManyToOneHasOneRelationModification'\n\ntype DiffOptions = { skipRecreateValidation?: boolean; skipInitialSchemaValidation?: boolean }\n\nexport class SchemaDiffer {\n\tconstructor(\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {}\n\n\tdiffSchemas(originalSchema: Schema, updatedSchema: Schema, {\n\t\tskipInitialSchemaValidation = false,\n\t\tskipRecreateValidation = false,\n\t}: DiffOptions = {}): Migration.Modification[] {\n\t\tif (!skipInitialSchemaValidation) {\n\t\t\tconst originalErrors = SchemaValidator.validate(originalSchema)\n\t\t\tif (originalErrors.length > 0) {\n\t\t\t\tthrow new InvalidSchemaException('original schema is not valid', originalErrors)\n\t\t\t}\n\t\t}\n\t\tconst updatedErrors = SchemaValidator.validate(updatedSchema)\n\t\tif (updatedErrors.length > 0) {\n\t\t\tthrow new InvalidSchemaException('updated schema is not valid', updatedErrors)\n\t\t}\n\n\t\tconst differs: Differ[] = [\n\t\t\tnew RemoveIndexNamesDiffer(),\n\t\t\tnew UpdateSettingsDiffer(),\n\t\t\tnew ConvertOneToManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToManyHasManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToOneHasOneRelationDiffer(),\n\t\t\tnew RemoveUniqueConstraintDiffer(),\n\t\t\tnew RemoveIndexDiffer(),\n\t\t\tnew RemoveViewDiffer(),\n\t\t\tnew RemoveEntityDiffer(),\n\t\t\tnew RemoveFieldDiffer(),\n\t\t\tnew CreateEnumDiffer(),\n\t\t\tnew UpdateEntityTableNameDiffer(),\n\t\t\tnew ToggleEventLogDiffer(),\n\t\t\tnew ToggleJunctionEventLogDiffer(),\n\t\t\tnew UpdateColumnDefinitionDiffer(),\n\t\t\tnew UpdateColumnNameDiffer(),\n\t\t\tnew UpdateRelationOnDeleteDiffer(),\n\t\t\tnew MakeRelationNotNullDiffer(),\n\t\t\tnew MakeRelationNullableDiffer(),\n\t\t\tnew EnableOrphanRemovalDiffer(),\n\t\t\tnew DisableOrphanRemovalDiffer(),\n\t\t\tnew UpdateRelationOrderByDiffer(),\n\t\t\tnew UpdateEnumDiffer(),\n\t\t\tnew RemoveChangedFieldDiffer(it => !isRelation(it) || isOwningRelation(it)),\n\t\t\tnew RemoveChangedFieldDiffer(it => isRelation(it) && isInverseRelation(it)),\n\t\t\tnew CreateEntityDiffer(),\n\t\t\tnew CreateColumnDiffer(),\n\t\t\tnew CreateRelationDiffer(),\n\t\t\tnew CreateViewDiffer(),\n\t\t\tnew CreateRelationInverseSideDiffer(),\n\t\t\tnew CreateUniqueConstraintDiffer(),\n\t\t\tnew CreateIndexDiffer(),\n\t\t\tnew RemoveEnumDiffer(),\n\t\t\tnew UpdateAclSchemaDiffer(this.options),\n\t\t\tnew UpdateValidationSchemaDiffer(this.options),\n\t\t\tnew UpdateEntityOrderByDiffer(),\n\t\t\tnew UpdateTargetDiffer(),\n\t\t\tnew CreateTargetDiffer(),\n\t\t\tnew UpdateTriggerDiffer(),\n\t\t\tnew CreateTriggerDiffer(),\n\t\t\tnew RemoveTriggerDiffer(),\n\t\t\tnew RemoveTargetDiffer(),\n\t\t]\n\n\t\tconst diffs: Migration.Modification[] = []\n\t\tlet appliedDiffsSchema = originalSchema\n\t\tfor (const differ of differs) {\n\t\t\tconst differDiffs = differ.createDiff(appliedDiffsSchema, updatedSchema)\n\t\t\tappliedDiffsSchema = this.schemaMigrator.applyModifications(appliedDiffsSchema, differDiffs, VERSION_LATEST)\n\t\t\tdiffs.push(...differDiffs)\n\t\t}\n\n\t\tif (!skipRecreateValidation) {\n\t\t\tconst errors = deepCompare(updatedSchema, appliedDiffsSchema, [], path => {\n\t\t\t\tif (path[0] === 'model' && path[1] === 'entities' && (path[3] === 'unique' || path[3] === 'index')) {\n\t\t\t\t\treturn (a, b) => {\n\t\t\t\t\t\treturn compareArraysIgnoreOrder(a, b, path)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null\n\t\t\t})\n\t\t\tif (errors.length === 0) {\n\t\t\t\treturn diffs\n\t\t\t}\n\t\t\tlet message = 'Updated schema cannot be recreated by the generated diff:'\n\t\t\tfor (const err of errors) {\n\t\t\t\tmessage += '\\n\\t' + err.path.join('.') + ': ' + err.message\n\t\t\t}\n\t\t\tmessage += '\\n\\nPlease fill a bug report'\n\t\t\tthrow new ImplementationException(message)\n\t\t}\n\n\t\treturn diffs\n\t}\n}\n\nexport class InvalidSchemaException extends Error {\n\tconstructor(message: string, public readonly validationErrors: ValidationError[]) {\n\t\tsuper(message)\n\t}\n}\n"],"names":["SchemaValidator","RemoveIndexNamesDiffer","UpdateSettingsDiffer","ConvertOneToManyRelationDiffer","ConvertOneHasManyToManyHasManyRelationDiffer","ConvertOneHasManyToOneHasOneRelationDiffer","RemoveUniqueConstraintDiffer","RemoveIndexDiffer","RemoveViewDiffer","RemoveEntityDiffer","RemoveFieldDiffer","CreateEnumDiffer","UpdateEntityTableNameDiffer","ToggleEventLogDiffer","ToggleJunctionEventLogDiffer","UpdateColumnDefinitionDiffer","UpdateColumnNameDiffer","UpdateRelationOnDeleteDiffer","MakeRelationNotNullDiffer","MakeRelationNullableDiffer","EnableOrphanRemovalDiffer","DisableOrphanRemovalDiffer","UpdateRelationOrderByDiffer","UpdateEnumDiffer","RemoveChangedFieldDiffer","isRelation","isOwningRelation","isInverseRelation","CreateEntityDiffer","CreateColumnDiffer","CreateRelationDiffer","CreateViewDiffer","CreateRelationInverseSideDiffer","CreateUniqueConstraintDiffer","CreateIndexDiffer","RemoveEnumDiffer","UpdateAclSchemaDiffer","UpdateValidationSchemaDiffer","UpdateEntityOrderByDiffer","UpdateTargetDiffer","CreateTargetDiffer","UpdateTriggerDiffer","CreateTriggerDiffer","RemoveTriggerDiffer","RemoveTargetDiffer","VERSION_LATEST","deepCompare","compareArraysIgnoreOrder","ImplementationException"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDO,MAAM,aAAa;AAAA,EACzB,YACkB,gBACA,SAGhB;AAJgB,SAAA,iBAAA;AACA,SAAA,UAAA;AAAA,EAAA;AAAA,EAKlB,YAAY,gBAAwB,eAAuB;AAAA,IAC1D,8BAA8B;AAAA,IAC9B,yBAAyB;AAAA,EAC1B,IAAiB,IAA8B;AAC9C,QAAI,CAAC,6BAA6B;AAC3B,YAAA,iBAAiBA,YAAAA,gBAAgB,SAAS,cAAc;AAC1D,UAAA,eAAe,SAAS,GAAG;AACxB,cAAA,IAAI,uBAAuB,gCAAgC,cAAc;AAAA,MAAA;AAAA,IAChF;AAEK,UAAA,gBAAgBA,YAAAA,gBAAgB,SAAS,aAAa;AACxD,QAAA,cAAc,SAAS,GAAG;AACvB,YAAA,IAAI,uBAAuB,+BAA+B,aAAa;AAAA,IAAA;AAG9E,UAAM,UAAoB;AAAA,MACzB,IAAIC,oDAAuB;AAAA,MAC3B,IAAIC,gDAAqB;AAAA,MACzB,IAAIC,oEAA+B;AAAA,MACnC,IAAIC,gGAA6C;AAAA,MACjD,IAAIC,4FAA2C;AAAA,MAC/C,IAAIC,gEAA6B;AAAA,MACjC,IAAIC,0CAAkB;AAAA,MACtB,IAAIC,kCAAiB;AAAA,MACrB,IAAIC,4CAAmB;AAAA,MACvB,IAAIC,0CAAkB;AAAA,MACtB,IAAIC,wCAAiB;AAAA,MACrB,IAAIC,8DAA4B;AAAA,MAChC,IAAIC,gDAAqB;AAAA,MACzB,IAAIC,gEAA6B;AAAA,MACjC,IAAIC,gEAA6B;AAAA,MACjC,IAAIC,oDAAuB;AAAA,MAC3B,IAAIC,gEAA6B;AAAA,MACjC,IAAIC,0DAA0B;AAAA,MAC9B,IAAIC,4DAA2B;AAAA,MAC/B,IAAIC,0DAA0B;AAAA,MAC9B,IAAIC,4DAA2B;AAAA,MAC/B,IAAIC,8DAA4B;AAAA,MAChC,IAAIC,wCAAiB;AAAA,MACrB,IAAIC,kDAAyB,CAAM,OAAA,CAACC,YAAAA,WAAW,EAAE,KAAKC,YAAAA,iBAAiB,EAAE,CAAC;AAAA,MAC1E,IAAIF,yBAAAA,yBAAyB,CAAM,OAAAC,YAAAA,WAAW,EAAE,KAAKE,YAAAA,kBAAkB,EAAE,CAAC;AAAA,MAC1E,IAAIC,4CAAmB;AAAA,MACvB,IAAIC,4CAAmB;AAAA,MACvB,IAAIC,gDAAqB;AAAA,MACzB,IAAIC,wCAAiB;AAAA,MACrB,IAAIC,sEAAgC;AAAA,MACpC,IAAIC,gEAA6B;AAAA,MACjC,IAAIC,0CAAkB;AAAA,MACtB,IAAIC,wCAAiB;AAAA,MACrB,IAAIC,4BAAsB,sBAAA,KAAK,OAAO;AAAA,MACtC,IAAIC,mCAA6B,6BAAA,KAAK,OAAO;AAAA,MAC7C,IAAIC,0DAA0B;AAAA,MAC9B,IAAIC,4CAAmB;AAAA,MACvB,IAAIC,4CAAmB;AAAA,MACvB,IAAIC,
|
|
1
|
+
{"version":3,"file":"SchemaDiffer.cjs","sources":["../../../../packages/schema-migrations/src/SchemaDiffer.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { compareArraysIgnoreOrder, deepCompare, isInverseRelation, isOwningRelation, isRelation, SchemaValidator, ValidationError } from '@contember/schema-utils'\nimport { SchemaMigrator } from './SchemaMigrator'\nimport { Migration } from './Migration'\nimport { ImplementationException } from './exceptions'\nimport {\n\tConvertOneHasManyToManyHasManyRelationDiffer,\n\tConvertOneToManyRelationDiffer,\n\tCreateColumnDiffer,\n\tCreateEntityDiffer,\n\tCreateEnumDiffer,\n\tCreateRelationDiffer,\n\tCreateRelationInverseSideDiffer,\n\tCreateUniqueConstraintDiffer,\n\tCreateViewDiffer,\n\tDiffer,\n\tDisableOrphanRemovalDiffer,\n\tEnableOrphanRemovalDiffer,\n\tMakeRelationNotNullDiffer,\n\tMakeRelationNullableDiffer,\n\tRemoveEntityDiffer,\n\tRemoveEnumDiffer,\n\tRemoveFieldDiffer,\n\tRemoveUniqueConstraintDiffer,\n\tToggleEventLogDiffer,\n\tToggleJunctionEventLogDiffer,\n\tUpdateAclSchemaDiffer,\n\tUpdateColumnDefinitionDiffer,\n\tUpdateColumnNameDiffer,\n\tUpdateEntityOrderByDiffer,\n\tUpdateEntityTableNameDiffer,\n\tUpdateEnumDiffer,\n\tUpdateRelationOnDeleteDiffer,\n\tUpdateRelationOrderByDiffer,\n\tUpdateValidationSchemaDiffer,\n\tVERSION_LATEST,\n} from './modifications'\nimport { RemoveChangedFieldDiffer, RemoveViewDiffer } from './modifications/differs'\nimport { CreateIndexDiffer, RemoveIndexDiffer } from './modifications/indexes'\nimport { CreateTriggerDiffer, RemoveTriggerDiffer, UpdateTriggerDiffer } from './modifications/actions'\nimport { UpdateTargetDiffer } from './modifications/actions/UpdateTargetModification'\nimport { CreateTargetDiffer } from './modifications/actions/CreateTargetModification'\nimport { RemoveTargetDiffer } from './modifications/actions/RemoveTargetModification'\nimport { UpdateSettingsDiffer } from './modifications/settings'\nimport { RemoveIndexNamesDiffer } from './modifications/upgrade/RemoveIndexNamesModification'\nimport { ConvertOneHasManyToOneHasOneRelationDiffer } from './modifications/relations/ConvertOneHasManyToOneHasOneRelationModification'\n\ntype DiffOptions = { skipRecreateValidation?: boolean; skipInitialSchemaValidation?: boolean }\n\nexport class SchemaDiffer {\n\tconstructor(\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {}\n\n\tdiffSchemas(originalSchema: Schema, updatedSchema: Schema, {\n\t\tskipInitialSchemaValidation = false,\n\t\tskipRecreateValidation = false,\n\t}: DiffOptions = {}): Migration.Modification[] {\n\t\tif (!skipInitialSchemaValidation) {\n\t\t\tconst originalErrors = SchemaValidator.validate(originalSchema)\n\t\t\tif (originalErrors.length > 0) {\n\t\t\t\tthrow new InvalidSchemaException('original schema is not valid', originalErrors)\n\t\t\t}\n\t\t}\n\t\tconst updatedErrors = SchemaValidator.validate(updatedSchema)\n\t\tif (updatedErrors.length > 0) {\n\t\t\tthrow new InvalidSchemaException('updated schema is not valid', updatedErrors)\n\t\t}\n\n\t\tconst differs: Differ[] = [\n\t\t\tnew RemoveIndexNamesDiffer(),\n\t\t\tnew UpdateSettingsDiffer(),\n\t\t\tnew ConvertOneToManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToManyHasManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToOneHasOneRelationDiffer(),\n\t\t\tnew RemoveUniqueConstraintDiffer(),\n\t\t\tnew RemoveIndexDiffer(),\n\t\t\tnew RemoveViewDiffer(),\n\t\t\tnew RemoveEntityDiffer(),\n\t\t\tnew RemoveFieldDiffer(),\n\t\t\tnew CreateEnumDiffer(),\n\t\t\tnew UpdateEntityTableNameDiffer(),\n\t\t\tnew ToggleEventLogDiffer(),\n\t\t\tnew ToggleJunctionEventLogDiffer(),\n\t\t\tnew UpdateColumnDefinitionDiffer(),\n\t\t\tnew UpdateColumnNameDiffer(),\n\t\t\tnew UpdateRelationOnDeleteDiffer(),\n\t\t\tnew MakeRelationNotNullDiffer(),\n\t\t\tnew MakeRelationNullableDiffer(),\n\t\t\tnew EnableOrphanRemovalDiffer(),\n\t\t\tnew DisableOrphanRemovalDiffer(),\n\t\t\tnew UpdateRelationOrderByDiffer(),\n\t\t\tnew UpdateEnumDiffer(),\n\t\t\tnew RemoveChangedFieldDiffer(it => !isRelation(it) || isOwningRelation(it)),\n\t\t\tnew RemoveChangedFieldDiffer(it => isRelation(it) && isInverseRelation(it)),\n\t\t\tnew CreateEntityDiffer(),\n\t\t\tnew CreateColumnDiffer(),\n\t\t\tnew CreateRelationDiffer(),\n\t\t\tnew CreateViewDiffer(),\n\t\t\tnew CreateRelationInverseSideDiffer(),\n\t\t\tnew CreateUniqueConstraintDiffer(),\n\t\t\tnew CreateIndexDiffer(),\n\t\t\tnew RemoveEnumDiffer(),\n\t\t\tnew UpdateAclSchemaDiffer(this.options),\n\t\t\tnew UpdateValidationSchemaDiffer(this.options),\n\t\t\tnew UpdateEntityOrderByDiffer(),\n\t\t\tnew UpdateTargetDiffer(),\n\t\t\tnew CreateTargetDiffer(),\n\t\t\tnew UpdateTriggerDiffer(this.options),\n\t\t\tnew CreateTriggerDiffer(),\n\t\t\tnew RemoveTriggerDiffer(),\n\t\t\tnew RemoveTargetDiffer(),\n\t\t]\n\n\t\tconst diffs: Migration.Modification[] = []\n\t\tlet appliedDiffsSchema = originalSchema\n\t\tfor (const differ of differs) {\n\t\t\tconst differDiffs = differ.createDiff(appliedDiffsSchema, updatedSchema)\n\t\t\tappliedDiffsSchema = this.schemaMigrator.applyModifications(appliedDiffsSchema, differDiffs, VERSION_LATEST)\n\t\t\tdiffs.push(...differDiffs)\n\t\t}\n\n\t\tif (!skipRecreateValidation) {\n\t\t\tconst errors = deepCompare(updatedSchema, appliedDiffsSchema, [], path => {\n\t\t\t\tif (path[0] === 'model' && path[1] === 'entities' && (path[3] === 'unique' || path[3] === 'index')) {\n\t\t\t\t\treturn (a, b) => {\n\t\t\t\t\t\treturn compareArraysIgnoreOrder(a, b, path)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null\n\t\t\t})\n\t\t\tif (errors.length === 0) {\n\t\t\t\treturn diffs\n\t\t\t}\n\t\t\tlet message = 'Updated schema cannot be recreated by the generated diff:'\n\t\t\tfor (const err of errors) {\n\t\t\t\tmessage += '\\n\\t' + err.path.join('.') + ': ' + err.message\n\t\t\t}\n\t\t\tmessage += '\\n\\nPlease fill a bug report'\n\t\t\tthrow new ImplementationException(message)\n\t\t}\n\n\t\treturn diffs\n\t}\n}\n\nexport class InvalidSchemaException extends Error {\n\tconstructor(message: string, public readonly validationErrors: ValidationError[]) {\n\t\tsuper(message)\n\t}\n}\n"],"names":["SchemaValidator","RemoveIndexNamesDiffer","UpdateSettingsDiffer","ConvertOneToManyRelationDiffer","ConvertOneHasManyToManyHasManyRelationDiffer","ConvertOneHasManyToOneHasOneRelationDiffer","RemoveUniqueConstraintDiffer","RemoveIndexDiffer","RemoveViewDiffer","RemoveEntityDiffer","RemoveFieldDiffer","CreateEnumDiffer","UpdateEntityTableNameDiffer","ToggleEventLogDiffer","ToggleJunctionEventLogDiffer","UpdateColumnDefinitionDiffer","UpdateColumnNameDiffer","UpdateRelationOnDeleteDiffer","MakeRelationNotNullDiffer","MakeRelationNullableDiffer","EnableOrphanRemovalDiffer","DisableOrphanRemovalDiffer","UpdateRelationOrderByDiffer","UpdateEnumDiffer","RemoveChangedFieldDiffer","isRelation","isOwningRelation","isInverseRelation","CreateEntityDiffer","CreateColumnDiffer","CreateRelationDiffer","CreateViewDiffer","CreateRelationInverseSideDiffer","CreateUniqueConstraintDiffer","CreateIndexDiffer","RemoveEnumDiffer","UpdateAclSchemaDiffer","UpdateValidationSchemaDiffer","UpdateEntityOrderByDiffer","UpdateTargetDiffer","CreateTargetDiffer","UpdateTriggerDiffer","CreateTriggerDiffer","RemoveTriggerDiffer","RemoveTargetDiffer","VERSION_LATEST","deepCompare","compareArraysIgnoreOrder","ImplementationException"],"mappings":"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"}
|
|
@@ -103,7 +103,7 @@ class SchemaDiffer {
|
|
|
103
103
|
new UpdateEntityOrderByDiffer(),
|
|
104
104
|
new UpdateTargetDiffer(),
|
|
105
105
|
new CreateTargetDiffer(),
|
|
106
|
-
new UpdateTriggerDiffer(),
|
|
106
|
+
new UpdateTriggerDiffer(this.options),
|
|
107
107
|
new CreateTriggerDiffer(),
|
|
108
108
|
new RemoveTriggerDiffer(),
|
|
109
109
|
new RemoveTargetDiffer()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaDiffer.js","sources":["../../../../packages/schema-migrations/src/SchemaDiffer.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { compareArraysIgnoreOrder, deepCompare, isInverseRelation, isOwningRelation, isRelation, SchemaValidator, ValidationError } from '@contember/schema-utils'\nimport { SchemaMigrator } from './SchemaMigrator'\nimport { Migration } from './Migration'\nimport { ImplementationException } from './exceptions'\nimport {\n\tConvertOneHasManyToManyHasManyRelationDiffer,\n\tConvertOneToManyRelationDiffer,\n\tCreateColumnDiffer,\n\tCreateEntityDiffer,\n\tCreateEnumDiffer,\n\tCreateRelationDiffer,\n\tCreateRelationInverseSideDiffer,\n\tCreateUniqueConstraintDiffer,\n\tCreateViewDiffer,\n\tDiffer,\n\tDisableOrphanRemovalDiffer,\n\tEnableOrphanRemovalDiffer,\n\tMakeRelationNotNullDiffer,\n\tMakeRelationNullableDiffer,\n\tRemoveEntityDiffer,\n\tRemoveEnumDiffer,\n\tRemoveFieldDiffer,\n\tRemoveUniqueConstraintDiffer,\n\tToggleEventLogDiffer,\n\tToggleJunctionEventLogDiffer,\n\tUpdateAclSchemaDiffer,\n\tUpdateColumnDefinitionDiffer,\n\tUpdateColumnNameDiffer,\n\tUpdateEntityOrderByDiffer,\n\tUpdateEntityTableNameDiffer,\n\tUpdateEnumDiffer,\n\tUpdateRelationOnDeleteDiffer,\n\tUpdateRelationOrderByDiffer,\n\tUpdateValidationSchemaDiffer,\n\tVERSION_LATEST,\n} from './modifications'\nimport { RemoveChangedFieldDiffer, RemoveViewDiffer } from './modifications/differs'\nimport { CreateIndexDiffer, RemoveIndexDiffer } from './modifications/indexes'\nimport { CreateTriggerDiffer, RemoveTriggerDiffer, UpdateTriggerDiffer } from './modifications/actions'\nimport { UpdateTargetDiffer } from './modifications/actions/UpdateTargetModification'\nimport { CreateTargetDiffer } from './modifications/actions/CreateTargetModification'\nimport { RemoveTargetDiffer } from './modifications/actions/RemoveTargetModification'\nimport { UpdateSettingsDiffer } from './modifications/settings'\nimport { RemoveIndexNamesDiffer } from './modifications/upgrade/RemoveIndexNamesModification'\nimport { ConvertOneHasManyToOneHasOneRelationDiffer } from './modifications/relations/ConvertOneHasManyToOneHasOneRelationModification'\n\ntype DiffOptions = { skipRecreateValidation?: boolean; skipInitialSchemaValidation?: boolean }\n\nexport class SchemaDiffer {\n\tconstructor(\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {}\n\n\tdiffSchemas(originalSchema: Schema, updatedSchema: Schema, {\n\t\tskipInitialSchemaValidation = false,\n\t\tskipRecreateValidation = false,\n\t}: DiffOptions = {}): Migration.Modification[] {\n\t\tif (!skipInitialSchemaValidation) {\n\t\t\tconst originalErrors = SchemaValidator.validate(originalSchema)\n\t\t\tif (originalErrors.length > 0) {\n\t\t\t\tthrow new InvalidSchemaException('original schema is not valid', originalErrors)\n\t\t\t}\n\t\t}\n\t\tconst updatedErrors = SchemaValidator.validate(updatedSchema)\n\t\tif (updatedErrors.length > 0) {\n\t\t\tthrow new InvalidSchemaException('updated schema is not valid', updatedErrors)\n\t\t}\n\n\t\tconst differs: Differ[] = [\n\t\t\tnew RemoveIndexNamesDiffer(),\n\t\t\tnew UpdateSettingsDiffer(),\n\t\t\tnew ConvertOneToManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToManyHasManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToOneHasOneRelationDiffer(),\n\t\t\tnew RemoveUniqueConstraintDiffer(),\n\t\t\tnew RemoveIndexDiffer(),\n\t\t\tnew RemoveViewDiffer(),\n\t\t\tnew RemoveEntityDiffer(),\n\t\t\tnew RemoveFieldDiffer(),\n\t\t\tnew CreateEnumDiffer(),\n\t\t\tnew UpdateEntityTableNameDiffer(),\n\t\t\tnew ToggleEventLogDiffer(),\n\t\t\tnew ToggleJunctionEventLogDiffer(),\n\t\t\tnew UpdateColumnDefinitionDiffer(),\n\t\t\tnew UpdateColumnNameDiffer(),\n\t\t\tnew UpdateRelationOnDeleteDiffer(),\n\t\t\tnew MakeRelationNotNullDiffer(),\n\t\t\tnew MakeRelationNullableDiffer(),\n\t\t\tnew EnableOrphanRemovalDiffer(),\n\t\t\tnew DisableOrphanRemovalDiffer(),\n\t\t\tnew UpdateRelationOrderByDiffer(),\n\t\t\tnew UpdateEnumDiffer(),\n\t\t\tnew RemoveChangedFieldDiffer(it => !isRelation(it) || isOwningRelation(it)),\n\t\t\tnew RemoveChangedFieldDiffer(it => isRelation(it) && isInverseRelation(it)),\n\t\t\tnew CreateEntityDiffer(),\n\t\t\tnew CreateColumnDiffer(),\n\t\t\tnew CreateRelationDiffer(),\n\t\t\tnew CreateViewDiffer(),\n\t\t\tnew CreateRelationInverseSideDiffer(),\n\t\t\tnew CreateUniqueConstraintDiffer(),\n\t\t\tnew CreateIndexDiffer(),\n\t\t\tnew RemoveEnumDiffer(),\n\t\t\tnew UpdateAclSchemaDiffer(this.options),\n\t\t\tnew UpdateValidationSchemaDiffer(this.options),\n\t\t\tnew UpdateEntityOrderByDiffer(),\n\t\t\tnew UpdateTargetDiffer(),\n\t\t\tnew CreateTargetDiffer(),\n\t\t\tnew UpdateTriggerDiffer(),\n\t\t\tnew CreateTriggerDiffer(),\n\t\t\tnew RemoveTriggerDiffer(),\n\t\t\tnew RemoveTargetDiffer(),\n\t\t]\n\n\t\tconst diffs: Migration.Modification[] = []\n\t\tlet appliedDiffsSchema = originalSchema\n\t\tfor (const differ of differs) {\n\t\t\tconst differDiffs = differ.createDiff(appliedDiffsSchema, updatedSchema)\n\t\t\tappliedDiffsSchema = this.schemaMigrator.applyModifications(appliedDiffsSchema, differDiffs, VERSION_LATEST)\n\t\t\tdiffs.push(...differDiffs)\n\t\t}\n\n\t\tif (!skipRecreateValidation) {\n\t\t\tconst errors = deepCompare(updatedSchema, appliedDiffsSchema, [], path => {\n\t\t\t\tif (path[0] === 'model' && path[1] === 'entities' && (path[3] === 'unique' || path[3] === 'index')) {\n\t\t\t\t\treturn (a, b) => {\n\t\t\t\t\t\treturn compareArraysIgnoreOrder(a, b, path)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null\n\t\t\t})\n\t\t\tif (errors.length === 0) {\n\t\t\t\treturn diffs\n\t\t\t}\n\t\t\tlet message = 'Updated schema cannot be recreated by the generated diff:'\n\t\t\tfor (const err of errors) {\n\t\t\t\tmessage += '\\n\\t' + err.path.join('.') + ': ' + err.message\n\t\t\t}\n\t\t\tmessage += '\\n\\nPlease fill a bug report'\n\t\t\tthrow new ImplementationException(message)\n\t\t}\n\n\t\treturn diffs\n\t}\n}\n\nexport class InvalidSchemaException extends Error {\n\tconstructor(message: string, public readonly validationErrors: ValidationError[]) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDO,MAAM,aAAa;AAAA,EACzB,YACkB,gBACA,SAGhB;AAJgB,SAAA,iBAAA;AACA,SAAA,UAAA;AAAA,EAAA;AAAA,EAKlB,YAAY,gBAAwB,eAAuB;AAAA,IAC1D,8BAA8B;AAAA,IAC9B,yBAAyB;AAAA,EAC1B,IAAiB,IAA8B;AAC9C,QAAI,CAAC,6BAA6B;AAC3B,YAAA,iBAAiB,gBAAgB,SAAS,cAAc;AAC1D,UAAA,eAAe,SAAS,GAAG;AACxB,cAAA,IAAI,uBAAuB,gCAAgC,cAAc;AAAA,MAAA;AAAA,IAChF;AAEK,UAAA,gBAAgB,gBAAgB,SAAS,aAAa;AACxD,QAAA,cAAc,SAAS,GAAG;AACvB,YAAA,IAAI,uBAAuB,+BAA+B,aAAa;AAAA,IAAA;AAG9E,UAAM,UAAoB;AAAA,MACzB,IAAI,uBAAuB;AAAA,MAC3B,IAAI,qBAAqB;AAAA,MACzB,IAAI,+BAA+B;AAAA,MACnC,IAAI,6CAA6C;AAAA,MACjD,IAAI,2CAA2C;AAAA,MAC/C,IAAI,6BAA6B;AAAA,MACjC,IAAI,kBAAkB;AAAA,MACtB,IAAI,iBAAiB;AAAA,MACrB,IAAI,mBAAmB;AAAA,MACvB,IAAI,kBAAkB;AAAA,MACtB,IAAI,iBAAiB;AAAA,MACrB,IAAI,4BAA4B;AAAA,MAChC,IAAI,qBAAqB;AAAA,MACzB,IAAI,6BAA6B;AAAA,MACjC,IAAI,6BAA6B;AAAA,MACjC,IAAI,uBAAuB;AAAA,MAC3B,IAAI,6BAA6B;AAAA,MACjC,IAAI,0BAA0B;AAAA,MAC9B,IAAI,2BAA2B;AAAA,MAC/B,IAAI,0BAA0B;AAAA,MAC9B,IAAI,2BAA2B;AAAA,MAC/B,IAAI,4BAA4B;AAAA,MAChC,IAAI,iBAAiB;AAAA,MACrB,IAAI,yBAAyB,CAAM,OAAA,CAAC,WAAW,EAAE,KAAK,iBAAiB,EAAE,CAAC;AAAA,MAC1E,IAAI,yBAAyB,CAAM,OAAA,WAAW,EAAE,KAAK,kBAAkB,EAAE,CAAC;AAAA,MAC1E,IAAI,mBAAmB;AAAA,MACvB,IAAI,mBAAmB;AAAA,MACvB,IAAI,qBAAqB;AAAA,MACzB,IAAI,iBAAiB;AAAA,MACrB,IAAI,gCAAgC;AAAA,MACpC,IAAI,6BAA6B;AAAA,MACjC,IAAI,kBAAkB;AAAA,MACtB,IAAI,iBAAiB;AAAA,MACrB,IAAI,sBAAsB,KAAK,OAAO;AAAA,MACtC,IAAI,6BAA6B,KAAK,OAAO;AAAA,MAC7C,IAAI,0BAA0B;AAAA,MAC9B,IAAI,mBAAmB;AAAA,MACvB,IAAI,mBAAmB;AAAA,MACvB,IAAI,oBAAoB;AAAA,
|
|
1
|
+
{"version":3,"file":"SchemaDiffer.js","sources":["../../../../packages/schema-migrations/src/SchemaDiffer.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { compareArraysIgnoreOrder, deepCompare, isInverseRelation, isOwningRelation, isRelation, SchemaValidator, ValidationError } from '@contember/schema-utils'\nimport { SchemaMigrator } from './SchemaMigrator'\nimport { Migration } from './Migration'\nimport { ImplementationException } from './exceptions'\nimport {\n\tConvertOneHasManyToManyHasManyRelationDiffer,\n\tConvertOneToManyRelationDiffer,\n\tCreateColumnDiffer,\n\tCreateEntityDiffer,\n\tCreateEnumDiffer,\n\tCreateRelationDiffer,\n\tCreateRelationInverseSideDiffer,\n\tCreateUniqueConstraintDiffer,\n\tCreateViewDiffer,\n\tDiffer,\n\tDisableOrphanRemovalDiffer,\n\tEnableOrphanRemovalDiffer,\n\tMakeRelationNotNullDiffer,\n\tMakeRelationNullableDiffer,\n\tRemoveEntityDiffer,\n\tRemoveEnumDiffer,\n\tRemoveFieldDiffer,\n\tRemoveUniqueConstraintDiffer,\n\tToggleEventLogDiffer,\n\tToggleJunctionEventLogDiffer,\n\tUpdateAclSchemaDiffer,\n\tUpdateColumnDefinitionDiffer,\n\tUpdateColumnNameDiffer,\n\tUpdateEntityOrderByDiffer,\n\tUpdateEntityTableNameDiffer,\n\tUpdateEnumDiffer,\n\tUpdateRelationOnDeleteDiffer,\n\tUpdateRelationOrderByDiffer,\n\tUpdateValidationSchemaDiffer,\n\tVERSION_LATEST,\n} from './modifications'\nimport { RemoveChangedFieldDiffer, RemoveViewDiffer } from './modifications/differs'\nimport { CreateIndexDiffer, RemoveIndexDiffer } from './modifications/indexes'\nimport { CreateTriggerDiffer, RemoveTriggerDiffer, UpdateTriggerDiffer } from './modifications/actions'\nimport { UpdateTargetDiffer } from './modifications/actions/UpdateTargetModification'\nimport { CreateTargetDiffer } from './modifications/actions/CreateTargetModification'\nimport { RemoveTargetDiffer } from './modifications/actions/RemoveTargetModification'\nimport { UpdateSettingsDiffer } from './modifications/settings'\nimport { RemoveIndexNamesDiffer } from './modifications/upgrade/RemoveIndexNamesModification'\nimport { ConvertOneHasManyToOneHasOneRelationDiffer } from './modifications/relations/ConvertOneHasManyToOneHasOneRelationModification'\n\ntype DiffOptions = { skipRecreateValidation?: boolean; skipInitialSchemaValidation?: boolean }\n\nexport class SchemaDiffer {\n\tconstructor(\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {}\n\n\tdiffSchemas(originalSchema: Schema, updatedSchema: Schema, {\n\t\tskipInitialSchemaValidation = false,\n\t\tskipRecreateValidation = false,\n\t}: DiffOptions = {}): Migration.Modification[] {\n\t\tif (!skipInitialSchemaValidation) {\n\t\t\tconst originalErrors = SchemaValidator.validate(originalSchema)\n\t\t\tif (originalErrors.length > 0) {\n\t\t\t\tthrow new InvalidSchemaException('original schema is not valid', originalErrors)\n\t\t\t}\n\t\t}\n\t\tconst updatedErrors = SchemaValidator.validate(updatedSchema)\n\t\tif (updatedErrors.length > 0) {\n\t\t\tthrow new InvalidSchemaException('updated schema is not valid', updatedErrors)\n\t\t}\n\n\t\tconst differs: Differ[] = [\n\t\t\tnew RemoveIndexNamesDiffer(),\n\t\t\tnew UpdateSettingsDiffer(),\n\t\t\tnew ConvertOneToManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToManyHasManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToOneHasOneRelationDiffer(),\n\t\t\tnew RemoveUniqueConstraintDiffer(),\n\t\t\tnew RemoveIndexDiffer(),\n\t\t\tnew RemoveViewDiffer(),\n\t\t\tnew RemoveEntityDiffer(),\n\t\t\tnew RemoveFieldDiffer(),\n\t\t\tnew CreateEnumDiffer(),\n\t\t\tnew UpdateEntityTableNameDiffer(),\n\t\t\tnew ToggleEventLogDiffer(),\n\t\t\tnew ToggleJunctionEventLogDiffer(),\n\t\t\tnew UpdateColumnDefinitionDiffer(),\n\t\t\tnew UpdateColumnNameDiffer(),\n\t\t\tnew UpdateRelationOnDeleteDiffer(),\n\t\t\tnew MakeRelationNotNullDiffer(),\n\t\t\tnew MakeRelationNullableDiffer(),\n\t\t\tnew EnableOrphanRemovalDiffer(),\n\t\t\tnew DisableOrphanRemovalDiffer(),\n\t\t\tnew UpdateRelationOrderByDiffer(),\n\t\t\tnew UpdateEnumDiffer(),\n\t\t\tnew RemoveChangedFieldDiffer(it => !isRelation(it) || isOwningRelation(it)),\n\t\t\tnew RemoveChangedFieldDiffer(it => isRelation(it) && isInverseRelation(it)),\n\t\t\tnew CreateEntityDiffer(),\n\t\t\tnew CreateColumnDiffer(),\n\t\t\tnew CreateRelationDiffer(),\n\t\t\tnew CreateViewDiffer(),\n\t\t\tnew CreateRelationInverseSideDiffer(),\n\t\t\tnew CreateUniqueConstraintDiffer(),\n\t\t\tnew CreateIndexDiffer(),\n\t\t\tnew RemoveEnumDiffer(),\n\t\t\tnew UpdateAclSchemaDiffer(this.options),\n\t\t\tnew UpdateValidationSchemaDiffer(this.options),\n\t\t\tnew UpdateEntityOrderByDiffer(),\n\t\t\tnew UpdateTargetDiffer(),\n\t\t\tnew CreateTargetDiffer(),\n\t\t\tnew UpdateTriggerDiffer(this.options),\n\t\t\tnew CreateTriggerDiffer(),\n\t\t\tnew RemoveTriggerDiffer(),\n\t\t\tnew RemoveTargetDiffer(),\n\t\t]\n\n\t\tconst diffs: Migration.Modification[] = []\n\t\tlet appliedDiffsSchema = originalSchema\n\t\tfor (const differ of differs) {\n\t\t\tconst differDiffs = differ.createDiff(appliedDiffsSchema, updatedSchema)\n\t\t\tappliedDiffsSchema = this.schemaMigrator.applyModifications(appliedDiffsSchema, differDiffs, VERSION_LATEST)\n\t\t\tdiffs.push(...differDiffs)\n\t\t}\n\n\t\tif (!skipRecreateValidation) {\n\t\t\tconst errors = deepCompare(updatedSchema, appliedDiffsSchema, [], path => {\n\t\t\t\tif (path[0] === 'model' && path[1] === 'entities' && (path[3] === 'unique' || path[3] === 'index')) {\n\t\t\t\t\treturn (a, b) => {\n\t\t\t\t\t\treturn compareArraysIgnoreOrder(a, b, path)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null\n\t\t\t})\n\t\t\tif (errors.length === 0) {\n\t\t\t\treturn diffs\n\t\t\t}\n\t\t\tlet message = 'Updated schema cannot be recreated by the generated diff:'\n\t\t\tfor (const err of errors) {\n\t\t\t\tmessage += '\\n\\t' + err.path.join('.') + ': ' + err.message\n\t\t\t}\n\t\t\tmessage += '\\n\\nPlease fill a bug report'\n\t\t\tthrow new ImplementationException(message)\n\t\t}\n\n\t\treturn diffs\n\t}\n}\n\nexport class InvalidSchemaException extends Error {\n\tconstructor(message: string, public readonly validationErrors: ValidationError[]) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,7 @@ const UpdateSettingsModification = require("./settings/UpdateSettingsModificatio
|
|
|
40
40
|
const CreateTriggerModification = require("./actions/CreateTriggerModification.cjs");
|
|
41
41
|
const RemoveTriggerModification = require("./actions/RemoveTriggerModification.cjs");
|
|
42
42
|
const UpdateTriggerModification = require("./actions/UpdateTriggerModification.cjs");
|
|
43
|
+
const PatchTriggerModification = require("./actions/PatchTriggerModification.cjs");
|
|
43
44
|
const CreateTargetModification = require("./actions/CreateTargetModification.cjs");
|
|
44
45
|
const RemoveTargetModification = require("./actions/RemoveTargetModification.cjs");
|
|
45
46
|
const UpdateTargetModification = require("./actions/UpdateTargetModification.cjs");
|
|
@@ -98,6 +99,7 @@ class ModificationHandlerFactory {
|
|
|
98
99
|
UpdateEntityOrderByModification.updateEntityOrderByModification,
|
|
99
100
|
CreateTriggerModification.createTriggerModification,
|
|
100
101
|
UpdateTriggerModification.updateTriggerModification,
|
|
102
|
+
PatchTriggerModification.patchTriggerModification,
|
|
101
103
|
RemoveTriggerModification.removeTriggerModification,
|
|
102
104
|
CreateTargetModification.createTargetModification,
|
|
103
105
|
UpdateTargetModification.updateTargetModification,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModificationHandlerFactory.cjs","sources":["../../../../../packages/schema-migrations/src/modifications/ModificationHandlerFactory.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { ModificationHandler, ModificationHandlerOptions, ModificationType } from './ModificationHandler'\nimport { patchAclSchemaModification, updateAclSchemaModification } from './acl'\nimport { createColumnModification, updateColumnDefinitionModification, updateColumnNameModification } from './columns'\nimport { createUniqueConstraintModification, removeUniqueConstraintModification } from './constraints'\nimport {\n\tcreateEntityModification,\n\tcreateViewModification,\n\tremoveEntityModification,\n\ttoggleEventLogModification,\n\tupdateEntityNameModification,\n\tupdateEntityTableNameModification,\n} from './entities'\nimport { updateViewModification } from './entities/UpdateViewModification'\nimport { createEnumModification, removeEnumModification, updateEnumModification } from './enums'\nimport { removeFieldModification, updateFieldNameModification } from './fields'\nimport {\n\tconvertOneHasManyToManyHasManyRelationModification,\n\tconvertOneToManyRelationModification,\n\tcreateRelationInverseSideModification,\n\tcreateRelationModification,\n\tdisableOrphanRemovalModification,\n\tenableOrphanRemovalModification,\n\tmakeRelationNotNullModification,\n\tmakeRelationNullableModification,\n\ttoggleJunctionEventLogModification,\n\tupdateRelationOnDeleteModification,\n\tupdateRelationOrderByModification,\n} from './relations'\nimport { patchValidationSchemaModification, updateValidationSchemaModification } from './validation'\nimport { createIndexModification, removeIndexModification } from './indexes'\nimport { updateSettingsModification } from './settings'\nimport { createTriggerModification, removeTriggerModification, updateTriggerModification } from './actions'\nimport { createTargetModification } from './actions/CreateTargetModification'\nimport { removeTargetModification } from './actions/RemoveTargetModification'\nimport { updateTargetModification } from './actions/UpdateTargetModification'\nimport { updateEntityOrderByModification } from './entities/UpdateEntityOrderByModification'\nimport { removeIndexNamesModification } from './upgrade/RemoveIndexNamesModification'\nimport { convertOneHasManyToOneHasOneRelationModification } from './relations/ConvertOneHasManyToOneHasOneRelationModification'\n\n\nclass ModificationHandlerFactory {\n\tconstructor(private readonly map: Record<string, ModificationType<string, any>>) {}\n\n\tpublic create<D>(name: string, data: D, schema: Schema, options: ModificationHandlerOptions): ModificationHandler<D> {\n\t\tif (!this.map[name]) {\n\t\t\tthrow new Error(`Undefined modification handler for ${name}`)\n\t\t}\n\t\treturn this.map[name].createHandler(data, schema, options)\n\t}\n}\n\nnamespace ModificationHandlerFactory {\n\ttype HandlerMap<D> = { [modificationName: string]: ModificationType<string, D> }\n\n\tconst handlers = [\n\t\tremoveIndexNamesModification,\n\t\tupdateSettingsModification,\n\t\tupdateAclSchemaModification,\n\t\tpatchAclSchemaModification,\n\t\tcreateColumnModification,\n\t\tupdateColumnDefinitionModification,\n\t\tupdateColumnNameModification,\n\t\tcreateUniqueConstraintModification,\n\t\tremoveUniqueConstraintModification,\n\t\tcreateIndexModification,\n\t\tremoveIndexModification,\n\t\tcreateEntityModification,\n\t\tremoveEntityModification,\n\t\tupdateEntityNameModification,\n\t\tupdateEntityTableNameModification,\n\t\tupdateViewModification,\n\t\tcreateViewModification,\n\t\tcreateEnumModification,\n\t\tremoveEnumModification,\n\t\tupdateEnumModification,\n\t\tremoveFieldModification,\n\t\tupdateFieldNameModification,\n\t\tcreateRelationInverseSideModification,\n\t\tcreateRelationModification,\n\t\tupdateRelationOnDeleteModification,\n\t\tupdateRelationOrderByModification,\n\t\tmakeRelationNotNullModification,\n\t\tmakeRelationNullableModification,\n\t\tenableOrphanRemovalModification,\n\t\tdisableOrphanRemovalModification,\n\t\tupdateValidationSchemaModification,\n\t\tpatchValidationSchemaModification,\n\t\tconvertOneToManyRelationModification,\n\t\tconvertOneHasManyToOneHasOneRelationModification,\n\t\ttoggleEventLogModification,\n\t\ttoggleJunctionEventLogModification,\n\t\tconvertOneHasManyToManyHasManyRelationModification,\n\t\tupdateEntityOrderByModification,\n\t\tcreateTriggerModification,\n\t\tupdateTriggerModification,\n\t\tremoveTriggerModification,\n\t\tcreateTargetModification,\n\t\tupdateTargetModification,\n\t\tremoveTargetModification,\n\t]\n\n\texport const defaultFactoryMap: HandlerMap<any> = Object.fromEntries(handlers.map(it => [it.id, it]))\n}\n\nexport { ModificationHandlerFactory }\n"],"names":["ModificationHandlerFactory","removeIndexNamesModification","updateSettingsModification","updateAclSchemaModification","patchAclSchemaModification","createColumnModification","updateColumnDefinitionModification","updateColumnNameModification","createUniqueConstraintModification","removeUniqueConstraintModification","createIndexModification","removeIndexModification","createEntityModification","removeEntityModification","updateEntityNameModification","updateEntityTableNameModification","updateViewModification","createViewModification","createEnumModification","removeEnumModification","updateEnumModification","removeFieldModification","updateFieldNameModification","createRelationInverseSideModification","createRelationModification","updateRelationOnDeleteModification","updateRelationOrderByModification","makeRelationNotNullModification","makeRelationNullableModification","enableOrphanRemovalModification","disableOrphanRemovalModification","updateValidationSchemaModification","patchValidationSchemaModification","convertOneToManyRelationModification","convertOneHasManyToOneHasOneRelationModification","toggleEventLogModification","toggleJunctionEventLogModification","convertOneHasManyToManyHasManyRelationModification","updateEntityOrderByModification","createTriggerModification","updateTriggerModification","removeTriggerModification","createTargetModification","updateTargetModification","removeTargetModification"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ModificationHandlerFactory.cjs","sources":["../../../../../packages/schema-migrations/src/modifications/ModificationHandlerFactory.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { ModificationHandler, ModificationHandlerOptions, ModificationType } from './ModificationHandler'\nimport { patchAclSchemaModification, updateAclSchemaModification } from './acl'\nimport { createColumnModification, updateColumnDefinitionModification, updateColumnNameModification } from './columns'\nimport { createUniqueConstraintModification, removeUniqueConstraintModification } from './constraints'\nimport {\n\tcreateEntityModification,\n\tcreateViewModification,\n\tremoveEntityModification,\n\ttoggleEventLogModification,\n\tupdateEntityNameModification,\n\tupdateEntityTableNameModification,\n} from './entities'\nimport { updateViewModification } from './entities/UpdateViewModification'\nimport { createEnumModification, removeEnumModification, updateEnumModification } from './enums'\nimport { removeFieldModification, updateFieldNameModification } from './fields'\nimport {\n\tconvertOneHasManyToManyHasManyRelationModification,\n\tconvertOneToManyRelationModification,\n\tcreateRelationInverseSideModification,\n\tcreateRelationModification,\n\tdisableOrphanRemovalModification,\n\tenableOrphanRemovalModification,\n\tmakeRelationNotNullModification,\n\tmakeRelationNullableModification,\n\ttoggleJunctionEventLogModification,\n\tupdateRelationOnDeleteModification,\n\tupdateRelationOrderByModification,\n} from './relations'\nimport { patchValidationSchemaModification, updateValidationSchemaModification } from './validation'\nimport { createIndexModification, removeIndexModification } from './indexes'\nimport { updateSettingsModification } from './settings'\nimport { createTriggerModification, patchTriggerModification, removeTriggerModification, updateTriggerModification } from './actions'\nimport { createTargetModification } from './actions/CreateTargetModification'\nimport { removeTargetModification } from './actions/RemoveTargetModification'\nimport { updateTargetModification } from './actions/UpdateTargetModification'\nimport { updateEntityOrderByModification } from './entities/UpdateEntityOrderByModification'\nimport { removeIndexNamesModification } from './upgrade/RemoveIndexNamesModification'\nimport { convertOneHasManyToOneHasOneRelationModification } from './relations/ConvertOneHasManyToOneHasOneRelationModification'\n\n\nclass ModificationHandlerFactory {\n\tconstructor(private readonly map: Record<string, ModificationType<string, any>>) {}\n\n\tpublic create<D>(name: string, data: D, schema: Schema, options: ModificationHandlerOptions): ModificationHandler<D> {\n\t\tif (!this.map[name]) {\n\t\t\tthrow new Error(`Undefined modification handler for ${name}`)\n\t\t}\n\t\treturn this.map[name].createHandler(data, schema, options)\n\t}\n}\n\nnamespace ModificationHandlerFactory {\n\ttype HandlerMap<D> = { [modificationName: string]: ModificationType<string, D> }\n\n\tconst handlers = [\n\t\tremoveIndexNamesModification,\n\t\tupdateSettingsModification,\n\t\tupdateAclSchemaModification,\n\t\tpatchAclSchemaModification,\n\t\tcreateColumnModification,\n\t\tupdateColumnDefinitionModification,\n\t\tupdateColumnNameModification,\n\t\tcreateUniqueConstraintModification,\n\t\tremoveUniqueConstraintModification,\n\t\tcreateIndexModification,\n\t\tremoveIndexModification,\n\t\tcreateEntityModification,\n\t\tremoveEntityModification,\n\t\tupdateEntityNameModification,\n\t\tupdateEntityTableNameModification,\n\t\tupdateViewModification,\n\t\tcreateViewModification,\n\t\tcreateEnumModification,\n\t\tremoveEnumModification,\n\t\tupdateEnumModification,\n\t\tremoveFieldModification,\n\t\tupdateFieldNameModification,\n\t\tcreateRelationInverseSideModification,\n\t\tcreateRelationModification,\n\t\tupdateRelationOnDeleteModification,\n\t\tupdateRelationOrderByModification,\n\t\tmakeRelationNotNullModification,\n\t\tmakeRelationNullableModification,\n\t\tenableOrphanRemovalModification,\n\t\tdisableOrphanRemovalModification,\n\t\tupdateValidationSchemaModification,\n\t\tpatchValidationSchemaModification,\n\t\tconvertOneToManyRelationModification,\n\t\tconvertOneHasManyToOneHasOneRelationModification,\n\t\ttoggleEventLogModification,\n\t\ttoggleJunctionEventLogModification,\n\t\tconvertOneHasManyToManyHasManyRelationModification,\n\t\tupdateEntityOrderByModification,\n\t\tcreateTriggerModification,\n\t\tupdateTriggerModification,\n\t\tpatchTriggerModification,\n\t\tremoveTriggerModification,\n\t\tcreateTargetModification,\n\t\tupdateTargetModification,\n\t\tremoveTargetModification,\n\t]\n\n\texport const defaultFactoryMap: HandlerMap<any> = Object.fromEntries(handlers.map(it => [it.id, it]))\n}\n\nexport { ModificationHandlerFactory }\n"],"names":["ModificationHandlerFactory","removeIndexNamesModification","updateSettingsModification","updateAclSchemaModification","patchAclSchemaModification","createColumnModification","updateColumnDefinitionModification","updateColumnNameModification","createUniqueConstraintModification","removeUniqueConstraintModification","createIndexModification","removeIndexModification","createEntityModification","removeEntityModification","updateEntityNameModification","updateEntityTableNameModification","updateViewModification","createViewModification","createEnumModification","removeEnumModification","updateEnumModification","removeFieldModification","updateFieldNameModification","createRelationInverseSideModification","createRelationModification","updateRelationOnDeleteModification","updateRelationOrderByModification","makeRelationNotNullModification","makeRelationNullableModification","enableOrphanRemovalModification","disableOrphanRemovalModification","updateValidationSchemaModification","patchValidationSchemaModification","convertOneToManyRelationModification","convertOneHasManyToOneHasOneRelationModification","toggleEventLogModification","toggleJunctionEventLogModification","convertOneHasManyToManyHasManyRelationModification","updateEntityOrderByModification","createTriggerModification","updateTriggerModification","patchTriggerModification","removeTriggerModification","createTargetModification","updateTargetModification","removeTargetModification"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,MAAM,2BAA2B;AAAA,EAChC,YAA6B,KAAoD;AAApD,SAAA,MAAA;AAAA,EAAA;AAAA,EAEtB,OAAU,MAAc,MAAS,QAAgB,SAA6D;AACpH,QAAI,CAAC,KAAK,IAAI,IAAI,GAAG;AACpB,YAAM,IAAI,MAAM,sCAAsC,IAAI,EAAE;AAAA,IAAA;AAE7D,WAAO,KAAK,IAAI,IAAI,EAAE,cAAc,MAAM,QAAQ,OAAO;AAAA,EAAA;AAE3D;AAAA,CAEA,CAAUA,gCAAV;AAGC,QAAM,WAAW;AAAA,IAChBC,6BAAA;AAAA,IACAC,2BAAA;AAAA,IACAC,4BAAA;AAAA,IACAC,2BAAA;AAAA,IACAC,yBAAA;AAAA,IACAC,mCAAA;AAAA,IACAC,6BAAA;AAAA,IACAC,mCAAA;AAAA,IACAC,mCAAA;AAAA,IACAC,wBAAA;AAAA,IACAC,wBAAA;AAAA,IACAC,yBAAA;AAAA,IACAC,yBAAA;AAAA,IACAC,6BAAA;AAAA,IACAC,kCAAA;AAAA,IACAC,uBAAA;AAAA,IACAC,uBAAA;AAAA,IACAC,uBAAA;AAAA,IACAC,uBAAA;AAAA,IACAC,uBAAA;AAAA,IACAC,wBAAA;AAAA,IACAC,4BAAA;AAAA,IACAC,sCAAA;AAAA,IACAC,2BAAA;AAAA,IACAC,mCAAA;AAAA,IACAC,kCAAA;AAAA,IACAC,gCAAA;AAAA,IACAC,iCAAA;AAAA,IACAC,gCAAA;AAAA,IACAC,iCAAA;AAAA,IACAC,mCAAA;AAAA,IACAC,kCAAA;AAAA,IACAC,qCAAA;AAAA,IACAC,iDAAA;AAAA,IACAC,2BAAA;AAAA,IACAC,mCAAA;AAAA,IACAC,mDAAA;AAAA,IACAC,gCAAA;AAAA,IACAC,0BAAA;AAAA,IACAC,0BAAA;AAAA,IACAC,yBAAA;AAAA,IACAC,0BAAA;AAAA,IACAC,yBAAA;AAAA,IACAC,yBAAA;AAAA,IACAC,yBAAAA;AAAAA,EACD;AAEa7C,8BAAA,oBAAqC,OAAO,YAAY,SAAS,IAAI,CAAM,OAAA,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;AAAA,GAnD3F,+BAAA,6BAAA,CAAA,EAAA;;"}
|
|
@@ -38,6 +38,7 @@ import { updateSettingsModification } from "./settings/UpdateSettingsModificatio
|
|
|
38
38
|
import { createTriggerModification } from "./actions/CreateTriggerModification.js";
|
|
39
39
|
import { removeTriggerModification } from "./actions/RemoveTriggerModification.js";
|
|
40
40
|
import { updateTriggerModification } from "./actions/UpdateTriggerModification.js";
|
|
41
|
+
import { patchTriggerModification } from "./actions/PatchTriggerModification.js";
|
|
41
42
|
import { createTargetModification } from "./actions/CreateTargetModification.js";
|
|
42
43
|
import { removeTargetModification } from "./actions/RemoveTargetModification.js";
|
|
43
44
|
import { updateTargetModification } from "./actions/UpdateTargetModification.js";
|
|
@@ -96,6 +97,7 @@ class ModificationHandlerFactory {
|
|
|
96
97
|
updateEntityOrderByModification,
|
|
97
98
|
createTriggerModification,
|
|
98
99
|
updateTriggerModification,
|
|
100
|
+
patchTriggerModification,
|
|
99
101
|
removeTriggerModification,
|
|
100
102
|
createTargetModification,
|
|
101
103
|
updateTargetModification,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModificationHandlerFactory.js","sources":["../../../../../packages/schema-migrations/src/modifications/ModificationHandlerFactory.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { ModificationHandler, ModificationHandlerOptions, ModificationType } from './ModificationHandler'\nimport { patchAclSchemaModification, updateAclSchemaModification } from './acl'\nimport { createColumnModification, updateColumnDefinitionModification, updateColumnNameModification } from './columns'\nimport { createUniqueConstraintModification, removeUniqueConstraintModification } from './constraints'\nimport {\n\tcreateEntityModification,\n\tcreateViewModification,\n\tremoveEntityModification,\n\ttoggleEventLogModification,\n\tupdateEntityNameModification,\n\tupdateEntityTableNameModification,\n} from './entities'\nimport { updateViewModification } from './entities/UpdateViewModification'\nimport { createEnumModification, removeEnumModification, updateEnumModification } from './enums'\nimport { removeFieldModification, updateFieldNameModification } from './fields'\nimport {\n\tconvertOneHasManyToManyHasManyRelationModification,\n\tconvertOneToManyRelationModification,\n\tcreateRelationInverseSideModification,\n\tcreateRelationModification,\n\tdisableOrphanRemovalModification,\n\tenableOrphanRemovalModification,\n\tmakeRelationNotNullModification,\n\tmakeRelationNullableModification,\n\ttoggleJunctionEventLogModification,\n\tupdateRelationOnDeleteModification,\n\tupdateRelationOrderByModification,\n} from './relations'\nimport { patchValidationSchemaModification, updateValidationSchemaModification } from './validation'\nimport { createIndexModification, removeIndexModification } from './indexes'\nimport { updateSettingsModification } from './settings'\nimport { createTriggerModification, removeTriggerModification, updateTriggerModification } from './actions'\nimport { createTargetModification } from './actions/CreateTargetModification'\nimport { removeTargetModification } from './actions/RemoveTargetModification'\nimport { updateTargetModification } from './actions/UpdateTargetModification'\nimport { updateEntityOrderByModification } from './entities/UpdateEntityOrderByModification'\nimport { removeIndexNamesModification } from './upgrade/RemoveIndexNamesModification'\nimport { convertOneHasManyToOneHasOneRelationModification } from './relations/ConvertOneHasManyToOneHasOneRelationModification'\n\n\nclass ModificationHandlerFactory {\n\tconstructor(private readonly map: Record<string, ModificationType<string, any>>) {}\n\n\tpublic create<D>(name: string, data: D, schema: Schema, options: ModificationHandlerOptions): ModificationHandler<D> {\n\t\tif (!this.map[name]) {\n\t\t\tthrow new Error(`Undefined modification handler for ${name}`)\n\t\t}\n\t\treturn this.map[name].createHandler(data, schema, options)\n\t}\n}\n\nnamespace ModificationHandlerFactory {\n\ttype HandlerMap<D> = { [modificationName: string]: ModificationType<string, D> }\n\n\tconst handlers = [\n\t\tremoveIndexNamesModification,\n\t\tupdateSettingsModification,\n\t\tupdateAclSchemaModification,\n\t\tpatchAclSchemaModification,\n\t\tcreateColumnModification,\n\t\tupdateColumnDefinitionModification,\n\t\tupdateColumnNameModification,\n\t\tcreateUniqueConstraintModification,\n\t\tremoveUniqueConstraintModification,\n\t\tcreateIndexModification,\n\t\tremoveIndexModification,\n\t\tcreateEntityModification,\n\t\tremoveEntityModification,\n\t\tupdateEntityNameModification,\n\t\tupdateEntityTableNameModification,\n\t\tupdateViewModification,\n\t\tcreateViewModification,\n\t\tcreateEnumModification,\n\t\tremoveEnumModification,\n\t\tupdateEnumModification,\n\t\tremoveFieldModification,\n\t\tupdateFieldNameModification,\n\t\tcreateRelationInverseSideModification,\n\t\tcreateRelationModification,\n\t\tupdateRelationOnDeleteModification,\n\t\tupdateRelationOrderByModification,\n\t\tmakeRelationNotNullModification,\n\t\tmakeRelationNullableModification,\n\t\tenableOrphanRemovalModification,\n\t\tdisableOrphanRemovalModification,\n\t\tupdateValidationSchemaModification,\n\t\tpatchValidationSchemaModification,\n\t\tconvertOneToManyRelationModification,\n\t\tconvertOneHasManyToOneHasOneRelationModification,\n\t\ttoggleEventLogModification,\n\t\ttoggleJunctionEventLogModification,\n\t\tconvertOneHasManyToManyHasManyRelationModification,\n\t\tupdateEntityOrderByModification,\n\t\tcreateTriggerModification,\n\t\tupdateTriggerModification,\n\t\tremoveTriggerModification,\n\t\tcreateTargetModification,\n\t\tupdateTargetModification,\n\t\tremoveTargetModification,\n\t]\n\n\texport const defaultFactoryMap: HandlerMap<any> = Object.fromEntries(handlers.map(it => [it.id, it]))\n}\n\nexport { ModificationHandlerFactory }\n"],"names":["ModificationHandlerFactory"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ModificationHandlerFactory.js","sources":["../../../../../packages/schema-migrations/src/modifications/ModificationHandlerFactory.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { ModificationHandler, ModificationHandlerOptions, ModificationType } from './ModificationHandler'\nimport { patchAclSchemaModification, updateAclSchemaModification } from './acl'\nimport { createColumnModification, updateColumnDefinitionModification, updateColumnNameModification } from './columns'\nimport { createUniqueConstraintModification, removeUniqueConstraintModification } from './constraints'\nimport {\n\tcreateEntityModification,\n\tcreateViewModification,\n\tremoveEntityModification,\n\ttoggleEventLogModification,\n\tupdateEntityNameModification,\n\tupdateEntityTableNameModification,\n} from './entities'\nimport { updateViewModification } from './entities/UpdateViewModification'\nimport { createEnumModification, removeEnumModification, updateEnumModification } from './enums'\nimport { removeFieldModification, updateFieldNameModification } from './fields'\nimport {\n\tconvertOneHasManyToManyHasManyRelationModification,\n\tconvertOneToManyRelationModification,\n\tcreateRelationInverseSideModification,\n\tcreateRelationModification,\n\tdisableOrphanRemovalModification,\n\tenableOrphanRemovalModification,\n\tmakeRelationNotNullModification,\n\tmakeRelationNullableModification,\n\ttoggleJunctionEventLogModification,\n\tupdateRelationOnDeleteModification,\n\tupdateRelationOrderByModification,\n} from './relations'\nimport { patchValidationSchemaModification, updateValidationSchemaModification } from './validation'\nimport { createIndexModification, removeIndexModification } from './indexes'\nimport { updateSettingsModification } from './settings'\nimport { createTriggerModification, patchTriggerModification, removeTriggerModification, updateTriggerModification } from './actions'\nimport { createTargetModification } from './actions/CreateTargetModification'\nimport { removeTargetModification } from './actions/RemoveTargetModification'\nimport { updateTargetModification } from './actions/UpdateTargetModification'\nimport { updateEntityOrderByModification } from './entities/UpdateEntityOrderByModification'\nimport { removeIndexNamesModification } from './upgrade/RemoveIndexNamesModification'\nimport { convertOneHasManyToOneHasOneRelationModification } from './relations/ConvertOneHasManyToOneHasOneRelationModification'\n\n\nclass ModificationHandlerFactory {\n\tconstructor(private readonly map: Record<string, ModificationType<string, any>>) {}\n\n\tpublic create<D>(name: string, data: D, schema: Schema, options: ModificationHandlerOptions): ModificationHandler<D> {\n\t\tif (!this.map[name]) {\n\t\t\tthrow new Error(`Undefined modification handler for ${name}`)\n\t\t}\n\t\treturn this.map[name].createHandler(data, schema, options)\n\t}\n}\n\nnamespace ModificationHandlerFactory {\n\ttype HandlerMap<D> = { [modificationName: string]: ModificationType<string, D> }\n\n\tconst handlers = [\n\t\tremoveIndexNamesModification,\n\t\tupdateSettingsModification,\n\t\tupdateAclSchemaModification,\n\t\tpatchAclSchemaModification,\n\t\tcreateColumnModification,\n\t\tupdateColumnDefinitionModification,\n\t\tupdateColumnNameModification,\n\t\tcreateUniqueConstraintModification,\n\t\tremoveUniqueConstraintModification,\n\t\tcreateIndexModification,\n\t\tremoveIndexModification,\n\t\tcreateEntityModification,\n\t\tremoveEntityModification,\n\t\tupdateEntityNameModification,\n\t\tupdateEntityTableNameModification,\n\t\tupdateViewModification,\n\t\tcreateViewModification,\n\t\tcreateEnumModification,\n\t\tremoveEnumModification,\n\t\tupdateEnumModification,\n\t\tremoveFieldModification,\n\t\tupdateFieldNameModification,\n\t\tcreateRelationInverseSideModification,\n\t\tcreateRelationModification,\n\t\tupdateRelationOnDeleteModification,\n\t\tupdateRelationOrderByModification,\n\t\tmakeRelationNotNullModification,\n\t\tmakeRelationNullableModification,\n\t\tenableOrphanRemovalModification,\n\t\tdisableOrphanRemovalModification,\n\t\tupdateValidationSchemaModification,\n\t\tpatchValidationSchemaModification,\n\t\tconvertOneToManyRelationModification,\n\t\tconvertOneHasManyToOneHasOneRelationModification,\n\t\ttoggleEventLogModification,\n\t\ttoggleJunctionEventLogModification,\n\t\tconvertOneHasManyToManyHasManyRelationModification,\n\t\tupdateEntityOrderByModification,\n\t\tcreateTriggerModification,\n\t\tupdateTriggerModification,\n\t\tpatchTriggerModification,\n\t\tremoveTriggerModification,\n\t\tcreateTargetModification,\n\t\tupdateTargetModification,\n\t\tremoveTargetModification,\n\t]\n\n\texport const defaultFactoryMap: HandlerMap<any> = Object.fromEntries(handlers.map(it => [it.id, it]))\n}\n\nexport { ModificationHandlerFactory }\n"],"names":["ModificationHandlerFactory"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,MAAM,2BAA2B;AAAA,EAChC,YAA6B,KAAoD;AAApD,SAAA,MAAA;AAAA,EAAA;AAAA,EAEtB,OAAU,MAAc,MAAS,QAAgB,SAA6D;AACpH,QAAI,CAAC,KAAK,IAAI,IAAI,GAAG;AACpB,YAAM,IAAI,MAAM,sCAAsC,IAAI,EAAE;AAAA,IAAA;AAE7D,WAAO,KAAK,IAAI,IAAI,EAAE,cAAc,MAAM,QAAQ,OAAO;AAAA,EAAA;AAE3D;AAAA,CAEA,CAAUA,gCAAV;AAGC,QAAM,WAAW;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEaA,8BAAA,oBAAqC,OAAO,YAAY,SAAS,IAAI,CAAM,OAAA,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;AAAA,GAnD3F,+BAAA,6BAAA,CAAA,EAAA;"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const ModificationHandler = require("../ModificationHandler.cjs");
|
|
4
|
+
const rfc6902 = require("rfc6902");
|
|
5
|
+
const deepCopy = require("../../utils/deepCopy.cjs");
|
|
6
|
+
class PatchTriggerModificationHandler {
|
|
7
|
+
constructor(data) {
|
|
8
|
+
this.data = data;
|
|
9
|
+
}
|
|
10
|
+
createSql() {
|
|
11
|
+
}
|
|
12
|
+
getSchemaUpdater() {
|
|
13
|
+
return ({ schema }) => {
|
|
14
|
+
const trigger = deepCopy(schema.actions.triggers[this.data.triggerName]);
|
|
15
|
+
if (!trigger) {
|
|
16
|
+
throw new Error(`Trigger ${this.data.triggerName} not found`);
|
|
17
|
+
}
|
|
18
|
+
const result = rfc6902.applyPatch(trigger, this.data.patch).filter((it) => it !== null);
|
|
19
|
+
if (result.length > 0) {
|
|
20
|
+
throw result[0];
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
...schema,
|
|
24
|
+
actions: {
|
|
25
|
+
...schema.actions,
|
|
26
|
+
triggers: {
|
|
27
|
+
...schema.actions.triggers,
|
|
28
|
+
[this.data.triggerName]: trigger
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
describe() {
|
|
35
|
+
return { message: `Patch trigger ${this.data.triggerName}` };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const patchTriggerModification = ModificationHandler.createModificationType({
|
|
39
|
+
id: "patchTrigger",
|
|
40
|
+
handler: PatchTriggerModificationHandler
|
|
41
|
+
});
|
|
42
|
+
exports.PatchTriggerModificationHandler = PatchTriggerModificationHandler;
|
|
43
|
+
exports.patchTriggerModification = patchTriggerModification;
|
|
44
|
+
//# sourceMappingURL=PatchTriggerModification.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PatchTriggerModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/actions/PatchTriggerModification.ts"],"sourcesContent":["import { Actions } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, ModificationHandler } from '../ModificationHandler'\nimport { applyPatch, Operation } from 'rfc6902'\nimport deepCopy from '../../utils/deepCopy'\n\nexport class PatchTriggerModificationHandler implements ModificationHandler<PatchTriggerModificationData> {\n\tconstructor(private readonly data: PatchTriggerModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => {\n\t\t\tconst trigger = deepCopy(schema.actions.triggers[this.data.triggerName])\n\n\t\t\tif (!trigger) {\n\t\t\t\tthrow new Error(`Trigger ${this.data.triggerName} not found`)\n\t\t\t}\n\n\t\t\tconst result = applyPatch(trigger, this.data.patch).filter(it => it !== null)\n\t\t\tif (result.length > 0) {\n\t\t\t\tthrow result[0]\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...schema,\n\t\t\t\tactions: {\n\t\t\t\t\t...schema.actions,\n\t\t\t\t\ttriggers: {\n\t\t\t\t\t\t...schema.actions.triggers,\n\t\t\t\t\t\t[this.data.triggerName]: trigger,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Patch trigger ${this.data.triggerName}` }\n\t}\n}\n\nexport interface PatchTriggerModificationData {\n\ttriggerName: string\n\tpatch: Operation[]\n}\n\nexport const patchTriggerModification = createModificationType({\n\tid: 'patchTrigger',\n\thandler: PatchTriggerModificationHandler,\n})\n"],"names":["applyPatch","createModificationType"],"mappings":";;;;;AAMO,MAAM,gCAA6F;AAAA,EACzG,YAA6B,MAAoC;AAApC,SAAA,OAAA;AAAA,EAAA;AAAA,EAEtB,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACjC,WAAA,CAAC,EAAE,aAAa;AAChB,YAAA,UAAU,SAAS,OAAO,QAAQ,SAAS,KAAK,KAAK,WAAW,CAAC;AAEvE,UAAI,CAAC,SAAS;AACb,cAAM,IAAI,MAAM,WAAW,KAAK,KAAK,WAAW,YAAY;AAAA,MAAA;AAGvD,YAAA,SAASA,QAAAA,WAAW,SAAS,KAAK,KAAK,KAAK,EAAE,OAAO,CAAM,OAAA,OAAO,IAAI;AACxE,UAAA,OAAO,SAAS,GAAG;AACtB,cAAM,OAAO,CAAC;AAAA,MAAA;AAGR,aAAA;AAAA,QACN,GAAG;AAAA,QACH,SAAS;AAAA,UACR,GAAG,OAAO;AAAA,UACV,UAAU;AAAA,YACT,GAAG,OAAO,QAAQ;AAAA,YAClB,CAAC,KAAK,KAAK,WAAW,GAAG;AAAA,UAAA;AAAA,QAC1B;AAAA,MAEF;AAAA,IACD;AAAA,EAAA;AAAA,EAGD,WAAW;AACV,WAAO,EAAE,SAAS,iBAAiB,KAAK,KAAK,WAAW,GAAG;AAAA,EAAA;AAE7D;AAOO,MAAM,2BAA2BC,oBAAAA,uBAAuB;AAAA,EAC9D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;;;"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { createModificationType } from "../ModificationHandler.js";
|
|
2
|
+
import { applyPatch } from "rfc6902";
|
|
3
|
+
import deepCopy from "../../utils/deepCopy.js";
|
|
4
|
+
class PatchTriggerModificationHandler {
|
|
5
|
+
constructor(data) {
|
|
6
|
+
this.data = data;
|
|
7
|
+
}
|
|
8
|
+
createSql() {
|
|
9
|
+
}
|
|
10
|
+
getSchemaUpdater() {
|
|
11
|
+
return ({ schema }) => {
|
|
12
|
+
const trigger = deepCopy(schema.actions.triggers[this.data.triggerName]);
|
|
13
|
+
if (!trigger) {
|
|
14
|
+
throw new Error(`Trigger ${this.data.triggerName} not found`);
|
|
15
|
+
}
|
|
16
|
+
const result = applyPatch(trigger, this.data.patch).filter((it) => it !== null);
|
|
17
|
+
if (result.length > 0) {
|
|
18
|
+
throw result[0];
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
...schema,
|
|
22
|
+
actions: {
|
|
23
|
+
...schema.actions,
|
|
24
|
+
triggers: {
|
|
25
|
+
...schema.actions.triggers,
|
|
26
|
+
[this.data.triggerName]: trigger
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
describe() {
|
|
33
|
+
return { message: `Patch trigger ${this.data.triggerName}` };
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const patchTriggerModification = createModificationType({
|
|
37
|
+
id: "patchTrigger",
|
|
38
|
+
handler: PatchTriggerModificationHandler
|
|
39
|
+
});
|
|
40
|
+
export {
|
|
41
|
+
PatchTriggerModificationHandler,
|
|
42
|
+
patchTriggerModification
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=PatchTriggerModification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PatchTriggerModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/actions/PatchTriggerModification.ts"],"sourcesContent":["import { Actions } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, ModificationHandler } from '../ModificationHandler'\nimport { applyPatch, Operation } from 'rfc6902'\nimport deepCopy from '../../utils/deepCopy'\n\nexport class PatchTriggerModificationHandler implements ModificationHandler<PatchTriggerModificationData> {\n\tconstructor(private readonly data: PatchTriggerModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => {\n\t\t\tconst trigger = deepCopy(schema.actions.triggers[this.data.triggerName])\n\n\t\t\tif (!trigger) {\n\t\t\t\tthrow new Error(`Trigger ${this.data.triggerName} not found`)\n\t\t\t}\n\n\t\t\tconst result = applyPatch(trigger, this.data.patch).filter(it => it !== null)\n\t\t\tif (result.length > 0) {\n\t\t\t\tthrow result[0]\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...schema,\n\t\t\t\tactions: {\n\t\t\t\t\t...schema.actions,\n\t\t\t\t\ttriggers: {\n\t\t\t\t\t\t...schema.actions.triggers,\n\t\t\t\t\t\t[this.data.triggerName]: trigger,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Patch trigger ${this.data.triggerName}` }\n\t}\n}\n\nexport interface PatchTriggerModificationData {\n\ttriggerName: string\n\tpatch: Operation[]\n}\n\nexport const patchTriggerModification = createModificationType({\n\tid: 'patchTrigger',\n\thandler: PatchTriggerModificationHandler,\n})\n"],"names":[],"mappings":";;;AAMO,MAAM,gCAA6F;AAAA,EACzG,YAA6B,MAAoC;AAApC,SAAA,OAAA;AAAA,EAAA;AAAA,EAEtB,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACjC,WAAA,CAAC,EAAE,aAAa;AAChB,YAAA,UAAU,SAAS,OAAO,QAAQ,SAAS,KAAK,KAAK,WAAW,CAAC;AAEvE,UAAI,CAAC,SAAS;AACb,cAAM,IAAI,MAAM,WAAW,KAAK,KAAK,WAAW,YAAY;AAAA,MAAA;AAGvD,YAAA,SAAS,WAAW,SAAS,KAAK,KAAK,KAAK,EAAE,OAAO,CAAM,OAAA,OAAO,IAAI;AACxE,UAAA,OAAO,SAAS,GAAG;AACtB,cAAM,OAAO,CAAC;AAAA,MAAA;AAGR,aAAA;AAAA,QACN,GAAG;AAAA,QACH,SAAS;AAAA,UACR,GAAG,OAAO;AAAA,UACV,UAAU;AAAA,YACT,GAAG,OAAO,QAAQ;AAAA,YAClB,CAAC,KAAK,KAAK,WAAW,GAAG;AAAA,UAAA;AAAA,QAC1B;AAAA,MAEF;AAAA,IACD;AAAA,EAAA;AAAA,EAGD,WAAW;AACV,WAAO,EAAE,SAAS,iBAAiB,KAAK,KAAK,WAAW,GAAG;AAAA,EAAA;AAE7D;AAOO,MAAM,2BAA2B,uBAAuB;AAAA,EAC9D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;"}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const ModificationHandler = require("../ModificationHandler.cjs");
|
|
4
4
|
const deepEqual = require("fast-deep-equal");
|
|
5
|
+
const rfc6902 = require("rfc6902");
|
|
6
|
+
const PatchTriggerModification = require("./PatchTriggerModification.cjs");
|
|
5
7
|
class UpdateTriggerModificationHandler {
|
|
6
8
|
constructor(data) {
|
|
7
9
|
this.data = data;
|
|
@@ -31,8 +33,21 @@ const updateTriggerModification = ModificationHandler.createModificationType({
|
|
|
31
33
|
handler: UpdateTriggerModificationHandler
|
|
32
34
|
});
|
|
33
35
|
class UpdateTriggerDiffer {
|
|
36
|
+
constructor(options) {
|
|
37
|
+
this.options = options;
|
|
38
|
+
}
|
|
34
39
|
createDiff(originalSchema, updatedSchema) {
|
|
35
|
-
return Object.entries(updatedSchema.actions.triggers).filter(([name, trigger]) => originalSchema.actions.triggers[name] && !deepEqual(trigger, originalSchema.actions.triggers[name])).map(([, trigger]) =>
|
|
40
|
+
return Object.entries(updatedSchema.actions.triggers).filter(([name, trigger]) => originalSchema.actions.triggers[name] && !deepEqual(trigger, originalSchema.actions.triggers[name])).map(([name, trigger]) => {
|
|
41
|
+
const originalTrigger = originalSchema.actions.triggers[name];
|
|
42
|
+
const patch = rfc6902.createPatch(originalTrigger, trigger);
|
|
43
|
+
if (patch.length <= (this.options?.maxPatchSize ?? 100)) {
|
|
44
|
+
return PatchTriggerModification.patchTriggerModification.createModification({
|
|
45
|
+
triggerName: name,
|
|
46
|
+
patch
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return updateTriggerModification.createModification({ trigger });
|
|
50
|
+
});
|
|
36
51
|
}
|
|
37
52
|
}
|
|
38
53
|
exports.UpdateTriggerDiffer = UpdateTriggerDiffer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateTriggerModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/actions/UpdateTriggerModification.ts"],"sourcesContent":["import { Actions, Schema } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\n\nexport class UpdateTriggerModificationHandler implements ModificationHandler<UpdateTriggerModificationData> {\n\tconstructor(private readonly data: UpdateTriggerModificationData) {\n\t}\n\n\tpublic createSql(): void {\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => {\n\t\t\treturn ({\n\t\t\t\t...schema,\n\t\t\t\tactions: {\n\t\t\t\t\t...schema.actions,\n\t\t\t\t\ttriggers: {\n\t\t\t\t\t\t...schema.actions.triggers,\n\t\t\t\t\t\t[this.data.trigger.name]: this.data.trigger,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Update trigger ${this.data.trigger.name}` }\n\t}\n}\n\nexport interface UpdateTriggerModificationData {\n\ttrigger: Actions.AnyTrigger\n}\n\nexport const updateTriggerModification = createModificationType({\n\tid: 'updateTrigger',\n\thandler: UpdateTriggerModificationHandler,\n})\n\nexport class UpdateTriggerDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.entries(updatedSchema.actions.triggers)\n\t\t\t.filter(([name, trigger]) => originalSchema.actions.triggers[name] && !deepEqual(trigger, originalSchema.actions.triggers[name]))\n\t\t\t.map(([, trigger]) => updateTriggerModification.createModification({ trigger }))\n\t}\n}\n"],"names":["createModificationType"],"mappings":"
|
|
1
|
+
{"version":3,"file":"UpdateTriggerModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/actions/UpdateTriggerModification.ts"],"sourcesContent":["import { Actions, Schema } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createPatch } from 'rfc6902'\nimport { patchTriggerModification } from './PatchTriggerModification'\n\nexport class UpdateTriggerModificationHandler implements ModificationHandler<UpdateTriggerModificationData> {\n\tconstructor(private readonly data: UpdateTriggerModificationData) {\n\t}\n\n\tpublic createSql(): void {\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => {\n\t\t\treturn ({\n\t\t\t\t...schema,\n\t\t\t\tactions: {\n\t\t\t\t\t...schema.actions,\n\t\t\t\t\ttriggers: {\n\t\t\t\t\t\t...schema.actions.triggers,\n\t\t\t\t\t\t[this.data.trigger.name]: this.data.trigger,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Update trigger ${this.data.trigger.name}` }\n\t}\n}\n\nexport interface UpdateTriggerModificationData {\n\ttrigger: Actions.AnyTrigger\n}\n\nexport const updateTriggerModification = createModificationType({\n\tid: 'updateTrigger',\n\thandler: UpdateTriggerModificationHandler,\n})\n\nexport class UpdateTriggerDiffer implements Differ {\n\tconstructor(\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {\n\t}\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.entries(updatedSchema.actions.triggers)\n\t\t\t.filter(([name, trigger]) => originalSchema.actions.triggers[name] && !deepEqual(trigger, originalSchema.actions.triggers[name]))\n\t\t\t.map(([name, trigger]) => {\n\t\t\t\tconst originalTrigger = originalSchema.actions.triggers[name]\n\n\t\t\t\tconst patch = createPatch(originalTrigger, trigger)\n\t\t\t\tif (patch.length <= (this.options?.maxPatchSize ?? 100)) {\n\t\t\t\t\treturn patchTriggerModification.createModification({\n\t\t\t\t\t\ttriggerName: name,\n\t\t\t\t\t\tpatch,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\treturn updateTriggerModification.createModification({ trigger })\n\t\t\t})\n\t}\n}\n"],"names":["createModificationType","createPatch","patchTriggerModification"],"mappings":";;;;;;AAOO,MAAM,iCAA+F;AAAA,EAC3G,YAA6B,MAAqC;AAArC,SAAA,OAAA;AAAA,EAAA;AAAA,EAGtB,YAAkB;AAAA,EAAA;AAAA,EAGlB,mBAAkC;AACjC,WAAA,CAAC,EAAE,aAAa;AACd,aAAA;AAAA,QACP,GAAG;AAAA,QACH,SAAS;AAAA,UACR,GAAG,OAAO;AAAA,UACV,UAAU;AAAA,YACT,GAAG,OAAO,QAAQ;AAAA,YAClB,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,KAAK,KAAK;AAAA,UAAA;AAAA,QACrC;AAAA,MAEF;AAAA,IACD;AAAA,EAAA;AAAA,EAGD,WAAW;AACV,WAAO,EAAE,SAAS,kBAAkB,KAAK,KAAK,QAAQ,IAAI,GAAG;AAAA,EAAA;AAE/D;AAMO,MAAM,4BAA4BA,oBAAAA,uBAAuB;AAAA,EAC/D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,oBAAsC;AAAA,EAClD,YACkB,SAGhB;AAHgB,SAAA,UAAA;AAAA,EAAA;AAAA,EAMlB,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,QAAQ,cAAc,QAAQ,QAAQ,EAClD,OAAO,CAAC,CAAC,MAAM,OAAO,MAAM,eAAe,QAAQ,SAAS,IAAI,KAAK,CAAC,UAAU,SAAS,eAAe,QAAQ,SAAS,IAAI,CAAC,CAAC,EAC/H,IAAI,CAAC,CAAC,MAAM,OAAO,MAAM;AACzB,YAAM,kBAAkB,eAAe,QAAQ,SAAS,IAAI;AAEtD,YAAA,QAAQC,QAAAA,YAAY,iBAAiB,OAAO;AAClD,UAAI,MAAM,WAAW,KAAK,SAAS,gBAAgB,MAAM;AACxD,eAAOC,yBAAAA,yBAAyB,mBAAmB;AAAA,UAClD,aAAa;AAAA,UACb;AAAA,QAAA,CACA;AAAA,MAAA;AAGF,aAAO,0BAA0B,mBAAmB,EAAE,SAAS;AAAA,IAAA,CAC/D;AAAA,EAAA;AAEJ;;;;"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { createModificationType } from "../ModificationHandler.js";
|
|
2
2
|
import deepEqual from "fast-deep-equal";
|
|
3
|
+
import { createPatch } from "rfc6902";
|
|
4
|
+
import { patchTriggerModification } from "./PatchTriggerModification.js";
|
|
3
5
|
class UpdateTriggerModificationHandler {
|
|
4
6
|
constructor(data) {
|
|
5
7
|
this.data = data;
|
|
@@ -29,8 +31,21 @@ const updateTriggerModification = createModificationType({
|
|
|
29
31
|
handler: UpdateTriggerModificationHandler
|
|
30
32
|
});
|
|
31
33
|
class UpdateTriggerDiffer {
|
|
34
|
+
constructor(options) {
|
|
35
|
+
this.options = options;
|
|
36
|
+
}
|
|
32
37
|
createDiff(originalSchema, updatedSchema) {
|
|
33
|
-
return Object.entries(updatedSchema.actions.triggers).filter(([name, trigger]) => originalSchema.actions.triggers[name] && !deepEqual(trigger, originalSchema.actions.triggers[name])).map(([, trigger]) =>
|
|
38
|
+
return Object.entries(updatedSchema.actions.triggers).filter(([name, trigger]) => originalSchema.actions.triggers[name] && !deepEqual(trigger, originalSchema.actions.triggers[name])).map(([name, trigger]) => {
|
|
39
|
+
const originalTrigger = originalSchema.actions.triggers[name];
|
|
40
|
+
const patch = createPatch(originalTrigger, trigger);
|
|
41
|
+
if (patch.length <= (this.options?.maxPatchSize ?? 100)) {
|
|
42
|
+
return patchTriggerModification.createModification({
|
|
43
|
+
triggerName: name,
|
|
44
|
+
patch
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return updateTriggerModification.createModification({ trigger });
|
|
48
|
+
});
|
|
34
49
|
}
|
|
35
50
|
}
|
|
36
51
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateTriggerModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/actions/UpdateTriggerModification.ts"],"sourcesContent":["import { Actions, Schema } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\n\nexport class UpdateTriggerModificationHandler implements ModificationHandler<UpdateTriggerModificationData> {\n\tconstructor(private readonly data: UpdateTriggerModificationData) {\n\t}\n\n\tpublic createSql(): void {\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => {\n\t\t\treturn ({\n\t\t\t\t...schema,\n\t\t\t\tactions: {\n\t\t\t\t\t...schema.actions,\n\t\t\t\t\ttriggers: {\n\t\t\t\t\t\t...schema.actions.triggers,\n\t\t\t\t\t\t[this.data.trigger.name]: this.data.trigger,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Update trigger ${this.data.trigger.name}` }\n\t}\n}\n\nexport interface UpdateTriggerModificationData {\n\ttrigger: Actions.AnyTrigger\n}\n\nexport const updateTriggerModification = createModificationType({\n\tid: 'updateTrigger',\n\thandler: UpdateTriggerModificationHandler,\n})\n\nexport class UpdateTriggerDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.entries(updatedSchema.actions.triggers)\n\t\t\t.filter(([name, trigger]) => originalSchema.actions.triggers[name] && !deepEqual(trigger, originalSchema.actions.triggers[name]))\n\t\t\t.map(([, trigger]) => updateTriggerModification.createModification({ trigger }))\n\t}\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UpdateTriggerModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/actions/UpdateTriggerModification.ts"],"sourcesContent":["import { Actions, Schema } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createPatch } from 'rfc6902'\nimport { patchTriggerModification } from './PatchTriggerModification'\n\nexport class UpdateTriggerModificationHandler implements ModificationHandler<UpdateTriggerModificationData> {\n\tconstructor(private readonly data: UpdateTriggerModificationData) {\n\t}\n\n\tpublic createSql(): void {\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => {\n\t\t\treturn ({\n\t\t\t\t...schema,\n\t\t\t\tactions: {\n\t\t\t\t\t...schema.actions,\n\t\t\t\t\ttriggers: {\n\t\t\t\t\t\t...schema.actions.triggers,\n\t\t\t\t\t\t[this.data.trigger.name]: this.data.trigger,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Update trigger ${this.data.trigger.name}` }\n\t}\n}\n\nexport interface UpdateTriggerModificationData {\n\ttrigger: Actions.AnyTrigger\n}\n\nexport const updateTriggerModification = createModificationType({\n\tid: 'updateTrigger',\n\thandler: UpdateTriggerModificationHandler,\n})\n\nexport class UpdateTriggerDiffer implements Differ {\n\tconstructor(\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {\n\t}\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.entries(updatedSchema.actions.triggers)\n\t\t\t.filter(([name, trigger]) => originalSchema.actions.triggers[name] && !deepEqual(trigger, originalSchema.actions.triggers[name]))\n\t\t\t.map(([name, trigger]) => {\n\t\t\t\tconst originalTrigger = originalSchema.actions.triggers[name]\n\n\t\t\t\tconst patch = createPatch(originalTrigger, trigger)\n\t\t\t\tif (patch.length <= (this.options?.maxPatchSize ?? 100)) {\n\t\t\t\t\treturn patchTriggerModification.createModification({\n\t\t\t\t\t\ttriggerName: name,\n\t\t\t\t\t\tpatch,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\treturn updateTriggerModification.createModification({ trigger })\n\t\t\t})\n\t}\n}\n"],"names":[],"mappings":";;;;AAOO,MAAM,iCAA+F;AAAA,EAC3G,YAA6B,MAAqC;AAArC,SAAA,OAAA;AAAA,EAAA;AAAA,EAGtB,YAAkB;AAAA,EAAA;AAAA,EAGlB,mBAAkC;AACjC,WAAA,CAAC,EAAE,aAAa;AACd,aAAA;AAAA,QACP,GAAG;AAAA,QACH,SAAS;AAAA,UACR,GAAG,OAAO;AAAA,UACV,UAAU;AAAA,YACT,GAAG,OAAO,QAAQ;AAAA,YAClB,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,KAAK,KAAK;AAAA,UAAA;AAAA,QACrC;AAAA,MAEF;AAAA,IACD;AAAA,EAAA;AAAA,EAGD,WAAW;AACV,WAAO,EAAE,SAAS,kBAAkB,KAAK,KAAK,QAAQ,IAAI,GAAG;AAAA,EAAA;AAE/D;AAMO,MAAM,4BAA4B,uBAAuB;AAAA,EAC/D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,oBAAsC;AAAA,EAClD,YACkB,SAGhB;AAHgB,SAAA,UAAA;AAAA,EAAA;AAAA,EAMlB,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,QAAQ,cAAc,QAAQ,QAAQ,EAClD,OAAO,CAAC,CAAC,MAAM,OAAO,MAAM,eAAe,QAAQ,SAAS,IAAI,KAAK,CAAC,UAAU,SAAS,eAAe,QAAQ,SAAS,IAAI,CAAC,CAAC,EAC/H,IAAI,CAAC,CAAC,MAAM,OAAO,MAAM;AACzB,YAAM,kBAAkB,eAAe,QAAQ,SAAS,IAAI;AAEtD,YAAA,QAAQ,YAAY,iBAAiB,OAAO;AAClD,UAAI,MAAM,WAAW,KAAK,SAAS,gBAAgB,MAAM;AACxD,eAAO,yBAAyB,mBAAmB;AAAA,UAClD,aAAa;AAAA,UACb;AAAA,QAAA,CACA;AAAA,MAAA;AAGF,aAAO,0BAA0B,mBAAmB,EAAE,SAAS;AAAA,IAAA,CAC/D;AAAA,EAAA;AAEJ;"}
|
|
@@ -105,7 +105,7 @@ class SchemaDiffer {
|
|
|
105
105
|
new UpdateEntityOrderByModification.UpdateEntityOrderByDiffer(),
|
|
106
106
|
new UpdateTargetModification.UpdateTargetDiffer(),
|
|
107
107
|
new CreateTargetModification.CreateTargetDiffer(),
|
|
108
|
-
new UpdateTriggerModification.UpdateTriggerDiffer(),
|
|
108
|
+
new UpdateTriggerModification.UpdateTriggerDiffer(this.options),
|
|
109
109
|
new CreateTriggerModification.CreateTriggerDiffer(),
|
|
110
110
|
new RemoveTriggerModification.RemoveTriggerDiffer(),
|
|
111
111
|
new RemoveTargetModification.RemoveTargetDiffer()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaDiffer.cjs","sources":["../../../../packages/schema-migrations/src/SchemaDiffer.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { compareArraysIgnoreOrder, deepCompare, isInverseRelation, isOwningRelation, isRelation, SchemaValidator, ValidationError } from '@contember/schema-utils'\nimport { SchemaMigrator } from './SchemaMigrator'\nimport { Migration } from './Migration'\nimport { ImplementationException } from './exceptions'\nimport {\n\tConvertOneHasManyToManyHasManyRelationDiffer,\n\tConvertOneToManyRelationDiffer,\n\tCreateColumnDiffer,\n\tCreateEntityDiffer,\n\tCreateEnumDiffer,\n\tCreateRelationDiffer,\n\tCreateRelationInverseSideDiffer,\n\tCreateUniqueConstraintDiffer,\n\tCreateViewDiffer,\n\tDiffer,\n\tDisableOrphanRemovalDiffer,\n\tEnableOrphanRemovalDiffer,\n\tMakeRelationNotNullDiffer,\n\tMakeRelationNullableDiffer,\n\tRemoveEntityDiffer,\n\tRemoveEnumDiffer,\n\tRemoveFieldDiffer,\n\tRemoveUniqueConstraintDiffer,\n\tToggleEventLogDiffer,\n\tToggleJunctionEventLogDiffer,\n\tUpdateAclSchemaDiffer,\n\tUpdateColumnDefinitionDiffer,\n\tUpdateColumnNameDiffer,\n\tUpdateEntityOrderByDiffer,\n\tUpdateEntityTableNameDiffer,\n\tUpdateEnumDiffer,\n\tUpdateRelationOnDeleteDiffer,\n\tUpdateRelationOrderByDiffer,\n\tUpdateValidationSchemaDiffer,\n\tVERSION_LATEST,\n} from './modifications'\nimport { RemoveChangedFieldDiffer, RemoveViewDiffer } from './modifications/differs'\nimport { CreateIndexDiffer, RemoveIndexDiffer } from './modifications/indexes'\nimport { CreateTriggerDiffer, RemoveTriggerDiffer, UpdateTriggerDiffer } from './modifications/actions'\nimport { UpdateTargetDiffer } from './modifications/actions/UpdateTargetModification'\nimport { CreateTargetDiffer } from './modifications/actions/CreateTargetModification'\nimport { RemoveTargetDiffer } from './modifications/actions/RemoveTargetModification'\nimport { UpdateSettingsDiffer } from './modifications/settings'\nimport { RemoveIndexNamesDiffer } from './modifications/upgrade/RemoveIndexNamesModification'\nimport { ConvertOneHasManyToOneHasOneRelationDiffer } from './modifications/relations/ConvertOneHasManyToOneHasOneRelationModification'\n\ntype DiffOptions = { skipRecreateValidation?: boolean; skipInitialSchemaValidation?: boolean }\n\nexport class SchemaDiffer {\n\tconstructor(\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {}\n\n\tdiffSchemas(originalSchema: Schema, updatedSchema: Schema, {\n\t\tskipInitialSchemaValidation = false,\n\t\tskipRecreateValidation = false,\n\t}: DiffOptions = {}): Migration.Modification[] {\n\t\tif (!skipInitialSchemaValidation) {\n\t\t\tconst originalErrors = SchemaValidator.validate(originalSchema)\n\t\t\tif (originalErrors.length > 0) {\n\t\t\t\tthrow new InvalidSchemaException('original schema is not valid', originalErrors)\n\t\t\t}\n\t\t}\n\t\tconst updatedErrors = SchemaValidator.validate(updatedSchema)\n\t\tif (updatedErrors.length > 0) {\n\t\t\tthrow new InvalidSchemaException('updated schema is not valid', updatedErrors)\n\t\t}\n\n\t\tconst differs: Differ[] = [\n\t\t\tnew RemoveIndexNamesDiffer(),\n\t\t\tnew UpdateSettingsDiffer(),\n\t\t\tnew ConvertOneToManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToManyHasManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToOneHasOneRelationDiffer(),\n\t\t\tnew RemoveUniqueConstraintDiffer(),\n\t\t\tnew RemoveIndexDiffer(),\n\t\t\tnew RemoveViewDiffer(),\n\t\t\tnew RemoveEntityDiffer(),\n\t\t\tnew RemoveFieldDiffer(),\n\t\t\tnew CreateEnumDiffer(),\n\t\t\tnew UpdateEntityTableNameDiffer(),\n\t\t\tnew ToggleEventLogDiffer(),\n\t\t\tnew ToggleJunctionEventLogDiffer(),\n\t\t\tnew UpdateColumnDefinitionDiffer(),\n\t\t\tnew UpdateColumnNameDiffer(),\n\t\t\tnew UpdateRelationOnDeleteDiffer(),\n\t\t\tnew MakeRelationNotNullDiffer(),\n\t\t\tnew MakeRelationNullableDiffer(),\n\t\t\tnew EnableOrphanRemovalDiffer(),\n\t\t\tnew DisableOrphanRemovalDiffer(),\n\t\t\tnew UpdateRelationOrderByDiffer(),\n\t\t\tnew UpdateEnumDiffer(),\n\t\t\tnew RemoveChangedFieldDiffer(it => !isRelation(it) || isOwningRelation(it)),\n\t\t\tnew RemoveChangedFieldDiffer(it => isRelation(it) && isInverseRelation(it)),\n\t\t\tnew CreateEntityDiffer(),\n\t\t\tnew CreateColumnDiffer(),\n\t\t\tnew CreateRelationDiffer(),\n\t\t\tnew CreateViewDiffer(),\n\t\t\tnew CreateRelationInverseSideDiffer(),\n\t\t\tnew CreateUniqueConstraintDiffer(),\n\t\t\tnew CreateIndexDiffer(),\n\t\t\tnew RemoveEnumDiffer(),\n\t\t\tnew UpdateAclSchemaDiffer(this.options),\n\t\t\tnew UpdateValidationSchemaDiffer(this.options),\n\t\t\tnew UpdateEntityOrderByDiffer(),\n\t\t\tnew UpdateTargetDiffer(),\n\t\t\tnew CreateTargetDiffer(),\n\t\t\tnew UpdateTriggerDiffer(),\n\t\t\tnew CreateTriggerDiffer(),\n\t\t\tnew RemoveTriggerDiffer(),\n\t\t\tnew RemoveTargetDiffer(),\n\t\t]\n\n\t\tconst diffs: Migration.Modification[] = []\n\t\tlet appliedDiffsSchema = originalSchema\n\t\tfor (const differ of differs) {\n\t\t\tconst differDiffs = differ.createDiff(appliedDiffsSchema, updatedSchema)\n\t\t\tappliedDiffsSchema = this.schemaMigrator.applyModifications(appliedDiffsSchema, differDiffs, VERSION_LATEST)\n\t\t\tdiffs.push(...differDiffs)\n\t\t}\n\n\t\tif (!skipRecreateValidation) {\n\t\t\tconst errors = deepCompare(updatedSchema, appliedDiffsSchema, [], path => {\n\t\t\t\tif (path[0] === 'model' && path[1] === 'entities' && (path[3] === 'unique' || path[3] === 'index')) {\n\t\t\t\t\treturn (a, b) => {\n\t\t\t\t\t\treturn compareArraysIgnoreOrder(a, b, path)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null\n\t\t\t})\n\t\t\tif (errors.length === 0) {\n\t\t\t\treturn diffs\n\t\t\t}\n\t\t\tlet message = 'Updated schema cannot be recreated by the generated diff:'\n\t\t\tfor (const err of errors) {\n\t\t\t\tmessage += '\\n\\t' + err.path.join('.') + ': ' + err.message\n\t\t\t}\n\t\t\tmessage += '\\n\\nPlease fill a bug report'\n\t\t\tthrow new ImplementationException(message)\n\t\t}\n\n\t\treturn diffs\n\t}\n}\n\nexport class InvalidSchemaException extends Error {\n\tconstructor(message: string, public readonly validationErrors: ValidationError[]) {\n\t\tsuper(message)\n\t}\n}\n"],"names":["SchemaValidator","RemoveIndexNamesDiffer","UpdateSettingsDiffer","ConvertOneToManyRelationDiffer","ConvertOneHasManyToManyHasManyRelationDiffer","ConvertOneHasManyToOneHasOneRelationDiffer","RemoveUniqueConstraintDiffer","RemoveIndexDiffer","RemoveViewDiffer","RemoveEntityDiffer","RemoveFieldDiffer","CreateEnumDiffer","UpdateEntityTableNameDiffer","ToggleEventLogDiffer","ToggleJunctionEventLogDiffer","UpdateColumnDefinitionDiffer","UpdateColumnNameDiffer","UpdateRelationOnDeleteDiffer","MakeRelationNotNullDiffer","MakeRelationNullableDiffer","EnableOrphanRemovalDiffer","DisableOrphanRemovalDiffer","UpdateRelationOrderByDiffer","UpdateEnumDiffer","RemoveChangedFieldDiffer","isRelation","isOwningRelation","isInverseRelation","CreateEntityDiffer","CreateColumnDiffer","CreateRelationDiffer","CreateViewDiffer","CreateRelationInverseSideDiffer","CreateUniqueConstraintDiffer","CreateIndexDiffer","RemoveEnumDiffer","UpdateAclSchemaDiffer","UpdateValidationSchemaDiffer","UpdateEntityOrderByDiffer","UpdateTargetDiffer","CreateTargetDiffer","UpdateTriggerDiffer","CreateTriggerDiffer","RemoveTriggerDiffer","RemoveTargetDiffer","VERSION_LATEST","deepCompare","compareArraysIgnoreOrder","ImplementationException"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDO,MAAM,aAAa;AAAA,EACzB,YACkB,gBACA,SAGhB;AAJgB,SAAA,iBAAA;AACA,SAAA,UAAA;AAAA,EAAA;AAAA,EAKlB,YAAY,gBAAwB,eAAuB;AAAA,IAC1D,8BAA8B;AAAA,IAC9B,yBAAyB;AAAA,EAC1B,IAAiB,IAA8B;AAC9C,QAAI,CAAC,6BAA6B;AAC3B,YAAA,iBAAiBA,YAAAA,gBAAgB,SAAS,cAAc;AAC1D,UAAA,eAAe,SAAS,GAAG;AACxB,cAAA,IAAI,uBAAuB,gCAAgC,cAAc;AAAA,MAAA;AAAA,IAChF;AAEK,UAAA,gBAAgBA,YAAAA,gBAAgB,SAAS,aAAa;AACxD,QAAA,cAAc,SAAS,GAAG;AACvB,YAAA,IAAI,uBAAuB,+BAA+B,aAAa;AAAA,IAAA;AAG9E,UAAM,UAAoB;AAAA,MACzB,IAAIC,oDAAuB;AAAA,MAC3B,IAAIC,gDAAqB;AAAA,MACzB,IAAIC,oEAA+B;AAAA,MACnC,IAAIC,gGAA6C;AAAA,MACjD,IAAIC,4FAA2C;AAAA,MAC/C,IAAIC,gEAA6B;AAAA,MACjC,IAAIC,0CAAkB;AAAA,MACtB,IAAIC,kCAAiB;AAAA,MACrB,IAAIC,4CAAmB;AAAA,MACvB,IAAIC,0CAAkB;AAAA,MACtB,IAAIC,wCAAiB;AAAA,MACrB,IAAIC,8DAA4B;AAAA,MAChC,IAAIC,gDAAqB;AAAA,MACzB,IAAIC,gEAA6B;AAAA,MACjC,IAAIC,gEAA6B;AAAA,MACjC,IAAIC,oDAAuB;AAAA,MAC3B,IAAIC,gEAA6B;AAAA,MACjC,IAAIC,0DAA0B;AAAA,MAC9B,IAAIC,4DAA2B;AAAA,MAC/B,IAAIC,0DAA0B;AAAA,MAC9B,IAAIC,4DAA2B;AAAA,MAC/B,IAAIC,8DAA4B;AAAA,MAChC,IAAIC,wCAAiB;AAAA,MACrB,IAAIC,kDAAyB,CAAM,OAAA,CAACC,YAAAA,WAAW,EAAE,KAAKC,YAAAA,iBAAiB,EAAE,CAAC;AAAA,MAC1E,IAAIF,yBAAAA,yBAAyB,CAAM,OAAAC,YAAAA,WAAW,EAAE,KAAKE,YAAAA,kBAAkB,EAAE,CAAC;AAAA,MAC1E,IAAIC,4CAAmB;AAAA,MACvB,IAAIC,4CAAmB;AAAA,MACvB,IAAIC,gDAAqB;AAAA,MACzB,IAAIC,wCAAiB;AAAA,MACrB,IAAIC,sEAAgC;AAAA,MACpC,IAAIC,gEAA6B;AAAA,MACjC,IAAIC,0CAAkB;AAAA,MACtB,IAAIC,wCAAiB;AAAA,MACrB,IAAIC,4BAAsB,sBAAA,KAAK,OAAO;AAAA,MACtC,IAAIC,mCAA6B,6BAAA,KAAK,OAAO;AAAA,MAC7C,IAAIC,0DAA0B;AAAA,MAC9B,IAAIC,4CAAmB;AAAA,MACvB,IAAIC,4CAAmB;AAAA,MACvB,IAAIC,
|
|
1
|
+
{"version":3,"file":"SchemaDiffer.cjs","sources":["../../../../packages/schema-migrations/src/SchemaDiffer.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { compareArraysIgnoreOrder, deepCompare, isInverseRelation, isOwningRelation, isRelation, SchemaValidator, ValidationError } from '@contember/schema-utils'\nimport { SchemaMigrator } from './SchemaMigrator'\nimport { Migration } from './Migration'\nimport { ImplementationException } from './exceptions'\nimport {\n\tConvertOneHasManyToManyHasManyRelationDiffer,\n\tConvertOneToManyRelationDiffer,\n\tCreateColumnDiffer,\n\tCreateEntityDiffer,\n\tCreateEnumDiffer,\n\tCreateRelationDiffer,\n\tCreateRelationInverseSideDiffer,\n\tCreateUniqueConstraintDiffer,\n\tCreateViewDiffer,\n\tDiffer,\n\tDisableOrphanRemovalDiffer,\n\tEnableOrphanRemovalDiffer,\n\tMakeRelationNotNullDiffer,\n\tMakeRelationNullableDiffer,\n\tRemoveEntityDiffer,\n\tRemoveEnumDiffer,\n\tRemoveFieldDiffer,\n\tRemoveUniqueConstraintDiffer,\n\tToggleEventLogDiffer,\n\tToggleJunctionEventLogDiffer,\n\tUpdateAclSchemaDiffer,\n\tUpdateColumnDefinitionDiffer,\n\tUpdateColumnNameDiffer,\n\tUpdateEntityOrderByDiffer,\n\tUpdateEntityTableNameDiffer,\n\tUpdateEnumDiffer,\n\tUpdateRelationOnDeleteDiffer,\n\tUpdateRelationOrderByDiffer,\n\tUpdateValidationSchemaDiffer,\n\tVERSION_LATEST,\n} from './modifications'\nimport { RemoveChangedFieldDiffer, RemoveViewDiffer } from './modifications/differs'\nimport { CreateIndexDiffer, RemoveIndexDiffer } from './modifications/indexes'\nimport { CreateTriggerDiffer, RemoveTriggerDiffer, UpdateTriggerDiffer } from './modifications/actions'\nimport { UpdateTargetDiffer } from './modifications/actions/UpdateTargetModification'\nimport { CreateTargetDiffer } from './modifications/actions/CreateTargetModification'\nimport { RemoveTargetDiffer } from './modifications/actions/RemoveTargetModification'\nimport { UpdateSettingsDiffer } from './modifications/settings'\nimport { RemoveIndexNamesDiffer } from './modifications/upgrade/RemoveIndexNamesModification'\nimport { ConvertOneHasManyToOneHasOneRelationDiffer } from './modifications/relations/ConvertOneHasManyToOneHasOneRelationModification'\n\ntype DiffOptions = { skipRecreateValidation?: boolean; skipInitialSchemaValidation?: boolean }\n\nexport class SchemaDiffer {\n\tconstructor(\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {}\n\n\tdiffSchemas(originalSchema: Schema, updatedSchema: Schema, {\n\t\tskipInitialSchemaValidation = false,\n\t\tskipRecreateValidation = false,\n\t}: DiffOptions = {}): Migration.Modification[] {\n\t\tif (!skipInitialSchemaValidation) {\n\t\t\tconst originalErrors = SchemaValidator.validate(originalSchema)\n\t\t\tif (originalErrors.length > 0) {\n\t\t\t\tthrow new InvalidSchemaException('original schema is not valid', originalErrors)\n\t\t\t}\n\t\t}\n\t\tconst updatedErrors = SchemaValidator.validate(updatedSchema)\n\t\tif (updatedErrors.length > 0) {\n\t\t\tthrow new InvalidSchemaException('updated schema is not valid', updatedErrors)\n\t\t}\n\n\t\tconst differs: Differ[] = [\n\t\t\tnew RemoveIndexNamesDiffer(),\n\t\t\tnew UpdateSettingsDiffer(),\n\t\t\tnew ConvertOneToManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToManyHasManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToOneHasOneRelationDiffer(),\n\t\t\tnew RemoveUniqueConstraintDiffer(),\n\t\t\tnew RemoveIndexDiffer(),\n\t\t\tnew RemoveViewDiffer(),\n\t\t\tnew RemoveEntityDiffer(),\n\t\t\tnew RemoveFieldDiffer(),\n\t\t\tnew CreateEnumDiffer(),\n\t\t\tnew UpdateEntityTableNameDiffer(),\n\t\t\tnew ToggleEventLogDiffer(),\n\t\t\tnew ToggleJunctionEventLogDiffer(),\n\t\t\tnew UpdateColumnDefinitionDiffer(),\n\t\t\tnew UpdateColumnNameDiffer(),\n\t\t\tnew UpdateRelationOnDeleteDiffer(),\n\t\t\tnew MakeRelationNotNullDiffer(),\n\t\t\tnew MakeRelationNullableDiffer(),\n\t\t\tnew EnableOrphanRemovalDiffer(),\n\t\t\tnew DisableOrphanRemovalDiffer(),\n\t\t\tnew UpdateRelationOrderByDiffer(),\n\t\t\tnew UpdateEnumDiffer(),\n\t\t\tnew RemoveChangedFieldDiffer(it => !isRelation(it) || isOwningRelation(it)),\n\t\t\tnew RemoveChangedFieldDiffer(it => isRelation(it) && isInverseRelation(it)),\n\t\t\tnew CreateEntityDiffer(),\n\t\t\tnew CreateColumnDiffer(),\n\t\t\tnew CreateRelationDiffer(),\n\t\t\tnew CreateViewDiffer(),\n\t\t\tnew CreateRelationInverseSideDiffer(),\n\t\t\tnew CreateUniqueConstraintDiffer(),\n\t\t\tnew CreateIndexDiffer(),\n\t\t\tnew RemoveEnumDiffer(),\n\t\t\tnew UpdateAclSchemaDiffer(this.options),\n\t\t\tnew UpdateValidationSchemaDiffer(this.options),\n\t\t\tnew UpdateEntityOrderByDiffer(),\n\t\t\tnew UpdateTargetDiffer(),\n\t\t\tnew CreateTargetDiffer(),\n\t\t\tnew UpdateTriggerDiffer(this.options),\n\t\t\tnew CreateTriggerDiffer(),\n\t\t\tnew RemoveTriggerDiffer(),\n\t\t\tnew RemoveTargetDiffer(),\n\t\t]\n\n\t\tconst diffs: Migration.Modification[] = []\n\t\tlet appliedDiffsSchema = originalSchema\n\t\tfor (const differ of differs) {\n\t\t\tconst differDiffs = differ.createDiff(appliedDiffsSchema, updatedSchema)\n\t\t\tappliedDiffsSchema = this.schemaMigrator.applyModifications(appliedDiffsSchema, differDiffs, VERSION_LATEST)\n\t\t\tdiffs.push(...differDiffs)\n\t\t}\n\n\t\tif (!skipRecreateValidation) {\n\t\t\tconst errors = deepCompare(updatedSchema, appliedDiffsSchema, [], path => {\n\t\t\t\tif (path[0] === 'model' && path[1] === 'entities' && (path[3] === 'unique' || path[3] === 'index')) {\n\t\t\t\t\treturn (a, b) => {\n\t\t\t\t\t\treturn compareArraysIgnoreOrder(a, b, path)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null\n\t\t\t})\n\t\t\tif (errors.length === 0) {\n\t\t\t\treturn diffs\n\t\t\t}\n\t\t\tlet message = 'Updated schema cannot be recreated by the generated diff:'\n\t\t\tfor (const err of errors) {\n\t\t\t\tmessage += '\\n\\t' + err.path.join('.') + ': ' + err.message\n\t\t\t}\n\t\t\tmessage += '\\n\\nPlease fill a bug report'\n\t\t\tthrow new ImplementationException(message)\n\t\t}\n\n\t\treturn diffs\n\t}\n}\n\nexport class InvalidSchemaException extends Error {\n\tconstructor(message: string, public readonly validationErrors: ValidationError[]) {\n\t\tsuper(message)\n\t}\n}\n"],"names":["SchemaValidator","RemoveIndexNamesDiffer","UpdateSettingsDiffer","ConvertOneToManyRelationDiffer","ConvertOneHasManyToManyHasManyRelationDiffer","ConvertOneHasManyToOneHasOneRelationDiffer","RemoveUniqueConstraintDiffer","RemoveIndexDiffer","RemoveViewDiffer","RemoveEntityDiffer","RemoveFieldDiffer","CreateEnumDiffer","UpdateEntityTableNameDiffer","ToggleEventLogDiffer","ToggleJunctionEventLogDiffer","UpdateColumnDefinitionDiffer","UpdateColumnNameDiffer","UpdateRelationOnDeleteDiffer","MakeRelationNotNullDiffer","MakeRelationNullableDiffer","EnableOrphanRemovalDiffer","DisableOrphanRemovalDiffer","UpdateRelationOrderByDiffer","UpdateEnumDiffer","RemoveChangedFieldDiffer","isRelation","isOwningRelation","isInverseRelation","CreateEntityDiffer","CreateColumnDiffer","CreateRelationDiffer","CreateViewDiffer","CreateRelationInverseSideDiffer","CreateUniqueConstraintDiffer","CreateIndexDiffer","RemoveEnumDiffer","UpdateAclSchemaDiffer","UpdateValidationSchemaDiffer","UpdateEntityOrderByDiffer","UpdateTargetDiffer","CreateTargetDiffer","UpdateTriggerDiffer","CreateTriggerDiffer","RemoveTriggerDiffer","RemoveTargetDiffer","VERSION_LATEST","deepCompare","compareArraysIgnoreOrder","ImplementationException"],"mappings":"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"}
|
|
@@ -103,7 +103,7 @@ class SchemaDiffer {
|
|
|
103
103
|
new UpdateEntityOrderByDiffer(),
|
|
104
104
|
new UpdateTargetDiffer(),
|
|
105
105
|
new CreateTargetDiffer(),
|
|
106
|
-
new UpdateTriggerDiffer(),
|
|
106
|
+
new UpdateTriggerDiffer(this.options),
|
|
107
107
|
new CreateTriggerDiffer(),
|
|
108
108
|
new RemoveTriggerDiffer(),
|
|
109
109
|
new RemoveTargetDiffer()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaDiffer.js","sources":["../../../../packages/schema-migrations/src/SchemaDiffer.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { compareArraysIgnoreOrder, deepCompare, isInverseRelation, isOwningRelation, isRelation, SchemaValidator, ValidationError } from '@contember/schema-utils'\nimport { SchemaMigrator } from './SchemaMigrator'\nimport { Migration } from './Migration'\nimport { ImplementationException } from './exceptions'\nimport {\n\tConvertOneHasManyToManyHasManyRelationDiffer,\n\tConvertOneToManyRelationDiffer,\n\tCreateColumnDiffer,\n\tCreateEntityDiffer,\n\tCreateEnumDiffer,\n\tCreateRelationDiffer,\n\tCreateRelationInverseSideDiffer,\n\tCreateUniqueConstraintDiffer,\n\tCreateViewDiffer,\n\tDiffer,\n\tDisableOrphanRemovalDiffer,\n\tEnableOrphanRemovalDiffer,\n\tMakeRelationNotNullDiffer,\n\tMakeRelationNullableDiffer,\n\tRemoveEntityDiffer,\n\tRemoveEnumDiffer,\n\tRemoveFieldDiffer,\n\tRemoveUniqueConstraintDiffer,\n\tToggleEventLogDiffer,\n\tToggleJunctionEventLogDiffer,\n\tUpdateAclSchemaDiffer,\n\tUpdateColumnDefinitionDiffer,\n\tUpdateColumnNameDiffer,\n\tUpdateEntityOrderByDiffer,\n\tUpdateEntityTableNameDiffer,\n\tUpdateEnumDiffer,\n\tUpdateRelationOnDeleteDiffer,\n\tUpdateRelationOrderByDiffer,\n\tUpdateValidationSchemaDiffer,\n\tVERSION_LATEST,\n} from './modifications'\nimport { RemoveChangedFieldDiffer, RemoveViewDiffer } from './modifications/differs'\nimport { CreateIndexDiffer, RemoveIndexDiffer } from './modifications/indexes'\nimport { CreateTriggerDiffer, RemoveTriggerDiffer, UpdateTriggerDiffer } from './modifications/actions'\nimport { UpdateTargetDiffer } from './modifications/actions/UpdateTargetModification'\nimport { CreateTargetDiffer } from './modifications/actions/CreateTargetModification'\nimport { RemoveTargetDiffer } from './modifications/actions/RemoveTargetModification'\nimport { UpdateSettingsDiffer } from './modifications/settings'\nimport { RemoveIndexNamesDiffer } from './modifications/upgrade/RemoveIndexNamesModification'\nimport { ConvertOneHasManyToOneHasOneRelationDiffer } from './modifications/relations/ConvertOneHasManyToOneHasOneRelationModification'\n\ntype DiffOptions = { skipRecreateValidation?: boolean; skipInitialSchemaValidation?: boolean }\n\nexport class SchemaDiffer {\n\tconstructor(\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {}\n\n\tdiffSchemas(originalSchema: Schema, updatedSchema: Schema, {\n\t\tskipInitialSchemaValidation = false,\n\t\tskipRecreateValidation = false,\n\t}: DiffOptions = {}): Migration.Modification[] {\n\t\tif (!skipInitialSchemaValidation) {\n\t\t\tconst originalErrors = SchemaValidator.validate(originalSchema)\n\t\t\tif (originalErrors.length > 0) {\n\t\t\t\tthrow new InvalidSchemaException('original schema is not valid', originalErrors)\n\t\t\t}\n\t\t}\n\t\tconst updatedErrors = SchemaValidator.validate(updatedSchema)\n\t\tif (updatedErrors.length > 0) {\n\t\t\tthrow new InvalidSchemaException('updated schema is not valid', updatedErrors)\n\t\t}\n\n\t\tconst differs: Differ[] = [\n\t\t\tnew RemoveIndexNamesDiffer(),\n\t\t\tnew UpdateSettingsDiffer(),\n\t\t\tnew ConvertOneToManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToManyHasManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToOneHasOneRelationDiffer(),\n\t\t\tnew RemoveUniqueConstraintDiffer(),\n\t\t\tnew RemoveIndexDiffer(),\n\t\t\tnew RemoveViewDiffer(),\n\t\t\tnew RemoveEntityDiffer(),\n\t\t\tnew RemoveFieldDiffer(),\n\t\t\tnew CreateEnumDiffer(),\n\t\t\tnew UpdateEntityTableNameDiffer(),\n\t\t\tnew ToggleEventLogDiffer(),\n\t\t\tnew ToggleJunctionEventLogDiffer(),\n\t\t\tnew UpdateColumnDefinitionDiffer(),\n\t\t\tnew UpdateColumnNameDiffer(),\n\t\t\tnew UpdateRelationOnDeleteDiffer(),\n\t\t\tnew MakeRelationNotNullDiffer(),\n\t\t\tnew MakeRelationNullableDiffer(),\n\t\t\tnew EnableOrphanRemovalDiffer(),\n\t\t\tnew DisableOrphanRemovalDiffer(),\n\t\t\tnew UpdateRelationOrderByDiffer(),\n\t\t\tnew UpdateEnumDiffer(),\n\t\t\tnew RemoveChangedFieldDiffer(it => !isRelation(it) || isOwningRelation(it)),\n\t\t\tnew RemoveChangedFieldDiffer(it => isRelation(it) && isInverseRelation(it)),\n\t\t\tnew CreateEntityDiffer(),\n\t\t\tnew CreateColumnDiffer(),\n\t\t\tnew CreateRelationDiffer(),\n\t\t\tnew CreateViewDiffer(),\n\t\t\tnew CreateRelationInverseSideDiffer(),\n\t\t\tnew CreateUniqueConstraintDiffer(),\n\t\t\tnew CreateIndexDiffer(),\n\t\t\tnew RemoveEnumDiffer(),\n\t\t\tnew UpdateAclSchemaDiffer(this.options),\n\t\t\tnew UpdateValidationSchemaDiffer(this.options),\n\t\t\tnew UpdateEntityOrderByDiffer(),\n\t\t\tnew UpdateTargetDiffer(),\n\t\t\tnew CreateTargetDiffer(),\n\t\t\tnew UpdateTriggerDiffer(),\n\t\t\tnew CreateTriggerDiffer(),\n\t\t\tnew RemoveTriggerDiffer(),\n\t\t\tnew RemoveTargetDiffer(),\n\t\t]\n\n\t\tconst diffs: Migration.Modification[] = []\n\t\tlet appliedDiffsSchema = originalSchema\n\t\tfor (const differ of differs) {\n\t\t\tconst differDiffs = differ.createDiff(appliedDiffsSchema, updatedSchema)\n\t\t\tappliedDiffsSchema = this.schemaMigrator.applyModifications(appliedDiffsSchema, differDiffs, VERSION_LATEST)\n\t\t\tdiffs.push(...differDiffs)\n\t\t}\n\n\t\tif (!skipRecreateValidation) {\n\t\t\tconst errors = deepCompare(updatedSchema, appliedDiffsSchema, [], path => {\n\t\t\t\tif (path[0] === 'model' && path[1] === 'entities' && (path[3] === 'unique' || path[3] === 'index')) {\n\t\t\t\t\treturn (a, b) => {\n\t\t\t\t\t\treturn compareArraysIgnoreOrder(a, b, path)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null\n\t\t\t})\n\t\t\tif (errors.length === 0) {\n\t\t\t\treturn diffs\n\t\t\t}\n\t\t\tlet message = 'Updated schema cannot be recreated by the generated diff:'\n\t\t\tfor (const err of errors) {\n\t\t\t\tmessage += '\\n\\t' + err.path.join('.') + ': ' + err.message\n\t\t\t}\n\t\t\tmessage += '\\n\\nPlease fill a bug report'\n\t\t\tthrow new ImplementationException(message)\n\t\t}\n\n\t\treturn diffs\n\t}\n}\n\nexport class InvalidSchemaException extends Error {\n\tconstructor(message: string, public readonly validationErrors: ValidationError[]) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDO,MAAM,aAAa;AAAA,EACzB,YACkB,gBACA,SAGhB;AAJgB,SAAA,iBAAA;AACA,SAAA,UAAA;AAAA,EAAA;AAAA,EAKlB,YAAY,gBAAwB,eAAuB;AAAA,IAC1D,8BAA8B;AAAA,IAC9B,yBAAyB;AAAA,EAC1B,IAAiB,IAA8B;AAC9C,QAAI,CAAC,6BAA6B;AAC3B,YAAA,iBAAiB,gBAAgB,SAAS,cAAc;AAC1D,UAAA,eAAe,SAAS,GAAG;AACxB,cAAA,IAAI,uBAAuB,gCAAgC,cAAc;AAAA,MAAA;AAAA,IAChF;AAEK,UAAA,gBAAgB,gBAAgB,SAAS,aAAa;AACxD,QAAA,cAAc,SAAS,GAAG;AACvB,YAAA,IAAI,uBAAuB,+BAA+B,aAAa;AAAA,IAAA;AAG9E,UAAM,UAAoB;AAAA,MACzB,IAAI,uBAAuB;AAAA,MAC3B,IAAI,qBAAqB;AAAA,MACzB,IAAI,+BAA+B;AAAA,MACnC,IAAI,6CAA6C;AAAA,MACjD,IAAI,2CAA2C;AAAA,MAC/C,IAAI,6BAA6B;AAAA,MACjC,IAAI,kBAAkB;AAAA,MACtB,IAAI,iBAAiB;AAAA,MACrB,IAAI,mBAAmB;AAAA,MACvB,IAAI,kBAAkB;AAAA,MACtB,IAAI,iBAAiB;AAAA,MACrB,IAAI,4BAA4B;AAAA,MAChC,IAAI,qBAAqB;AAAA,MACzB,IAAI,6BAA6B;AAAA,MACjC,IAAI,6BAA6B;AAAA,MACjC,IAAI,uBAAuB;AAAA,MAC3B,IAAI,6BAA6B;AAAA,MACjC,IAAI,0BAA0B;AAAA,MAC9B,IAAI,2BAA2B;AAAA,MAC/B,IAAI,0BAA0B;AAAA,MAC9B,IAAI,2BAA2B;AAAA,MAC/B,IAAI,4BAA4B;AAAA,MAChC,IAAI,iBAAiB;AAAA,MACrB,IAAI,yBAAyB,CAAM,OAAA,CAAC,WAAW,EAAE,KAAK,iBAAiB,EAAE,CAAC;AAAA,MAC1E,IAAI,yBAAyB,CAAM,OAAA,WAAW,EAAE,KAAK,kBAAkB,EAAE,CAAC;AAAA,MAC1E,IAAI,mBAAmB;AAAA,MACvB,IAAI,mBAAmB;AAAA,MACvB,IAAI,qBAAqB;AAAA,MACzB,IAAI,iBAAiB;AAAA,MACrB,IAAI,gCAAgC;AAAA,MACpC,IAAI,6BAA6B;AAAA,MACjC,IAAI,kBAAkB;AAAA,MACtB,IAAI,iBAAiB;AAAA,MACrB,IAAI,sBAAsB,KAAK,OAAO;AAAA,MACtC,IAAI,6BAA6B,KAAK,OAAO;AAAA,MAC7C,IAAI,0BAA0B;AAAA,MAC9B,IAAI,mBAAmB;AAAA,MACvB,IAAI,mBAAmB;AAAA,MACvB,IAAI,oBAAoB;AAAA,
|
|
1
|
+
{"version":3,"file":"SchemaDiffer.js","sources":["../../../../packages/schema-migrations/src/SchemaDiffer.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { compareArraysIgnoreOrder, deepCompare, isInverseRelation, isOwningRelation, isRelation, SchemaValidator, ValidationError } from '@contember/schema-utils'\nimport { SchemaMigrator } from './SchemaMigrator'\nimport { Migration } from './Migration'\nimport { ImplementationException } from './exceptions'\nimport {\n\tConvertOneHasManyToManyHasManyRelationDiffer,\n\tConvertOneToManyRelationDiffer,\n\tCreateColumnDiffer,\n\tCreateEntityDiffer,\n\tCreateEnumDiffer,\n\tCreateRelationDiffer,\n\tCreateRelationInverseSideDiffer,\n\tCreateUniqueConstraintDiffer,\n\tCreateViewDiffer,\n\tDiffer,\n\tDisableOrphanRemovalDiffer,\n\tEnableOrphanRemovalDiffer,\n\tMakeRelationNotNullDiffer,\n\tMakeRelationNullableDiffer,\n\tRemoveEntityDiffer,\n\tRemoveEnumDiffer,\n\tRemoveFieldDiffer,\n\tRemoveUniqueConstraintDiffer,\n\tToggleEventLogDiffer,\n\tToggleJunctionEventLogDiffer,\n\tUpdateAclSchemaDiffer,\n\tUpdateColumnDefinitionDiffer,\n\tUpdateColumnNameDiffer,\n\tUpdateEntityOrderByDiffer,\n\tUpdateEntityTableNameDiffer,\n\tUpdateEnumDiffer,\n\tUpdateRelationOnDeleteDiffer,\n\tUpdateRelationOrderByDiffer,\n\tUpdateValidationSchemaDiffer,\n\tVERSION_LATEST,\n} from './modifications'\nimport { RemoveChangedFieldDiffer, RemoveViewDiffer } from './modifications/differs'\nimport { CreateIndexDiffer, RemoveIndexDiffer } from './modifications/indexes'\nimport { CreateTriggerDiffer, RemoveTriggerDiffer, UpdateTriggerDiffer } from './modifications/actions'\nimport { UpdateTargetDiffer } from './modifications/actions/UpdateTargetModification'\nimport { CreateTargetDiffer } from './modifications/actions/CreateTargetModification'\nimport { RemoveTargetDiffer } from './modifications/actions/RemoveTargetModification'\nimport { UpdateSettingsDiffer } from './modifications/settings'\nimport { RemoveIndexNamesDiffer } from './modifications/upgrade/RemoveIndexNamesModification'\nimport { ConvertOneHasManyToOneHasOneRelationDiffer } from './modifications/relations/ConvertOneHasManyToOneHasOneRelationModification'\n\ntype DiffOptions = { skipRecreateValidation?: boolean; skipInitialSchemaValidation?: boolean }\n\nexport class SchemaDiffer {\n\tconstructor(\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {}\n\n\tdiffSchemas(originalSchema: Schema, updatedSchema: Schema, {\n\t\tskipInitialSchemaValidation = false,\n\t\tskipRecreateValidation = false,\n\t}: DiffOptions = {}): Migration.Modification[] {\n\t\tif (!skipInitialSchemaValidation) {\n\t\t\tconst originalErrors = SchemaValidator.validate(originalSchema)\n\t\t\tif (originalErrors.length > 0) {\n\t\t\t\tthrow new InvalidSchemaException('original schema is not valid', originalErrors)\n\t\t\t}\n\t\t}\n\t\tconst updatedErrors = SchemaValidator.validate(updatedSchema)\n\t\tif (updatedErrors.length > 0) {\n\t\t\tthrow new InvalidSchemaException('updated schema is not valid', updatedErrors)\n\t\t}\n\n\t\tconst differs: Differ[] = [\n\t\t\tnew RemoveIndexNamesDiffer(),\n\t\t\tnew UpdateSettingsDiffer(),\n\t\t\tnew ConvertOneToManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToManyHasManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToOneHasOneRelationDiffer(),\n\t\t\tnew RemoveUniqueConstraintDiffer(),\n\t\t\tnew RemoveIndexDiffer(),\n\t\t\tnew RemoveViewDiffer(),\n\t\t\tnew RemoveEntityDiffer(),\n\t\t\tnew RemoveFieldDiffer(),\n\t\t\tnew CreateEnumDiffer(),\n\t\t\tnew UpdateEntityTableNameDiffer(),\n\t\t\tnew ToggleEventLogDiffer(),\n\t\t\tnew ToggleJunctionEventLogDiffer(),\n\t\t\tnew UpdateColumnDefinitionDiffer(),\n\t\t\tnew UpdateColumnNameDiffer(),\n\t\t\tnew UpdateRelationOnDeleteDiffer(),\n\t\t\tnew MakeRelationNotNullDiffer(),\n\t\t\tnew MakeRelationNullableDiffer(),\n\t\t\tnew EnableOrphanRemovalDiffer(),\n\t\t\tnew DisableOrphanRemovalDiffer(),\n\t\t\tnew UpdateRelationOrderByDiffer(),\n\t\t\tnew UpdateEnumDiffer(),\n\t\t\tnew RemoveChangedFieldDiffer(it => !isRelation(it) || isOwningRelation(it)),\n\t\t\tnew RemoveChangedFieldDiffer(it => isRelation(it) && isInverseRelation(it)),\n\t\t\tnew CreateEntityDiffer(),\n\t\t\tnew CreateColumnDiffer(),\n\t\t\tnew CreateRelationDiffer(),\n\t\t\tnew CreateViewDiffer(),\n\t\t\tnew CreateRelationInverseSideDiffer(),\n\t\t\tnew CreateUniqueConstraintDiffer(),\n\t\t\tnew CreateIndexDiffer(),\n\t\t\tnew RemoveEnumDiffer(),\n\t\t\tnew UpdateAclSchemaDiffer(this.options),\n\t\t\tnew UpdateValidationSchemaDiffer(this.options),\n\t\t\tnew UpdateEntityOrderByDiffer(),\n\t\t\tnew UpdateTargetDiffer(),\n\t\t\tnew CreateTargetDiffer(),\n\t\t\tnew UpdateTriggerDiffer(this.options),\n\t\t\tnew CreateTriggerDiffer(),\n\t\t\tnew RemoveTriggerDiffer(),\n\t\t\tnew RemoveTargetDiffer(),\n\t\t]\n\n\t\tconst diffs: Migration.Modification[] = []\n\t\tlet appliedDiffsSchema = originalSchema\n\t\tfor (const differ of differs) {\n\t\t\tconst differDiffs = differ.createDiff(appliedDiffsSchema, updatedSchema)\n\t\t\tappliedDiffsSchema = this.schemaMigrator.applyModifications(appliedDiffsSchema, differDiffs, VERSION_LATEST)\n\t\t\tdiffs.push(...differDiffs)\n\t\t}\n\n\t\tif (!skipRecreateValidation) {\n\t\t\tconst errors = deepCompare(updatedSchema, appliedDiffsSchema, [], path => {\n\t\t\t\tif (path[0] === 'model' && path[1] === 'entities' && (path[3] === 'unique' || path[3] === 'index')) {\n\t\t\t\t\treturn (a, b) => {\n\t\t\t\t\t\treturn compareArraysIgnoreOrder(a, b, path)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null\n\t\t\t})\n\t\t\tif (errors.length === 0) {\n\t\t\t\treturn diffs\n\t\t\t}\n\t\t\tlet message = 'Updated schema cannot be recreated by the generated diff:'\n\t\t\tfor (const err of errors) {\n\t\t\t\tmessage += '\\n\\t' + err.path.join('.') + ': ' + err.message\n\t\t\t}\n\t\t\tmessage += '\\n\\nPlease fill a bug report'\n\t\t\tthrow new ImplementationException(message)\n\t\t}\n\n\t\treturn diffs\n\t}\n}\n\nexport class InvalidSchemaException extends Error {\n\tconstructor(message: string, public readonly validationErrors: ValidationError[]) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,7 @@ const UpdateSettingsModification = require("./settings/UpdateSettingsModificatio
|
|
|
40
40
|
const CreateTriggerModification = require("./actions/CreateTriggerModification.cjs");
|
|
41
41
|
const RemoveTriggerModification = require("./actions/RemoveTriggerModification.cjs");
|
|
42
42
|
const UpdateTriggerModification = require("./actions/UpdateTriggerModification.cjs");
|
|
43
|
+
const PatchTriggerModification = require("./actions/PatchTriggerModification.cjs");
|
|
43
44
|
const CreateTargetModification = require("./actions/CreateTargetModification.cjs");
|
|
44
45
|
const RemoveTargetModification = require("./actions/RemoveTargetModification.cjs");
|
|
45
46
|
const UpdateTargetModification = require("./actions/UpdateTargetModification.cjs");
|
|
@@ -98,6 +99,7 @@ class ModificationHandlerFactory {
|
|
|
98
99
|
UpdateEntityOrderByModification.updateEntityOrderByModification,
|
|
99
100
|
CreateTriggerModification.createTriggerModification,
|
|
100
101
|
UpdateTriggerModification.updateTriggerModification,
|
|
102
|
+
PatchTriggerModification.patchTriggerModification,
|
|
101
103
|
RemoveTriggerModification.removeTriggerModification,
|
|
102
104
|
CreateTargetModification.createTargetModification,
|
|
103
105
|
UpdateTargetModification.updateTargetModification,
|