feat: add oracle triggers to analyser

This commit is contained in:
Nybkox
2024-12-13 04:09:32 +01:00
parent c00cb3076c
commit 671eba22e0
3 changed files with 31 additions and 1 deletions

View File

@@ -71,6 +71,9 @@ class Analyser extends DatabaseAnalyser {
this.feedback({ analysingMessage: 'Loading indexes' }); this.feedback({ analysingMessage: 'Loading indexes' });
const indexes = await this.analyserQuery('indexes', ['tables'], { $owner: this.dbhan.database }); const indexes = await this.analyserQuery('indexes', ['tables'], { $owner: this.dbhan.database });
this.feedback({ analysingMessage: 'Loading unique names' }); this.feedback({ analysingMessage: 'Loading unique names' });
const triggers = await this.analyserQuery('triggers', undefined, { $owner: this.dbhan.database });
const uniqueNames = await this.analyserQuery('uniqueNames', ['tables'], { $owner: this.dbhan.database }); const uniqueNames = await this.analyserQuery('uniqueNames', ['tables'], { $owner: this.dbhan.database });
this.feedback({ analysingMessage: 'Finalizing DB structure' }); this.feedback({ analysingMessage: 'Finalizing DB structure' });
@@ -183,6 +186,13 @@ class Analyser extends DatabaseAnalyser {
// schemaName: func.schema_name, // schemaName: func.schema_name,
contentHash: func.hash_code, contentHash: func.hash_code,
})), })),
triggers: triggers.rows.map(row => ({
trigerName: row.TRIGGER_NAME,
definition: row.DEFINITION,
tableName: row.TABLE_NAME,
triggerLevel: row.TRIGGER_LEVEL,
eventType: row.EVENT_TYPE,
})),
}; };
this.feedback({ analysingMessage: null }); this.feedback({ analysingMessage: null });

View File

@@ -6,6 +6,7 @@ const views = require('./views');
const matviews = require('./matviews'); const matviews = require('./matviews');
const routines = require('./routines'); const routines = require('./routines');
const indexes = require('./indexes'); // use mysql const indexes = require('./indexes'); // use mysql
const triggers = require('./triggers');
//const indexcols = require('./indexcols'); //const indexcols = require('./indexcols');
const uniqueNames = require('./uniqueNames'); const uniqueNames = require('./uniqueNames');
//const geometryColumns = require('./geometryColumns'); //const geometryColumns = require('./geometryColumns');
@@ -24,6 +25,7 @@ module.exports = {
routines, routines,
matviews, matviews,
indexes, indexes,
triggers,
// indexcols, // indexcols,
uniqueNames, uniqueNames,
//geometryColumns, //geometryColumns,

View File

@@ -0,0 +1,18 @@
module.exports = `
SELECT
TRIGGER_TYPE AS event_type,
TRIGGER_BODY AS definition,
TRIGGER_NAME AS trigger_name,
TABLE_NAME AS table_name,
OWNER,
CASE
WHEN INSTR(TRIGGER_TYPE, 'ROW') > 0 THEN 'ROW'
WHEN INSTR(TRIGGER_TYPE, 'STATEMENT') > 0 THEN 'STATEMENT'
ELSE NULL
END AS trigger_level
FROM
all_triggers
WHERE
OWNER='$owner'
AND 'tables:' || TABLE_NAME =OBJECT_ID_CONDITION
`;