UNPKG

@avonjs/avonjs

Version:

A fluent Node.js API generator.

104 lines (103 loc) 2.88 kB
"use strict"; 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;