Files
dbgate/e2e-tests/init/multi-sql.js
SPRINX0\prochazka 35855297eb SYNC: fix
2025-03-06 07:59:33 +00:00

131 lines
3.4 KiB
JavaScript

const path = require('path');
const localconfig = require('../.localconfig');
const dbgateApi = require('dbgate-api');
dbgateApi.initializeApiEnvironment();
const dbgatePluginMysql = require('dbgate-plugin-mysql');
dbgateApi.registerPlugins(dbgatePluginMysql);
const dbgatePluginPostgres = require('dbgate-plugin-postgres');
dbgateApi.registerPlugins(dbgatePluginPostgres);
async function createDb(connection, dropDbSql, createDbSql, database = 'my_guitar_shop', { dropDatabaseName } = {}) {
if (dropDbSql) {
try {
await dbgateApi.executeQuery({
connection,
sql: dropDbSql,
database: dropDatabaseName,
});
} catch (err) {
console.error('Failed to drop database', err);
}
}
if (createDbSql) {
await dbgateApi.executeQuery({
connection,
sql: createDbSql,
});
}
await dbgateApi.importDbFromFolder({
connection: {
...connection,
database,
},
folder: path.resolve(path.join(__dirname, '../data/my-guitar-shop')),
});
}
async function run() {
if (localconfig.postgres) {
await createDb(
{
server: process.env.SERVER_postgres,
user: process.env.USER_postgres,
password: process.env.PASSWORD_postgres,
port: process.env.PORT_postgres,
engine: 'postgres@dbgate-plugin-postgres',
},
'drop database if exists my_guitar_shop',
'create database my_guitar_shop'
);
}
if (localconfig.mysql) {
await createDb(
{
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',
},
'drop database if exists my_guitar_shop',
'create database my_guitar_shop'
);
}
if (localconfig.mssql) {
await createDb(
{
server: process.env.SERVER_mssql,
user: process.env.USER_mssql,
password: process.env.PASSWORD_mssql,
port: process.env.PORT_mssql,
engine: 'mssql@dbgate-plugin-mssql',
},
'drop database if exists my_guitar_shop',
'create database my_guitar_shop'
);
}
if (localconfig.oracle) {
await createDb(
{
server: process.env.SERVER_oracle,
user: process.env.USER_oracle,
password: process.env.PASSWORD_oracle,
port: process.env.PORT_oracle,
engine: 'oracle@dbgate-plugin-oracle',
},
'DROP USER c##my_guitar_shop CASCADE',
'CREATE USER c##my_guitar_shop IDENTIFIED BY my_guitar_shop DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users',
'C##my_guitar_shop'
);
}
if (localconfig.sqlite) {
await createDb(
{
databaseFile: process.env.FILE_sqlite.replace(
'%%E2E_TEST_DATA_DIRECTORY%%',
path.join(path.dirname(__dirname), 'tmpdata')
),
singleDatabase: true,
engine: 'sqlite@dbgate-plugin-sqlite',
},
null,
null
);
}
if (localconfig.mongo) {
await createDb(
{
server: process.env.SERVER_mongo,
user: process.env.USER_mongo,
password: process.env.PASSWORD_mongo,
port: process.env.PORT_mongo,
engine: 'mongo@dbgate-plugin-mongo',
},
'db.dropDatabase()',
null,
'my_guitar_shop',
{ dropDatabaseName: 'my_guitar_shop' }
);
}
}
dbgateApi.runScript(run);