diff --git a/packages/engines/postgres/PostgreAnalyser.js b/packages/engines/postgres/PostgreAnalyser.js index b55fb268a..c91d21544 100644 --- a/packages/engines/postgres/PostgreAnalyser.js +++ b/packages/engines/postgres/PostgreAnalyser.js @@ -51,6 +51,7 @@ class PostgreAnalyser extends DatabaseAnalayser { const pkColumns = await this.driver.query(this.pool, this.createQuery('primaryKeys', ['tables'])); const fkColumns = await this.driver.query(this.pool, this.createQuery('foreignKeys', ['tables'])); const views = await this.driver.query(this.pool, this.createQuery('views', ['views'])); + const routines = await this.driver.query(this.pool, this.createQuery('routines', ['procedures', 'functions'])); // console.log('PG fkColumns', fkColumns.rows); return this.mergeAnalyseResult({ @@ -68,6 +69,8 @@ class PostgreAnalyser extends DatabaseAnalayser { .filter((col) => col.pureName == view.pureName && col.schemaName == view.schemaName) .map(getColumnInfo), })), + procedures: routines.rows.filter((x) => x.objectType == 'PROCEDURE'), + functions: routines.rows.filter((x) => x.objectType == 'FUNCTION'), }); } } diff --git a/packages/engines/postgres/sql/index.js b/packages/engines/postgres/sql/index.js index a06334731..1d8404b79 100644 --- a/packages/engines/postgres/sql/index.js +++ b/packages/engines/postgres/sql/index.js @@ -3,6 +3,7 @@ const tableModifications = require('./tableModifications'); const primaryKeys = require('./primaryKeys'); const foreignKeys = require('./foreignKeys'); const views = require('./views'); +const routines = require('./routines'); module.exports = { columns, @@ -10,4 +11,5 @@ module.exports = { primaryKeys, foreignKeys, views, + routines, }; diff --git a/packages/engines/postgres/sql/routines.js b/packages/engines/postgres/sql/routines.js new file mode 100644 index 000000000..16e3bdd45 --- /dev/null +++ b/packages/engines/postgres/sql/routines.js @@ -0,0 +1,10 @@ +module.exports = ` +select + routine_name as "pureName", + routine_schema as "schemaName", + routine_definition as "createSql", + md5(routine_definition) as "hashCode", + routine_type as "objectType" +from + information_schema.routines where routine_schema != 'information_schema' and routine_schema != 'pg_catalog' and routine_type is not null +`;