All files / src/validators datatypes.js

86% Statements 43/50
87.5% Branches 7/8
68.42% Functions 13/19
100% Lines 32/32

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 741x 1x 1x   1x 1x   1x   1x     1x   1x 54x 35x 15x 1x 103x 1x 7x 6x 40062x 1x 1x 3x 1x 20x 1x 1x 9x   1x                                                     1x 41345x   41345x     1x           1x  
const Promise = require('bluebird');
const util = require('util');
const check = require('check-types');
 
let dseDriver;
try {
  // eslint-disable-next-line import/no-extraneous-dependencies, import/no-unresolved
  dseDriver = require('dse-driver');
} catch (e) {
  dseDriver = null;
}
 
const cql = Promise.promisifyAll(dseDriver || require('cassandra-driver'));
 
const validators = {};
validators.is_array = (obj) => (check.array(obj));
validators.is_object = (obj) => (check.object(obj));
validators.is_long = (obj) => ((obj instanceof cql.types.Long));
validators.is_decimal = (obj) => ((obj instanceof cql.types.BigDecimal));
validators.is_integer = (obj) => (check.integer(obj));
validators.is_var_int = (obj) => ((obj instanceof cql.types.Integer));
validators.is_boolean = (obj) => ((obj === true || obj === false));
validators.is_number = (obj) => (check.number(obj));
validators.is_string = (obj) => (check.string(obj));
validators.is_local_date = (obj) => ((obj instanceof cql.types.LocalDate));
validators.is_local_time = (obj) => ((obj instanceof cql.types.LocalTime));
validators.is_date = (obj) => (check.date(new Date(obj)));
validators.is_buffer = (obj) => ((obj instanceof Buffer));
validators.is_timeuuid = (obj) => ((obj instanceof cql.types.TimeUuid));
validators.is_uuid = (obj) => ((obj instanceof cql.types.Uuid));
validators.is_inet = (obj) => ((obj instanceof cql.types.InetAddress));
validators.is_frozen = (obj) => ((validators.is_array(obj) || validators.is_object(obj)));
 
const TYPE_MAP = {
  ascii: { validator: validators.is_string },
  bigint: { validator: validators.is_long },
  blob: { validator: validators.is_buffer },
  boolean: { validator: validators.is_boolean },
  counter: { validator: validators.is_long },
  date: { validator: validators.is_local_date },
  decimal: { validator: validators.is_decimal },
  double: { validator: validators.is_number },
  float: { validator: validators.is_number },
  inet: { validator: validators.is_inet },
  int: { validator: validators.is_integer },
  list: { validator: validators.is_array },
  map: { validator: validators.is_object },
  set: { validator: validators.is_array },
  smallint: { validator: validators.is_integer },
  text: { validator: validators.is_string },
  time: { validator: validators.is_local_time },
  timestamp: { validator: validators.is_date },
  timeuuid: { validator: validators.is_timeuuid },
  tinyint: { validator: validators.is_integer },
  uuid: { validator: validators.is_uuid },
  varchar: { validator: validators.is_string },
  varint: { validator: validators.is_var_int },
  frozen: { validator: validators.is_frozen },
};
 
TYPE_MAP.generic_type_validator = function f(fieldtype) {
  Iif (!this[fieldtype]) return null;
 
  return {
    validator: this[fieldtype].validator,
    message(value, propName, fieldType) {
      return util.format('Invalid Value: "%s" for Field: %s (Type: %s)', value, propName, fieldType);
    },
    type: 'type_validator',
  };
};
 
module.exports = TYPE_MAP;