UNPKG

@avonjs/avonjs

Version:

A fluent Node.js API generator.

40 lines (39 loc) 1.18 kB
"use strict"; 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; };