UNPKG

zcatalyst-cli

Version:

Command Line Tool for CATALYST

238 lines (228 loc) 7.38 kB
// '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(); // }); // }); // };