UNPKG

@avonjs/avonjs

Version:

A fluent Node.js API generator.

58 lines (57 loc) 1.9 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const collect_js_1 = __importDefault(require("collect.js")); const Contracts_1 = require("../../Contracts"); const Filters_1 = require("../../Filters"); const FilterableFields_1 = __importDefault(require("../../Mixins/FilterableFields")); class BelongsToFilter extends (0, FilterableFields_1.default)(Filters_1.Filter) { field; /** * The help text for the filter. */ helpText = 'Filter records by related resource IDs.'; constructor(field) { super(); this.field = field; } /** * Apply the filter into the given repository. */ async apply(request, queryBuilder, value) { if (typeof this.field.filterableCallback === 'function') { super.apply(request, queryBuilder, value); } else if (this.field.filterableCallback) { queryBuilder.where({ key: this.field.foreignKeyName(request), operator: Contracts_1.Operator.in, //@ts-ignore value: (0, collect_js_1.default)(value).filter().all(), }); } } filterableAttribute(request) { return this.field.foreignKeyName(request); } parseValue(value) { //@ts-ignore return (0, collect_js_1.default)(value).filter().all(); } /** * Get the swagger-ui schema. */ schema(request) { return { type: 'array', items: { $ref: '#components/schemas/PrimaryKey' }, nullable: this.isNullable(), }; } isValidNullValue(value) { //@ts-ignore return (0, collect_js_1.default)(value).filter().isEmpty(); } } exports.default = BelongsToFilter;