UNPKG

@serafin/pipeline

Version:

CRUD data access library with a functional approach

36 lines 1.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Relation = void 0; const QueryTemplate_1 = require("./QueryTemplate"); /** * Represents a Relation for the given pipeline */ class Relation { constructor(holdingPipeline, name, pipeline, query, type) { this.holdingPipeline = holdingPipeline; this.name = name; this.pipeline = pipeline; this.query = query; this.type = type; } async fetch(resource, query, context) { return this.pipeline.read({ ...QueryTemplate_1.QueryTemplate.hydrate(this.query, resource), ...(query || {}) }, context); } async assignToResource(resource, query, context) { let result = await this.fetch(resource, query, context); if (this.type === "one") { ; resource[this.name] = result.data[0]; } else { ; resource[this.name] = result.data; } return resource; } async assignToResources(resources, query, context) { return Promise.all(resources.map((resource) => this.assignToResource(resource, query, context))); } } exports.Relation = Relation; //# sourceMappingURL=Relation.js.map