UNPKG

@avonjs/avonjs

Version:

A fluent Node.js API generator.

40 lines (39 loc) 1.46 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const Contracts_1 = require("../../Contracts"); const BelongsToFilter_1 = __importDefault(require("./BelongsToFilter")); class HasOneOrManyFilter extends BelongsToFilter_1.default { field; constructor(field) { super(field); this.field = field; } /** * Apply the filter into the given repository. */ async apply(request, queryBuilder, value) { if (typeof this.field.filterableCallback === 'function') { this.field.applyFilter(request, queryBuilder, this.parseValue(value)); } else if (this.field.filterableCallback) { const related = await this.field.relatedResource .resolveRepository(request) .whereKeys(Array.isArray(value) ? value : [value]) .all(); queryBuilder.where({ key: this.field.ownerKeyName(request), value: related.map((model) => { return model.getAttribute(this.field.foreignKeyName(request)); }), operator: Contracts_1.Operator.in, }); } } filterableAttribute(request) { return this.field.ownerKeyName(request); } } exports.default = HasOneOrManyFilter;