@dominion-framework/dominion
Version:
Declarative Promise based Node.js framework for REST API with zero dependencies.
32 lines (23 loc) • 1.04 kB
JavaScript
const Router = require("./../../../core/router");
const Collections = require("./collections");
const DispatchRequest = require("./dispatchRequest");
const DispatchResponse = require("./dispatchResponse");
const collectModels = function (models, depth) {
const collections = new Collections();
let chain = Promise.resolve(models);
while (depth--) {
chain = chain
.then(fetchModels.bind(this, collections))
.then(collections.getMissingChildModelsReferences.bind(collections))
}
return chain.then(() => collections);
};
const fetchModels = function (collections, models) {
return Promise.all(models.map(modelReference => {
return Router.handle(new DispatchRequest(this.request.__request__, modelReference.link), new DispatchResponse())
.then(models => {
collections.set(modelReference, models);
});
}));
};
module.exports = collectModels;