@mikro-orm/sql
Advanced tools
@@ -539,4 +539,6 @@ import { Utils } from '@mikro-orm/core'; | ||
| } | ||
| for (const trigger of Object.values(diff.removedTriggers)) { | ||
| this.append(ret, this.dropTrigger(diff.toTable, trigger)); | ||
| if (!safe) { | ||
| for (const trigger of Object.values(diff.removedTriggers)) { | ||
| this.append(ret, this.dropTrigger(diff.toTable, trigger)); | ||
| } | ||
| } | ||
@@ -543,0 +545,0 @@ for (const trigger of Object.values(diff.changedTriggers)) { |
+2
-2
| { | ||
| "name": "@mikro-orm/sql", | ||
| "version": "7.1.3-dev.0", | ||
| "version": "7.1.3-dev.1", | ||
| "description": "TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, PostgreSQL and SQLite databases as well as usage with vanilla JavaScript.", | ||
@@ -56,3 +56,3 @@ "keywords": [ | ||
| "peerDependencies": { | ||
| "@mikro-orm/core": "7.1.3-dev.0" | ||
| "@mikro-orm/core": "7.1.3-dev.1" | ||
| }, | ||
@@ -59,0 +59,0 @@ "engines": { |
@@ -173,2 +173,4 @@ import { ArrayType, BooleanType, DateTimeType, DecimalType, inspect, JsonType, parseJsonSafe, Utils, } from '@mikro-orm/core'; | ||
| compareRoutines(fromSchema, toSchema, diff) { | ||
| // `ignoreRoutines` makes routines create-only: new ones are still added, but existing routines are never diffed for drop/alter. | ||
| const ignoreRoutines = this.#platform.getConfig().get('schemaGenerator').ignoreRoutines; | ||
| // Case-fold so user-written `'sql_hash'` matches Oracle's introspected `'SQL_HASH'`. | ||
@@ -185,3 +187,3 @@ const routineKey = (r) => ((r.schema ? `${r.schema}.` : '') + r.name).toLowerCase(); | ||
| } | ||
| if (this.diffRoutine(fromRoutine, toRoutine)) { | ||
| if (!ignoreRoutines && this.diffRoutine(fromRoutine, toRoutine)) { | ||
| diff.changedRoutines[key] = { from: fromRoutine, to: toRoutine }; | ||
@@ -191,6 +193,8 @@ this.log(`routine ${key} changed`, { fromRoutine, toRoutine }); | ||
| } | ||
| for (const [key, fromRoutine] of fromByKey) { | ||
| if (!toByKey.has(key)) { | ||
| diff.removedRoutines[key] = fromRoutine; | ||
| this.log(`routine ${key} removed`); | ||
| if (!ignoreRoutines) { | ||
| for (const [key, fromRoutine] of fromByKey) { | ||
| if (!toByKey.has(key)) { | ||
| diff.removedRoutines[key] = fromRoutine; | ||
| this.log(`routine ${key} removed`); | ||
| } | ||
| } | ||
@@ -499,18 +503,21 @@ } | ||
| } | ||
| for (const trigger of fromTableTriggers) { | ||
| if (!toTable.hasTrigger(trigger.name)) { | ||
| tableDifferences.removedTriggers[trigger.name] = trigger; | ||
| this.log(`trigger ${trigger.name} removed from table ${tableDifferences.name}`); | ||
| changes++; | ||
| continue; | ||
| // `ignoreTriggers` makes triggers create-only: declared ones are still added above, but existing triggers are never diffed for drop/alter. | ||
| if (!this.#platform.getConfig().get('schemaGenerator').ignoreTriggers) { | ||
| for (const trigger of fromTableTriggers) { | ||
| if (!toTable.hasTrigger(trigger.name)) { | ||
| tableDifferences.removedTriggers[trigger.name] = trigger; | ||
| this.log(`trigger ${trigger.name} removed from table ${tableDifferences.name}`); | ||
| changes++; | ||
| continue; | ||
| } | ||
| const toTableTrigger = toTable.getTrigger(trigger.name); | ||
| if (this.diffTrigger(trigger, toTableTrigger)) { | ||
| this.log(`trigger ${trigger.name} changed in table ${tableDifferences.name}`, { | ||
| fromTableTrigger: trigger, | ||
| toTableTrigger, | ||
| }); | ||
| tableDifferences.changedTriggers[trigger.name] = toTableTrigger; | ||
| changes++; | ||
| } | ||
| } | ||
| const toTableTrigger = toTable.getTrigger(trigger.name); | ||
| if (this.diffTrigger(trigger, toTableTrigger)) { | ||
| this.log(`trigger ${trigger.name} changed in table ${tableDifferences.name}`, { | ||
| fromTableTrigger: trigger, | ||
| toTableTrigger, | ||
| }); | ||
| tableDifferences.changedTriggers[trigger.name] = toTableTrigger; | ||
| changes++; | ||
| } | ||
| } | ||
@@ -517,0 +524,0 @@ const fromForeignKeys = { ...fromTable.getForeignKeys() }; |
@@ -389,4 +389,6 @@ import { isRaw, Utils, } from '@mikro-orm/core'; | ||
| } | ||
| for (const trigger of Object.values(diff.removedTriggers)) { | ||
| ret.push(this.dropTrigger(diff.toTable, trigger)); | ||
| if (!safe) { | ||
| for (const trigger of Object.values(diff.removedTriggers)) { | ||
| ret.push(this.dropTrigger(diff.toTable, trigger)); | ||
| } | ||
| } | ||
@@ -393,0 +395,0 @@ for (const trigger of Object.values(diff.changedTriggers)) { |
1037432
0.07%21778
0.05%