diff --git a/plugins/dbgate-plugin-firebird/src/backend/Analyser.js b/plugins/dbgate-plugin-firebird/src/backend/Analyser.js index 725d84a02..9867412bf 100644 --- a/plugins/dbgate-plugin-firebird/src/backend/Analyser.js +++ b/plugins/dbgate-plugin-firebird/src/backend/Analyser.js @@ -25,6 +25,7 @@ class Analyser extends DatabaseAnalyser { const functionParametersResults = await this.analyserQuery(sql.functionParameters, ['functions']); const proceduresResults = await this.analyserQuery(sql.procedures, ['procedures']); const procedureParametersResults = await this.analyserQuery(sql.procedureParameters, ['procedures']); + const viewsResults = await this.analyserQuery(sql.views, ['views']); const columns = columnsResult.rows?.map(column => ({ ...column, @@ -87,7 +88,15 @@ class Analyser extends DatabaseAnalyser { foreignKeys: DatabaseAnalyser.extractForeignKeys(table, foreignKeys), })) ?? []; + const views = + viewsResults.rows?.map(view => ({ + ...view, + objectId: `views:${view.pureName}`, + columns: columns.filter(column => column.tableName === view.pureName), + })) ?? []; + return { + views, tables, triggers, functions, diff --git a/plugins/dbgate-plugin-firebird/src/backend/sql/index.js b/plugins/dbgate-plugin-firebird/src/backend/sql/index.js index a253c99a2..11dc78825 100644 --- a/plugins/dbgate-plugin-firebird/src/backend/sql/index.js +++ b/plugins/dbgate-plugin-firebird/src/backend/sql/index.js @@ -8,10 +8,12 @@ const functions = require('./functions'); const functionParameters = require('./functionParameters'); const procedures = require('./procedures'); const procedureParameters = require('./procedureParameters'); +const views = require('./views'); module.exports = { version, columns, + views, tables, triggers, primaryKeys, diff --git a/plugins/dbgate-plugin-firebird/src/backend/sql/tables.js b/plugins/dbgate-plugin-firebird/src/backend/sql/tables.js index 5c8147725..b62c60fb5 100644 --- a/plugins/dbgate-plugin-firebird/src/backend/sql/tables.js +++ b/plugins/dbgate-plugin-firebird/src/backend/sql/tables.js @@ -6,6 +6,8 @@ FROM RDB$RELATIONS WHERE RDB$SYSTEM_FLAG = 0 -- only user-defined tables +AND + RDB$RELATION_TYPE = 0 -- only tables (not views, etc.) AND ('tables:' || TRIM(RDB$RELATION_NAME)) =OBJECT_ID_CONDITION ORDER BY diff --git a/plugins/dbgate-plugin-firebird/src/backend/sql/views.js b/plugins/dbgate-plugin-firebird/src/backend/sql/views.js new file mode 100644 index 000000000..d3a4e0cc4 --- /dev/null +++ b/plugins/dbgate-plugin-firebird/src/backend/sql/views.js @@ -0,0 +1,14 @@ +module.exports = `SELECT + TRIM(RDB$RELATION_NAME) AS "pureName", + RDB$DESCRIPTION AS "objectComment", + RDB$FORMAT AS "objectTypeField" +FROM + RDB$RELATIONS +WHERE + RDB$SYSTEM_FLAG = 0 -- only user-defined tables +AND + RDB$RELATION_TYPE = 1 -- only views (not tables, etc.) +AND + ('tables:' || TRIM(RDB$RELATION_NAME)) =OBJECT_ID_CONDITION +ORDER BY + "pureName";`;