mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-18 04:26:01 +00:00
97 lines
2.5 KiB
JavaScript
97 lines
2.5 KiB
JavaScript
const path = require('path');
|
|
const os = require('os');
|
|
const fs = require('fs');
|
|
|
|
const baseDir = path.join(os.homedir(), '.dbgate');
|
|
|
|
const dbgateApi = require('dbgate-api');
|
|
dbgateApi.initializeApiEnvironment();
|
|
const dbgatePluginMysql = require('dbgate-plugin-mysql');
|
|
dbgateApi.registerPlugins(dbgatePluginMysql);
|
|
|
|
async function copyFolder(source, target) {
|
|
if (!fs.existsSync(target)) {
|
|
fs.mkdirSync(target, { recursive: true });
|
|
}
|
|
for (const file of fs.readdirSync(source)) {
|
|
fs.copyFileSync(path.join(source, file), path.join(target, file));
|
|
}
|
|
}
|
|
|
|
async function initMySqlDatabase(dbname, inputFile) {
|
|
await dbgateApi.executeQuery({
|
|
connection: {
|
|
server: process.env.SERVER_mysql,
|
|
user: process.env.USER_mysql,
|
|
password: process.env.PASSWORD_mysql,
|
|
port: process.env.PORT_mysql,
|
|
engine: 'mysql@dbgate-plugin-mysql',
|
|
},
|
|
sql: `drop database if exists ${dbname}`,
|
|
});
|
|
|
|
await dbgateApi.executeQuery({
|
|
connection: {
|
|
server: process.env.SERVER_mysql,
|
|
user: process.env.USER_mysql,
|
|
password: process.env.PASSWORD_mysql,
|
|
port: process.env.PORT_mysql,
|
|
engine: 'mysql@dbgate-plugin-mysql',
|
|
},
|
|
sql: `create database ${dbname}`,
|
|
});
|
|
|
|
await dbgateApi.importDatabase({
|
|
connection: {
|
|
server: process.env.SERVER_mysql,
|
|
user: process.env.USER_mysql,
|
|
password: process.env.PASSWORD_mysql,
|
|
port: process.env.PORT_mysql,
|
|
database: dbname,
|
|
engine: 'mysql@dbgate-plugin-mysql',
|
|
},
|
|
inputFile,
|
|
});
|
|
}
|
|
|
|
async function run() {
|
|
const connection = {
|
|
server: process.env.SERVER_mysql,
|
|
user: process.env.USER_mysql,
|
|
password: process.env.PASSWORD_mysql,
|
|
port: process.env.PORT_mysql,
|
|
engine: 'mysql@dbgate-plugin-mysql',
|
|
};
|
|
|
|
try {
|
|
await dbgateApi.executeQuery({
|
|
connection,
|
|
sql: 'drop database if exists charts_sample',
|
|
});
|
|
} catch (err) {
|
|
console.error('Failed to drop database', err);
|
|
}
|
|
|
|
await dbgateApi.executeQuery({
|
|
connection,
|
|
sql: 'create database charts_sample',
|
|
});
|
|
|
|
await dbgateApi.importDbFromFolder({
|
|
connection: {
|
|
...connection,
|
|
database: 'charts_sample',
|
|
},
|
|
folder: path.resolve(path.join(__dirname, '../data/charts-sample')),
|
|
});
|
|
|
|
await copyFolder(
|
|
path.resolve(path.join(__dirname, '../data/files/sql')),
|
|
path.join(baseDir, 'files-e2etests', 'sql')
|
|
);
|
|
|
|
await initMySqlDatabase('MyChinook', path.resolve(path.join(__dirname, '../data/chinook-mysql.sql')));
|
|
}
|
|
|
|
dbgateApi.runScript(run);
|