censql
Version:
A NodeJS command line client for SAP HANA
81 lines (63 loc) • 1.95 kB
JavaScript
var hdb = require('hdb');
var async = require("async");
var HdbHandler = function(callback) {
this.connections = {};
}
HdbHandler.prototype.connect = function(hostname, username, password, port, sessionID, callback) {
// Create client
var client = hdb.createClient({
host: hostname,
user: username,
password: password,
port: port
});
// Connect to Database
client.connect(function(err) {
// If there is an error, complain
if (err) {
callback(err, null);
return;
}
this.connections[sessionID] = client;
callback(null, null);
}.bind(this));
}
HdbHandler.prototype.close = function(sessionID) {
if (this.connections[sessionID]) {
return this.connections[sessionID].end();
}
}
HdbHandler.prototype.cloneConnection = function(sessionID, newSessionID, callback) {
var config = this.getClientConfig(sessionID);
this.connect(config.host, config.user, config.password, config.port, newSessionID, callback);
}
HdbHandler.prototype.getClientConfig = function(sessionID) {
if (this.connections[sessionID]) {
return this.connections[sessionID]._settings;
}
return null
}
/**
* Run a query specified by the user
* @param {String} sessionID the user's session ID, for getting their client
* @param {String} query the query to run on the HANA instance
* @param {Function} callback Called when the query is finished
* @return {void}
*/
HdbHandler.prototype.exec = function(sessionID, sql, callback) {
if (!this.connections[sessionID]) {
callback("Not Connected to HANA", null);
return;
}
/**
* Run all queries
*/
this.connections[sessionID].exec(sql, function(err, data) {
if (err) {
callback(err, data);
return;
}
callback(null, data);
})
}
module.exports = HdbHandler;