diff --git a/plugins/dbgate-plugin-sqlite/src/backend/Analyser.js b/plugins/dbgate-plugin-sqlite/src/backend/Analyser.js index 4f6d8d5f9..4dde1fb4a 100644 --- a/plugins/dbgate-plugin-sqlite/src/backend/Analyser.js +++ b/plugins/dbgate-plugin-sqlite/src/backend/Analyser.js @@ -149,9 +149,12 @@ class Analyser extends DatabaseAnalyser { })); } + const triggers = await this.driver.query(this.dbhan, sql.triggers); + return { tables: tableList, views: viewList, + triggers: triggers.rows, }; } } diff --git a/plugins/dbgate-plugin-sqlite/src/backend/sql/index.js b/plugins/dbgate-plugin-sqlite/src/backend/sql/index.js index 4e60d6acb..a5be329a6 100644 --- a/plugins/dbgate-plugin-sqlite/src/backend/sql/index.js +++ b/plugins/dbgate-plugin-sqlite/src/backend/sql/index.js @@ -1,8 +1,11 @@ const objects = require('./objects.js'); const objectsConditioned = require('./objectsConditioned.js'); const indexcols = require('./indexcols.js'); +const triggers = require('./triggers.js'); + module.exports = { objects, objectsConditioned, indexcols, + triggers, }; diff --git a/plugins/dbgate-plugin-sqlite/src/backend/sql/triggers.js b/plugins/dbgate-plugin-sqlite/src/backend/sql/triggers.js new file mode 100644 index 000000000..f79a68523 --- /dev/null +++ b/plugins/dbgate-plugin-sqlite/src/backend/sql/triggers.js @@ -0,0 +1,23 @@ +module.exports = ` +SELECT + rowid AS objectId, + name AS pureName, + CASE + WHEN sql LIKE '% AFTER %' THEN 'AFTER' + WHEN sql LIKE '% BEFORE %' THEN 'BEFORE' + WHEN sql LIKE '% INSTEAD OF %' THEN 'INSTEAD OF' + ELSE 'UNKNOWN' + END AS triggerTiming, + CASE + WHEN sql LIKE '% INSERT %' THEN 'INSERT' + WHEN sql LIKE '% UPDATE %' THEN 'UPDATE' + WHEN sql LIKE '% DELETE %' THEN 'DELETE' + ELSE NULL + END AS eventType, + tbl_name AS tableName, + sql AS createSql +FROM + sqlite_master +WHERE + type = 'trigger'; +`;