@mikro-orm/sql 7.1.9-dev.11 → 7.1.9-dev.12
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.
|
@@ -322,7 +322,7 @@ export class MySqlSchemaHelper extends SchemaHelper {
|
|
|
322
322
|
const ret = [];
|
|
323
323
|
for (const event of trigger.events) {
|
|
324
324
|
const name = trigger.events.length > 1 ? `${trigger.name}_${event}` : trigger.name;
|
|
325
|
-
ret.push(`create trigger ${this.quote(name)} ${timing} ${event.toUpperCase()} on ${table.getQuotedName()} for each ROW begin ${trigger.body}
|
|
325
|
+
ret.push(`create trigger ${this.quote(name)} ${timing} ${event.toUpperCase()} on ${table.getQuotedName()} for each ROW begin ${this.normalizeTriggerBody(trigger.body)} end`);
|
|
326
326
|
}
|
|
327
327
|
return ret.join(';\n');
|
|
328
328
|
}
|
|
@@ -513,7 +513,7 @@ export class PostgreSqlSchemaHelper extends SchemaHelper {
|
|
|
513
513
|
const when = trigger.when ? `\n when (${trigger.when})` : '';
|
|
514
514
|
const fnName = this.getSchemaQualifiedTriggerFnName(table, trigger);
|
|
515
515
|
const triggerName = this.platform.quoteIdentifier(trigger.name);
|
|
516
|
-
const fnSql = `create or replace function ${fnName}() returns trigger as $$ begin ${trigger.body}
|
|
516
|
+
const fnSql = `create or replace function ${fnName}() returns trigger as $$ begin ${this.normalizeTriggerBody(trigger.body)} end; $$ language plpgsql`;
|
|
517
517
|
const triggerSql = `create trigger ${triggerName} ${timing} ${events} on ${table.getQuotedName()} for each ${forEach}${when} execute function ${fnName}()`;
|
|
518
518
|
return `${fnSql};\n${triggerSql}`;
|
|
519
519
|
}
|
|
@@ -561,7 +561,7 @@ export class SqliteSchemaHelper extends SchemaHelper {
|
|
|
561
561
|
for (const event of trigger.events) {
|
|
562
562
|
const name = trigger.events.length > 1 ? `${trigger.name}_${event}` : trigger.name;
|
|
563
563
|
const when = trigger.when ? `\n when ${trigger.when}` : '';
|
|
564
|
-
ret.push(`create trigger ${this.quote(name)} ${timing} ${event.toUpperCase()} on ${table.getQuotedName()} for each ${forEach}${when} begin ${trigger.body}
|
|
564
|
+
ret.push(`create trigger ${this.quote(name)} ${timing} ${event.toUpperCase()} on ${table.getQuotedName()} for each ${forEach}${when} begin ${this.normalizeTriggerBody(trigger.body)} end`);
|
|
565
565
|
}
|
|
566
566
|
return ret.join(';\n');
|
|
567
567
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mikro-orm/sql",
|
|
3
|
-
"version": "7.1.9-dev.
|
|
3
|
+
"version": "7.1.9-dev.12",
|
|
4
4
|
"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.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"data-mapper",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"@mikro-orm/core": "^7.1.8"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
|
-
"@mikro-orm/core": "7.1.9-dev.
|
|
56
|
+
"@mikro-orm/core": "7.1.9-dev.12"
|
|
57
57
|
},
|
|
58
58
|
"engines": {
|
|
59
59
|
"node": ">= 22.17.0"
|
package/schema/SchemaHelper.d.ts
CHANGED
|
@@ -176,6 +176,8 @@ export declare abstract class SchemaHelper {
|
|
|
176
176
|
createRoutine(_routine: SqlRoutineDef): string;
|
|
177
177
|
dropRoutine(_routine: SqlRoutineDef): string;
|
|
178
178
|
getAllRoutines(_connection: AbstractSqlConnection, _schemas?: string[]): Promise<SqlRoutineDef[]>;
|
|
179
|
+
/** Flattens internal `;\n` so the statement splitter doesn't tear the DDL, and ensures exactly one trailing `;` for the enclosing `begin ... end` block. */
|
|
180
|
+
protected normalizeTriggerBody(body: string): string;
|
|
179
181
|
/** Wraps the body in `BEGIN ... END` if not already, and flattens internal `;\n` so the schema-generator's statement splitter doesn't tear the DDL. */
|
|
180
182
|
protected wrapRoutineBody(body: string): string;
|
|
181
183
|
protected stripRoutineBody(body: string): string;
|
package/schema/SchemaHelper.js
CHANGED
|
@@ -861,7 +861,7 @@ export class SchemaHelper {
|
|
|
861
861
|
const events = trigger.events.map(e => e.toUpperCase()).join(' OR ');
|
|
862
862
|
const forEach = trigger.forEach === 'statement' ? 'STATEMENT' : 'ROW';
|
|
863
863
|
const when = trigger.when ? ` when (${trigger.when})` : '';
|
|
864
|
-
return `create trigger ${this.quote(trigger.name)} ${timing} ${events} on ${table.getQuotedName()} for each ${forEach}${when} begin ${trigger.body}
|
|
864
|
+
return `create trigger ${this.quote(trigger.name)} ${timing} ${events} on ${table.getQuotedName()} for each ${forEach}${when} begin ${this.normalizeTriggerBody(trigger.body)} end`;
|
|
865
865
|
}
|
|
866
866
|
/**
|
|
867
867
|
* Generates SQL to drop a database trigger from a table.
|
|
@@ -885,6 +885,11 @@ export class SchemaHelper {
|
|
|
885
885
|
async getAllRoutines(_connection, _schemas = []) {
|
|
886
886
|
return [];
|
|
887
887
|
}
|
|
888
|
+
/** Flattens internal `;\n` so the statement splitter doesn't tear the DDL, and ensures exactly one trailing `;` for the enclosing `begin ... end` block. */
|
|
889
|
+
normalizeTriggerBody(body) {
|
|
890
|
+
const trimmed = stripStatementNewlines(body).trim();
|
|
891
|
+
return /;\s*$/.test(trimmed) ? trimmed : `${trimmed};`;
|
|
892
|
+
}
|
|
888
893
|
/** Wraps the body in `BEGIN ... END` if not already, and flattens internal `;\n` so the schema-generator's statement splitter doesn't tear the DDL. */
|
|
889
894
|
wrapRoutineBody(body) {
|
|
890
895
|
const trimmed = stripStatementNewlines(body).trim();
|