grapher/lib/query/hypernova/hypernova.js
Theodor Diaconu 4083498aa2 init state
2016-09-21 18:33:50 +03:00

38 lines
1.2 KiB
JavaScript

import applyProps from '../lib/applyProps.js';
import LinkResolve from '../../links/linkTypes/linkResolve.js';
import storeHypernovaResults from './storeHypernovaResults.js';
function hypernova(collectionNode, userId) {
_.each(collectionNode.collectionNodes, childCollectionNode => {
let {filters, options} = applyProps(childCollectionNode);
if (childCollectionNode.linker.isResolver()) {
_.each(collectionNode.results, result => {
const accessor = childCollectionNode.linker.createLink(result);
childCollectionNode.results = accessor.find(filters, options);
});
} else {
storeHypernovaResults(childCollectionNode, userId);
hypernova(childCollectionNode, userId);
}
});
}
export default function hypernovaInit(collectionNode, userId) {
let results = [];
let {filters, options} = applyProps(collectionNode);
const collection = collectionNode.collection;
if (collection.findSecure) {
results = collection.findSecure(filters, options, userId).fetch();
} else {
results = collection.find(filters, options).fetch();
}
collectionNode.results = results;
return hypernova(collectionNode, userId);
}