@galaxyproject/gx-it-proxy
Version:
A dynamic reverse proxy for Interactive Tools in Galaxy
85 lines (75 loc) • 1.79 kB
JavaScript
const args = require("commander");
const packageInfo = require("../package");
// Attempt to require "pg-native" as an optional dependency.
let postgresClient;
try {
postgresClient = require("pg-native");
} catch {
// pg-native not installed or cannot be loaded
postgresClient = null;
}
const sqlite3 = require("sqlite3");
args
.version(packageInfo.version)
.option("--sessions <file>", "Routes file to monitor")
.option("--verbose");
const createDbSqlite = function (sessions) {
const db = new sqlite3.Database(sessions, (err) => {
if (err) {
return console.error(err.message);
}
});
db.run(
`
CREATE TABLE gxitproxy
(key text,
key_type text,
token text,
host text,
port integer,
info text,
PRIMARY KEY (key, key_type)
);`,
(err) => {
if (err) {
return console.log(err.message);
}
},
);
db.close();
};
const createDbPostgres = function (sessions) {
if (!postgresClient) {
console.error(
"Error: pg-native is not installed. Cannot create PostgreSQL database.",
);
process.exit(1);
}
const db = new postgresClient();
db.connectSync(sessions);
db.querySync(`
CREATE TABLE IF NOT EXISTS gxitproxy (
key text,
key_type text,
token text,
host text,
port integer,
info text,
PRIMARY KEY (key, key_type)
);`);
};
const main = function (argv_) {
const argv = argv_ || process.argv;
args.parse(argv);
// If sessions is a PostgreSQL connection string and pg-native is missing, exit.
if (args.sessions.startsWith("postgresql://")) {
createDbPostgres(args.sessions);
} else {
createDbSqlite(args.sessions);
}
};
exports.main = main;
if (require.main === module) {
main();
}