initialize: function(options) {
    if (options.allowBlank === false && !_.isNumber(options.minimum) && !_.isNumber(options.is)) {
      options.minimum = 1;
    }

    this._super(options);
  },
Exemple #2
0
  _executeSimpleCalculation: function(operation, columnName, distinct, cb) {
    var relation  = this.reorder(null);
    var limit     = relation.getLimitValue();
    var offset    = relation.getOffsetValue();
    var alias     = null;
    var sql;

    if (operation === 'count' && (_.isNumber(limit) || _.isNumber(offset))) {
      if (limit === 0) {
        process.nextTick(function() { cb(null, 0); });
        return;
      }

      sql = this._buildCountSubquery(relation, columnName, distinct);
    } else {
      var column = this._getAggregateColumn(columnName);
      var selectValue = this._getOperationOverAggregateColumn(column, operation, distinct);
      alias = selectValue.alias;
      relation.setSelectValues([selectValue]);

      sql = relation.toSQL();
    }

    this.model.query(sql, function(err, result) {
      if (err) { cb(err); return; }

      var row   = result.rows[0];
      var value = row[alias || operation];

      cb(null, Number(value));
    });
  },
    _.forEach(keys, function(key) {
      var value = this.options[key];

      if (!_.isNumber(value) || value < 0 || _.isNaN(value)) {
        throw new Error(key + ' must be a nonnegative Integer');
      }
    }, this);
Exemple #4
0
    redirect: function (status, url, opts) {
        var parts;

        if ( !_.isNumber(status) ) {
            opts = url;
            url = status;
            status = 302;
        }

        parts = R_URL.exec(url);
        parts[2] = Route.buildPath(parts[2], opts);
        url = parts[1] + parts[2];

        this.response.setHeader('Location', url);

        if ( !_.contains(REDIRECT_CODES, status) ) {
            status = 302;
        }

        if ( this.neg.mediaTypes(['text/html']).length ) {
            url = hyperLinkTpl({href: _.escape(url)});
        }

        return this.response.respond(status, url);
    },
  _parseAsNumber: function(rawValue) {
    if (rawValue === null || /^\s*$/.test(String(rawValue)) || /^0[xX]/.test(String(rawValue))) {
      return null;
    }

    var value = Number(rawValue);

    return _.isNumber(value) && !_.isNaN(value) ? value : null;
  },
Exemple #6
0
    send: function (status, body) {

        if ( !_.isNumber(status) ) {
            body = status;
            status = void 0;
        }

        return this.response.respond(status, body);
    },
  checkValidity: function() {
    var keys = _.without(_.keys(CHECKS), 'odd', 'even');
    var options = _.pick(this.options, keys);

    for (var key in options) {
      var value = options[key];

      if (_.isNumber(value) || _.isFunction(value)) {
        continue;
      }

      throw new Error(key + ' must be a number or a function');
    }
  },