initialize: function(options) { if (options.allowBlank === false && !_.isNumber(options.minimum) && !_.isNumber(options.is)) { options.minimum = 1; } this._super(options); },
_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);
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; },
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'); } },