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 9x     1x   1475x     1475x                                 132x 132x 29x 29x     132x       132x   132x 132x       132x 132x 132x     132x           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;