sqlite-browser
Version:
Query and page SQLite3 DBs from the command line
124 lines (96 loc) • 4.07 kB
JavaScript
// Generated by CoffeeScript 2.4.1
(function() {
'use strict';
var $, $async, CND, DB, FS, L, PATH, PD, PSPG, _$count, assign, badge, debug, echo, help, info, isa, jr, rpr, select, testing, type_of, types, urge, validate, warn, whisper,
modulo = function(a, b) { return (+a % (b = +b) + b) % b; };
//###########################################################################################################
CND = require('cnd');
rpr = CND.rpr;
badge = 'SQLITE-BROWSER/MAIN';
debug = CND.get_logger('debug', badge);
warn = CND.get_logger('warn', badge);
info = CND.get_logger('info', badge);
urge = CND.get_logger('urge', badge);
help = CND.get_logger('help', badge);
whisper = CND.get_logger('whisper', badge);
echo = CND.echo.bind(CND);
//...........................................................................................................
({assign, jr} = CND);
//...........................................................................................................
require('./exception-handler');
types = require('./types');
({isa, validate, type_of} = types);
FS = require('fs');
PATH = require('path');
// glob = require 'glob'
// minimatch = require 'minimatch'
PD = require('pipedreams');
({$, $async, select} = PD);
//...........................................................................................................
PSPG = require('pspg');
DB = require('./db');
//-----------------------------------------------------------------------------------------------------------
_$count = function(step) {
var nr;
nr = 0;
return PD.$watch((d) => {
nr += +1;
if ((modulo(nr, step)) === 0) {
whisper('µ44744', nr);
}
return null;
});
};
//-----------------------------------------------------------------------------------------------------------
this.browse = function(db_path, key, value) {
return new Promise((resolve, reject) => {
var S, pipeline, source, sql;
if (key !== 'c') {
// validate.sqlb_settings settings
throw new Error("µ33221 Error");
}
validate.nonempty_text(value);
S = {};
S.db = DB.new_db(db_path);
sql = value;
source = PD.new_generator_source(S.db.$.query(sql));
//.........................................................................................................
pipeline = [];
pipeline.push(source);
pipeline.push(_$count(100));
/* TAINT resolve may be called twice */
// pipeline.push PD.$sort() if testing
pipeline.push(PSPG.$tee_as_table(function() {
return resolve();
}));
/* TAINT resolve may be called before tee has finished writing (?) */
pipeline.push(PD.$drain());
PD.pull(...pipeline);
//.........................................................................................................
return null;
});
};
//-----------------------------------------------------------------------------------------------------------
this.cli = async function(db_path, key, value) {
//.......................................................................................................
validate.sqlb_db_path(db_path);
validate.sqlb_key(key);
// debug 'µ33444', arguments
// debug 'µ33444', "running #{__filename} #{jr [ db_path, key, value, ]}"
return (await this.browse(db_path, key, value));
};
// settings = L.new_settings './README.md'
// db_path = PATH.resolve '/home/flow/jzr/mkts-mirage/db/mkts.db'
// await L.browse db_path, 'c', "select * from main;"
// help 'ok'
//###########################################################################################################
if (module.parent == null) {
testing = true;
L = this;
(async function() {
await L.cli(...process.argv.slice(2));
return help('ok');
})();
}
}).call(this);
//# sourceMappingURL=main.js.map