All files / src/validators datatypes.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 751x 1x 1x   1x 1x   1x   1x     1x   1x 68x 44x 15x 1x 105x 1x 7x 6x 40065x 1x 1x 3x 1x 21x 1x 1x 11x   1x                                                       1x 41355x   41355x     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;