@serafin/pipeline
Version:
CRUD data access library with a functional approach
36 lines • 1.22 kB
JavaScript
;
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