grapher/lib/query/hypernova/hypernova.js

36 lines
1.3 KiB
JavaScript
Raw Normal View History

2016-09-21 18:33:50 +03:00
import applyProps from '../lib/applyProps.js';
import LinkResolve from '../../links/linkTypes/linkResolve.js';
import storeHypernovaResults from './storeHypernovaResults.js';
2016-09-22 12:01:47 +03:00
import assembler from './assembler.js';
2016-09-21 18:33:50 +03:00
function hypernova(collectionNode, userId) {
2016-09-21 18:33:50 +03:00
_.each(collectionNode.collectionNodes, childCollectionNode => {
let {filters, options} = applyProps(childCollectionNode);
if (childCollectionNode.linker.isResolver()) {
2016-09-28 18:39:19 +03:00
_.each(collectionNode.results, result => {
const accessor = childCollectionNode.linker.createLink(result);
result[childCollectionNode.linkName] = accessor.find(filters, options);
2016-09-21 18:33:50 +03:00
});
} else {
storeHypernovaResults(childCollectionNode, userId);
2016-09-28 18:30:12 +03:00
hypernova(childCollectionNode, userId);
2016-09-21 18:33:50 +03:00
}
});
}
export default function hypernovaInit(collectionNode, userId, config = {bypassFirewalls: false}) {
2016-09-21 18:33:50 +03:00
let {filters, options} = applyProps(collectionNode);
const collection = collectionNode.collection;
2016-09-28 18:39:19 +03:00
collectionNode.results = collection.find(filters, options, userId).fetch();
2016-09-28 18:30:12 +03:00
const userIdToPass = (config.bypassFirewalls) ? undefined : userId;
hypernova(collectionNode, userIdToPass);
2016-09-28 18:39:19 +03:00
2016-09-22 12:01:47 +03:00
return collectionNode.results;
2016-09-21 18:33:50 +03:00
}