UNPKG

@avonjs/avonjs

Version:

A fluent Node.js API generator.

47 lines (46 loc) 1.47 kB
"use strict"; 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; };