diff --git a/plugins/dbgate-plugin-sqlite/src/backend/Analyser.js b/plugins/dbgate-plugin-sqlite/src/backend/Analyser.js index 8e054fd56..4f6d8d5f9 100644 --- a/plugins/dbgate-plugin-sqlite/src/backend/Analyser.js +++ b/plugins/dbgate-plugin-sqlite/src/backend/Analyser.js @@ -1,19 +1,6 @@ const _ = require('lodash'); const { DatabaseAnalyser } = global.DBGATE_PACKAGES['dbgate-tools']; - -const indexcolsQuery = ` -SELECT - m.name as tableName, - il.name as constraintName, - il."unique" as isUnique, - ii.name as columnName, - il.origin - FROM sqlite_schema AS m, - pragma_index_list(m.name) AS il, - pragma_index_info(il.name) AS ii - WHERE m.type='table' AND il.origin <> 'pk' - ORDER BY ii.seqno, il.name - `; +const sql = require('./sql'); class Analyser extends DatabaseAnalyser { constructor(dbhan, driver, version) { @@ -26,8 +13,8 @@ class Analyser extends DatabaseAnalyser { } async _getFastSnapshot() { - const objects = await this.driver.query(this.dbhan, "select * from sqlite_master where type='table' or type='view'"); - const indexcols = await this.driver.query(this.dbhan, indexcolsQuery); + const objects = await this.driver.query(this.dbhan, sql.objects); + const indexcols = await this.driver.query(this.dbhan, sql.indexcols); return { tables: objects.rows @@ -53,10 +40,7 @@ class Analyser extends DatabaseAnalyser { } async _runAnalysis() { - const objects = await this.analyserQuery( - "select * from sqlite_master where (type='table' or type='view') and name =OBJECT_ID_CONDITION", - ['tables', 'views'] - ); + const objects = await this.analyserQuery(sql.objectsConditioned, ['tables', 'views']); const tables = objects.rows.filter((x) => x.type == 'table'); const views = objects.rows.filter((x) => x.type == 'view'); // console.log('TABLES', tables); @@ -79,7 +63,7 @@ class Analyser extends DatabaseAnalyser { createSql: x.sql, })); - const indexcols = await this.driver.query(this.dbhan, indexcolsQuery); + const indexcols = await this.driver.query(this.dbhan, sql.indexcols); for (const tableName of this.getRequestedObjectPureNames( 'tables', diff --git a/plugins/dbgate-plugin-sqlite/src/backend/sql/index.js b/plugins/dbgate-plugin-sqlite/src/backend/sql/index.js new file mode 100644 index 000000000..4e60d6acb --- /dev/null +++ b/plugins/dbgate-plugin-sqlite/src/backend/sql/index.js @@ -0,0 +1,8 @@ +const objects = require('./objects.js'); +const objectsConditioned = require('./objectsConditioned.js'); +const indexcols = require('./indexcols.js'); +module.exports = { + objects, + objectsConditioned, + indexcols, +}; diff --git a/plugins/dbgate-plugin-sqlite/src/backend/sql/indexcols.js b/plugins/dbgate-plugin-sqlite/src/backend/sql/indexcols.js new file mode 100644 index 000000000..ea3ad9a2c --- /dev/null +++ b/plugins/dbgate-plugin-sqlite/src/backend/sql/indexcols.js @@ -0,0 +1,14 @@ +module.exports = ` +SELECT + m.name as tableName, + il.name as constraintName, + il."unique" as isUnique, + ii.name as columnName, + il.origin + FROM sqlite_schema AS m, + pragma_index_list(m.name) AS il, + pragma_index_info(il.name) AS ii + WHERE m.type='table' AND il.origin <> 'pk' + ORDER BY ii.seqno, il.name + +`; diff --git a/plugins/dbgate-plugin-sqlite/src/backend/sql/objects.js b/plugins/dbgate-plugin-sqlite/src/backend/sql/objects.js new file mode 100644 index 000000000..ea4e60f16 --- /dev/null +++ b/plugins/dbgate-plugin-sqlite/src/backend/sql/objects.js @@ -0,0 +1,3 @@ +module.exports = ` +select * from sqlite_master where (type='table' or type='view') +`; diff --git a/plugins/dbgate-plugin-sqlite/src/backend/sql/objectsConditioned.js b/plugins/dbgate-plugin-sqlite/src/backend/sql/objectsConditioned.js new file mode 100644 index 000000000..5abc5a8a6 --- /dev/null +++ b/plugins/dbgate-plugin-sqlite/src/backend/sql/objectsConditioned.js @@ -0,0 +1,3 @@ +module.exports = ` +select * from sqlite_master where (type='table' or type='view') and name =OBJECT_ID_CONDITION +`;