censql
Version:
A NodeJS command line client for SAP HANA
50 lines (39 loc) • 1.4 kB
JavaScript
var ShowColumnsCommandHandler = function() {
this.includeInAudit = false
}
ShowColumnsCommandHandler.prototype.run = function(command, cParts, conn, screen, callback) {
if (cParts.length < 2) {
callback([1, "Invalid syntax! Try: '\\h' for help.", "message"])
return;
}
var object = cParts[1].match(/\w+|"(?:\\"|[^"])+"/g);
var schema = null;
var table = object[0];
/**
* if schema supplied use it
*/
if (object.length > 1) {
schema = object[0];
table = object[1];
}
if (table[0] == '"' && table[table.length - 1] == '"') {
table = table.substring(1, table.length - 1);
}
var sql = "SELECT \
POSITION, \
CASE WHEN INDEX_TYPE = 'NONE' THEN 'NO' WHEN INDEX_TYPE = 'FULL' THEN 'YES' ELSE INDEX_TYPE END AS IS_KEY, \
COLUMN_NAME, \
DATA_TYPE_NAME AS COLUMN_TYPE, \
LENGTH \
FROM SYS.TABLE_COLUMNS"
if (schema) {
conn.exec("conn", sql + " WHERE SCHEMA_NAME = ? AND TABLE_NAME = ? ORDER BY POSITION", [schema, table], function(err, data) {
callback([err == null ? 0 : 1, err == null ? data : err, err == null ? "default" : "sql-error"]);
})
}else{
conn.exec("conn", sql + " WHERE SCHEMA_NAME = CURRENT_SCHEMA AND TABLE_NAME = ? ORDER BY POSITION", [table], function(err, data) {
callback([err == null ? 0 : 1, err == null ? data : err, err == null ? "default" : "sql-error"]);
})
}
}
module.exports = ShowColumnsCommandHandler;