@avonjs/avonjs
Version:
A fluent Node.js API generator.
76 lines (75 loc) • 2.05 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 Contracts_1 = require("../Contracts");
const Field_1 = __importDefault(require("./Field"));
const BinaryFilter_1 = __importDefault(require("./Filters/BinaryFilter"));
class Binary extends Field_1.default {
/**
* The callback to be used for the field's default value.
*/
defaultCallback = () => {
return this.isNullable() ? this.nullValue() : false;
};
/**
* The validation rules callback for creation and updates.
*/
rulesSchema = joi_1.default.boolean();
/**
* The validation rules callback for creation.
*/
creationRulesSchema = joi_1.default.boolean();
/**
* The validation rules callback for updates.
*/
updateRulesSchema = joi_1.default.boolean();
/**
* Mutate the field value for response.
*/
getMutatedValue(request, value) {
return Boolean(value);
}
/**
* Determine field is filterable or not.
*/
isFilterable() {
return true;
}
/**
* Determine field is orderable or not.
*/
isOrderable() {
return true;
}
/**
* Make the field filter.
*/
makeFilter(request) {
return new BinaryFilter_1.default(this);
}
/**
* Define the default filterable callback.
*/
defaultFilterableCallback() {
return (request, repository, value) => {
repository.where({
key: this.filterableAttribute(request),
operator: Contracts_1.Operator.eq,
value: Boolean(value),
});
};
}
/**
* Get the swagger-ui schema.
*/
baseSchema(request) {
return {
...super.baseSchema(request),
type: 'boolean',
};
}
}
exports.default = Binary;