fix: add createSql to firebird triggers

This commit is contained in:
Pavel
2025-05-23 00:59:34 +02:00
parent f94901c3b2
commit c767dfb22e
3 changed files with 20 additions and 2 deletions

View File

@@ -1,6 +1,12 @@
const _ = require('lodash'); const _ = require('lodash');
const sql = require('./sql'); const sql = require('./sql');
const { getDataTypeString, getTriggerTiming, getTriggerEventType, getFormattedDefaultValue } = require('./helpers'); const {
getDataTypeString,
getTriggerTiming,
getTriggerEventType,
getFormattedDefaultValue,
getTriggerCreateSql,
} = require('./helpers');
const { DatabaseAnalyser } = require('dbgate-tools'); const { DatabaseAnalyser } = require('dbgate-tools');
@@ -30,6 +36,7 @@ class Analyser extends DatabaseAnalyser {
...i, ...i,
eventType: getTriggerEventType(i.TRIGGERTYPE), eventType: getTriggerEventType(i.TRIGGERTYPE),
triggerTiming: getTriggerTiming(i.TRIGGERTYPE), triggerTiming: getTriggerTiming(i.TRIGGERTYPE),
createSql: getTriggerCreateSql(i),
})); }));
const primaryKeys = primaryKeysResult.rows ?? []; const primaryKeys = primaryKeysResult.rows ?? [];

View File

@@ -71,6 +71,15 @@ function getTriggerEventType(triggerType) {
return eventMap[triggerType]?.eventType || null; return eventMap[triggerType]?.eventType || null;
} }
function getTriggerCreateSql(triggerResult) {
const eventType = getTriggerEventType(triggerResult.TRIGGERTYPE);
const triggerTiming = getTriggerTiming(triggerResult.TRIGGERTYPE);
const body = triggerResult.TRIGGER_BODY_SQL;
const createSql = `CREATE OR ALTER TRIGGER "${triggerResult.pureName}" ${triggerTiming} ${eventType} ON "${triggerResult.tableName}" ${body};`;
return createSql;
}
function getTriggerTiming(triggerType) { function getTriggerTiming(triggerType) {
return eventMap[triggerType]?.triggerTiming || null; return eventMap[triggerType]?.triggerTiming || null;
} }
@@ -86,4 +95,5 @@ module.exports = {
getTriggerEventType, getTriggerEventType,
getTriggerTiming, getTriggerTiming,
getFormattedDefaultValue, getFormattedDefaultValue,
getTriggerCreateSql,
}; };

View File

@@ -2,7 +2,8 @@ module.exports = `
SELECT SELECT
TRIM(rtr.RDB$TRIGGER_NAME) as "pureName", TRIM(rtr.RDB$TRIGGER_NAME) as "pureName",
TRIM(rtr.RDB$RELATION_NAME) as "tableName", TRIM(rtr.RDB$RELATION_NAME) as "tableName",
rtr.RDB$TRIGGER_TYPE as TRIGGERTYPE rtr.RDB$TRIGGER_TYPE as TRIGGERTYPE,
CAST(rtr.RDB$TRIGGER_SOURCE AS VARCHAR(8191)) AS TRIGGER_BODY_SQL
FROM FROM
RDB$TRIGGERS rtr RDB$TRIGGERS rtr
JOIN RDB$RELATIONS rel ON rtr.RDB$RELATION_NAME = rel.RDB$RELATION_NAME JOIN RDB$RELATIONS rel ON rtr.RDB$RELATION_NAME = rel.RDB$RELATION_NAME