mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-21 02:25:59 +00:00
engines moved to separate library
This commit is contained in:
56
lib/engines/mysql/index.js
Normal file
56
lib/engines/mysql/index.js
Normal file
@@ -0,0 +1,56 @@
|
||||
const MySqlAnalyser = require("./MySqlAnalyser");
|
||||
const MySqlDumper = require("./MySqlDumper");
|
||||
|
||||
/** @type {import('dbgate').SqlDialect} */
|
||||
const dialect = {
|
||||
rangeSelect: true,
|
||||
quoteIdentifier(s) {
|
||||
return "`" + s + "`";
|
||||
}
|
||||
};
|
||||
|
||||
/** @type {import('dbgate').EngineDriver} */
|
||||
const driver = {
|
||||
async connect({ mysql }, { server, port, user, password, database }) {
|
||||
const connection = mysql.createConnection({
|
||||
host: server,
|
||||
port,
|
||||
user,
|
||||
password,
|
||||
database
|
||||
});
|
||||
connection._database_name = database;
|
||||
return connection;
|
||||
},
|
||||
async query(connection, sql) {
|
||||
return new Promise((resolve, reject) => {
|
||||
connection.query(sql, function(error, results, fields) {
|
||||
if (error) reject(error);
|
||||
resolve({ rows: results, columns: fields });
|
||||
});
|
||||
});
|
||||
},
|
||||
async getVersion(connection) {
|
||||
const { rows } = await this.query(
|
||||
connection,
|
||||
"show variables like 'version'"
|
||||
);
|
||||
const version = rows[0].Value;
|
||||
return { version };
|
||||
},
|
||||
async analyseFull(pool) {
|
||||
const analyser = new MySqlAnalyser(pool, this);
|
||||
await analyser.runAnalysis();
|
||||
return analyser.result;
|
||||
},
|
||||
async listDatabases(connection) {
|
||||
const { rows } = await this.query(connection, "show databases");
|
||||
return rows.map(x => ({ name: x.Database }));
|
||||
},
|
||||
createDumper() {
|
||||
return new MySqlDumper(this);
|
||||
},
|
||||
dialect
|
||||
};
|
||||
|
||||
module.exports = driver;
|
||||
Reference in New Issue
Block a user