All files / src/helpers driver.js

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 1051x   1x   1x 8x     1x   1469x     1469x                                 126x 126x 26x 26x     126x       126x   126x 126x       126x 126x 126x     126x           1337x 1337x 667x 667x     1337x       1337x   1337x 1337x       1337x 1337x       2x 2x 2x       2x 2x       2x 2x 2x       2x 2x         1x  
const _ = require('lodash');
 
const debug = require('debug')('express-cassandra');
 
const Driver = function f(properties) {
  this._properties = properties;
};
 
Driver.prototype = {
  ensure_init(callback) {
    Iif (!this._properties.cql) {
      this._properties.init(callback);
    } else {
      callback();
    }
  },
 
  execute_definition_query(query, callback) {
    this.ensure_init((err) => {
      if (err) {
        callback(err);
        return;
      }
      debug('executing definition query: %s', query);
      const properties = this._properties;
      const conn = properties.define_connection;
      conn.execute(query, [], { prepare: false, fetchSize: 0 }, callback);
    });
  },
 
  execute_query(query, params, options, callback) {
    if (arguments.length === 3) {
      callback = options;
      options = {};
    }
 
    const defaults = {
      prepare: true,
    };
 
    options = _.defaultsDeep(options, defaults);
 
    this.ensure_init((err) => {
      Iif (err) {
        callback(err);
        return;
      }
      debug('executing query: %s with params: %j', query, params);
      this._properties.cql.execute(query, params, options, (err1, result) => {
        Iif (err1 && err1.code === 8704) {
          this.execute_definition_query(query, callback);
        } else {
          callback(err1, result);
        }
      });
    });
  },
 
  execute_batch(queries, options, callback) {
    if (arguments.length === 2) {
      callback = options;
      options = {};
    }
 
    const defaults = {
      prepare: true,
    };
 
    options = _.defaultsDeep(options, defaults);
 
    this.ensure_init((err) => {
      Iif (err) {
        callback(err);
        return;
      }
      debug('executing batch queries: %j', queries);
      this._properties.cql.batch(queries, options, callback);
    });
  },
 
  execute_eachRow(query, params, options, onReadable, callback) {
    this.ensure_init((err) => {
      Iif (err) {
        callback(err);
        return;
      }
      debug('executing eachRow query: %s with params: %j', query, params);
      this._properties.cql.eachRow(query, params, options, onReadable, callback);
    });
  },
 
  execute_stream(query, params, options, onReadable, callback) {
    this.ensure_init((err) => {
      Iif (err) {
        callback(err);
        return;
      }
      debug('executing stream query: %s with params: %j', query, params);
      this._properties.cql.stream(query, params, options).on('readable', onReadable).on('end', callback);
    });
  },
};
 
module.exports = Driver;