@avonjs/avonjs
Version:
A fluent Node.js API generator.
47 lines (46 loc) • 1.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const Contracts_1 = require("../Contracts");
exports.default = (Parent) => {
class Orderable extends Parent {
/**
* The callback to be used for the field's default value.
*/
orderableCallback;
/**
* Apply the order to the given query.
*/
applyOrdering(request, queryBuilder, value) {
this.orderableCallback?.apply(this, [request, queryBuilder, value]);
}
/**
* Make the field order.
*/
resolveOrdering(request) {
// prevent resolving fields that do not use for ordering
if (this.orderableCallback != null) {
return this.makeOrdering(request);
}
}
/**
* The callback used to determine if the field is orderable.
*/
orderable(callback) {
this.orderableCallback = callback ?? this.defaultOrderingCallback();
return this;
}
/**
* Define the default orderable callback.
*/
defaultOrderingCallback() {
return (request, queryBuilder, value) => {
queryBuilder.where({
key: this.orderableAttribute(request),
operator: Contracts_1.Operator.eq,
value,
});
};
}
}
return Orderable;
};