@avonjs/avonjs
Version:
A fluent Node.js API generator.
104 lines (103 loc) • 2.88 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const joi_1 = __importDefault(require("joi"));
const Field_1 = __importDefault(require("./Field"));
const NumberFilter_1 = __importDefault(require("./Filters/NumberFilter"));
const ResourceIdFilter_1 = __importDefault(require("./Filters/ResourceIdFilter"));
class Integer extends Field_1.default {
/**
* The callback to be used for the field's default value.
*/
defaultCallback = () => {
return this.isNullable() ? this.nullValue() : 0;
};
/**
* The validation rules callback for creation and updates.
*/
rulesSchema = joi_1.default.number().integer();
/**
* The validation rules callback for creation.
*/
creationRulesSchema = joi_1.default.number().integer();
/**
* The validation rules callback for updates.
*/
updateRulesSchema = joi_1.default.number().integer();
/**
* Indicates a minimum acceptable value.
*/
minimum;
/**
* Indicates a maximum acceptable value.
*/
maximum;
/**
* Indicates whether the range filter is disabled or not.
*/
disableRangeFilter = true;
/**
* Specifies the minimum value.
*/
min(minimum = 0) {
this.minimum = minimum;
this.rules(joi_1.default.number().min(minimum));
return this;
}
/**
* Specifies the maximum value.
*/
max(maximum = 0) {
this.maximum = maximum;
this.rules(joi_1.default.number().max(maximum));
return this;
}
/**
* Mutate the field value for response.
*/
getMutatedValue(request, value) {
// to ensure convert float to integer and none-numbers to zero
return Number.parseInt(String(Number(value)));
}
/**
* Determine field is filterable or not.
*/
isFilterable() {
return true;
}
/**
* Determine field is orderable or not.
*/
isOrderable() {
return true;
}
/**
* Prevent filters by range of values and force to accept only array of values.
*/
preventRangeFilter(disableRangeFilter = true) {
this.disableRangeFilter = disableRangeFilter;
return this;
}
/**
* Make the field filter.
*/
makeFilter(request) {
return this.disableRangeFilter
? new ResourceIdFilter_1.default(this)
: new NumberFilter_1.default(this);
}
/**
* Get the swagger-ui schema.
*/
baseSchema(request) {
return {
...super.baseSchema(request),
type: 'integer',
minimum: this.minimum,
maximum: this.maximum,
};
}
}
exports.default = Integer;