@avonjs/avonjs
Version:
A fluent Node.js API generator.
40 lines (39 loc) • 1.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = (Parent) => {
class Filterable extends Parent {
/**
* The callback to be used for the field's default value.
*/
filterableCallback;
/**
* Apply the filter to the given query.
*/
async applyFilter(request, queryBuilder, value) {
if (typeof this.filterableCallback === 'function') {
await this.filterableCallback?.apply(this, [
request,
queryBuilder,
value,
]);
}
}
/**
* Make the field filter.
*/
resolveFilter(request) {
// prevent resolving fields that do not use for filtering
if (this.filterableCallback) {
return this.makeFilter(request);
}
}
/**
* The callback used to determine if the field is filterable.
*/
filterable(callback = true) {
this.filterableCallback = callback;
return this;
}
}
return Filterable;
};