From 0e968c54dbd30d0004009b623af901dcfb64cf3a Mon Sep 17 00:00:00 2001 From: Sean Fridman Date: Fri, 3 Apr 2015 13:42:12 -0400 Subject: Add okutil --- app/node_modules/okutil/index.js | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 app/node_modules/okutil/index.js (limited to 'app/node_modules/okutil/index.js') diff --git a/app/node_modules/okutil/index.js b/app/node_modules/okutil/index.js new file mode 100644 index 0000000..bef085c --- /dev/null +++ b/app/node_modules/okutil/index.js @@ -0,0 +1,40 @@ +var isarray = require('lodash.isarray'); +var pluralize = require('pluralize'); +var Q = require('q'); + +/** + * OKUtils! + * Cross cutting concerns n stuff + */ +module.exports = { + + /** + * Takes a meta data query and an array of resource queries + * and returns a promise for an object merging all queried + * data, pluralizing keys where necessary. + * + * Lil bit convoluted, sorry. + */ + fetchTemplateData: function fetchTemplateData(meta, queries, options) { + return Q.promise(function(resolve, reject) { + return Q.all( + [meta.get()].concat(queries.map(function(query) { + return query.get(options); + }))) + .then(function(results) { + var metadata = results.shift(); + var normalized = results.reduce(function(data, result, i) { + var type = queries[i].type; + if (isarray(result)) { + data[pluralize(type)] = result; + } else { + data[type] = result; + } + return data; + }, {meta: metadata}); + resolve(normalized); + }, reject); + }); + } + +}; -- cgit v1.2.3-70-g09d2