sql-client
Version: 
A dirt-simple SQL client abstraction (currently) supporting PostgreSQL, MySQL and SQLite.
95 lines (73 loc) • 2.6 kB
JavaScript
// Generated by CoffeeScript 2.6.0
(function() {
  var HOMEDIR, LIB_COV, LIB_DIR, SQLRunner, SQLite3Client, SQLite3Runner, Util, fs, path,
    boundMethodCheck = function(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new Error('Bound instance method accessed before binding'); } };
  fs = require('fs');
  path = require('path');
  HOMEDIR = path.join(__dirname, '..', '..');
  LIB_COV = path.join(HOMEDIR, 'lib-cov');
  LIB_DIR = fs.existsSync(LIB_COV) ? LIB_COV : path.join(HOMEDIR, 'lib');
  SQLRunner = require(path.join(LIB_DIR, 'sql-runner')).SQLRunner;
  SQLite3Client = require(path.join(LIB_DIR, 'sqlite3-client')).SQLite3Client;
  Util = require(path.join(LIB_DIR, 'util')).Util;
  SQLite3Runner = class SQLite3Runner extends SQLRunner {
    constructor(opts, options) {
      var client;
      super();
      this.set_client = this.set_client.bind(this);
      this._get_options = this._get_options.bind(this);
      this._handle_argv = this._handle_argv.bind(this);
      this._stringify_results = this._stringify_results.bind(this);
      if ((opts != null) && typeof opts === 'object' && (options == null)) {
        options = opts;
        opts = null;
      }
      client = null;
      if (opts != null) {
        client = new SQLite3Client(opts);
      }
      this._init(client, options);
    }
    set_client(client) {
      boundMethodCheck(this, SQLite3Runner);
      if (client.execute == null) {
        client = new SQLite3Client(client);
      }
      return super.set_client(client);
    }
    _get_options(additional = {}) {
      var sqlite_opts;
      boundMethodCheck(this, SQLite3Runner);
      sqlite_opts = {
        d: {
          alias: 'db',
          describe: "Databse connect string."
        }
      };
      return super._get_options(Util.merge(sqlite_opts, additional));
    }
    _handle_argv(argv) {
      boundMethodCheck(this, SQLite3Runner);
      if (argv.db != null) {
        this.set_client(argv.db);
      }
      return super._handle_argv(argv);
    }
    _stringify_results(rows, ...tail) {
      boundMethodCheck(this, SQLite3Runner);
      if (rows != null) {
        return JSON.stringify(rows, null, 2);
      } else {
        return super._stringify_results(rows, ...tail);
      }
    }
  };
  exports.SQLite3Runner = SQLite3Runner;
  if (require.main === module) {
    (new SQLite3Runner()).main();
  }
  // EXAMPLE
//   echo "SELECT 3+5 as FOO" | coffee lib/bin/sqlite3-runner.coffee --db ":memory:"
// or
//   echo "SELECT 3+5 as FOO" | ./bin/sqlite3-runner --db ":memory:"
}).call(this);