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

View File

@@ -71,6 +71,15 @@ function getTriggerEventType(triggerType) {
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) {
return eventMap[triggerType]?.triggerTiming || null;
}
@@ -86,4 +95,5 @@ module.exports = {
getTriggerEventType,
getTriggerTiming,
getFormattedDefaultValue,
getTriggerCreateSql,
};

View File

@@ -2,7 +2,8 @@ module.exports = `
SELECT
TRIM(rtr.RDB$TRIGGER_NAME) as "pureName",
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
RDB$TRIGGERS rtr
JOIN RDB$RELATIONS rel ON rtr.RDB$RELATION_NAME = rel.RDB$RELATION_NAME