zcatalyst-cli
Version:
Command Line Tool for CATALYST
238 lines (228 loc) • 7.38 kB
JavaScript
// 'use strict';
// var _ = require('lodash');
// var clc = require('cli-color');
// var readline = require('readline');
// var Table = require('cli-table');
// var zcqlAPI = require('../../endpoints').zcql;
// var dataStoreAPI = require('../../endpoints').datastore;
// var logger = require('../../logger');
// var outputStream = process.stdout;
// var inputStream = process.stdin;
// module.exports = function(options) {
// return new Promise(function(resolve) {
// function getHeadTable(headArr) {
// headArr = headArr || [];
// return new Table({
// head: headArr,
// chars: {
// top: ' ',
// 'top-mid': '',
// 'top-left': '',
// 'top-right': '',
// bottom: '-',
// 'bottom-mid': '+',
// 'bottom-left': ' ',
// 'bottom-right': ' ',
// left: ' ',
// 'left-mid': ' ',
// mid: '',
// 'mid-mid': '',
// right: '',
// 'right-mid': '',
// middle: '|'
// },
// style: {
// head: ['yellow']
// }
// });
// }
// function getRowTable() {
// return new Table({
// chars: {
// top: ' ',
// 'top-mid': '',
// 'top-left': '',
// 'top-right': '',
// bottom: ' ',
// 'bottom-mid': '',
// 'bottom-left': '',
// 'bottom-right': '',
// left: ' ',
// 'left-mid': '',
// mid: ' ',
// 'mid-mid': '',
// right: ' ',
// 'right-mid': '',
// middle: '|'
// }
// });
// }
// function parseHrtimeToSeconds(hrtime) {
// var seconds = (hrtime[0] + hrtime[1] / 1e9).toFixed(3);
// return seconds;
// }
// function completer(line) {
// var completions = 'show select'.split(' ');
// var hits = completions.filter(function(c) {
// c.startsWith(line);
// });
// // show all completions if none found
// return [hits.length ? hits : completions, line];
// }
// var prompt = clc.cyanBright('query > ');
// var rl = readline.createInterface({
// input: inputStream,
// output: outputStream,
// prompt: prompt,
// completer: completer
// });
// rl.prompt();
// rl.on('line', function(line) {
// var originalLine = line.trim();
// return new Promise(function(resolve) {
// switch (true) {
// case /^exit/i.test(originalLine):
// case /\\q/i.test(originalLine):
// rl.close();
// break;
// case /^show tables$/i.test(originalLine):
// case /^show tables;$/i.test(originalLine):
// var startShowTime = process.hrtime();
// var totalTableRows = 0;
// return dataStoreAPI
// .getAllTables(options.project)
// .then(function(data) {
// var elapsedSeconds = parseHrtimeToSeconds(
// process.hrtime(startShowTime)
// );
// var table = getHeadTable(['Tables_in_' + options.project]);
// // style override
// table.options.chars = {
// top: '-',
// 'top-left': '+',
// 'top-right': '+',
// bottom: '-',
// 'bottom-left': '+',
// 'bottom-right': '+',
// left: '|',
// 'left-mid': '|',
// mid: '-',
// 'mid-mid': '+',
// right: '|',
// 'right-mid': '|',
// middle: '|'
// };
// data.forEach(function(tableDetails) {
// var row = [tableDetails.table_name];
// table.push(row);
// totalTableRows++;
// });
// if (totalTableRows > 0) {
// console.log(table.toString());
// console.log(
// totalTableRows +
// ' rows in set (' +
// elapsedSeconds +
// 'sec)\n'
// );
// } else {
// console.log('Empty set (' + elapsedSeconds + 'sec)\n');
// }
// return resolve();
// })
// .catch(function(err) {
// logger.debug('There was an error processing the request.' + err);
// logger.info(clc.redBright("couldn't fetch any details"));
// return resolve();
// });
// case /^select/i.test(originalLine):
// var startTime = process.hrtime();
// var totalRows = 0;
// var containsJoin =
// _.words(originalLine).indexOf('join') >= 0 ||
// _.words(originalLine).indexOf('JOIN') >= 0;
// return zcqlAPI
// .query(options.project, originalLine.replace(';', ''))
// .then(function(data) {
// var elapsedSeconds = parseHrtimeToSeconds(
// process.hrtime(startTime)
// );
// var globalMaxWidthArr = [];
// var globalHeadArr = [];
// var headTable = getHeadTable();
// var rowTable = getRowTable();
// data.forEach(function(rowDetails) {
// var row = [];
// _.keysIn(rowDetails).forEach(function(tableKeys) {
// var maxWidthArr = [];
// var tableHead = [];
// var tableDetails = _.get(rowDetails, tableKeys);
// _.forIn(tableDetails, function(value, key) {
// //null handling
// value = (value || '') + '';
// var headerName = key;
// if (containsJoin) {
// headerName = tableKeys + '.' + key;
// }
// tableHead.push(headerName);
// maxWidthArr.push(
// headerName.length + 2 > value.length + 2
// ? headerName.length + 2
// : value.length + 2
// );
// row.push(value);
// });
// globalMaxWidthArr =
// globalMaxWidthArr.length > 0
// ? globalMaxWidthArr
// : maxWidthArr;
// maxWidthArr.forEach(function(maxLen, index) {
// globalMaxWidthArr[index] =
// maxLen > globalMaxWidthArr[index]
// ? maxLen
// : globalMaxWidthArr[index];
// });
// globalHeadArr = _.union(globalHeadArr, tableHead);
// });
// rowTable.push(row);
// totalRows++;
// });
// if (totalRows > 0) {
// var colAlignmentArr = new Array(globalMaxWidthArr.length);
// colAlignmentArr.fill('middle');
// headTable.options.head = globalHeadArr;
// headTable.options.colAligns = colAlignmentArr;
// headTable.options.colWidths = globalMaxWidthArr;
// rowTable.options.colAligns = colAlignmentArr;
// rowTable.options.colWidths = globalMaxWidthArr;
// console.log(headTable.toString() + '\n' + rowTable.toString());
// console.log(
// totalRows + ' rows in set (' + elapsedSeconds + 'sec)\n'
// );
// } else {
// console.log('Empty set (' + elapsedSeconds + 'sec)\n');
// }
// return resolve();
// })
// .catch(function(err) {
// logger.debug('There was an error processing the request.' + err);
// logger.info(clc.redBright("couldn't fetch any details"));
// return resolve();
// });
// default:
// logger.info(
// `We might have heard '${clc.bold(
// line.trim()
// )}'\n which is an unknown command!! Try a SQL Query instead.`
// );
// return resolve();
// }
// }).then(function() {
// rl.prompt();
// });
// }).on('close', function() {
// logger.info('Have a great day!');
// return resolve();
// });
// });
// };