From d2e9c90b4d99c05734dd9f8fa1545650703f7114 Mon Sep 17 00:00:00 2001 From: Sean Fridman Date: Thu, 9 Apr 2015 12:38:58 -0400 Subject: Implement filter matching query --- app/node_modules/okquery/index.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'app/node_modules/okquery/index.js') diff --git a/app/node_modules/okquery/index.js b/app/node_modules/okquery/index.js index 9748067..33a49c4 100644 --- a/app/node_modules/okquery/index.js +++ b/app/node_modules/okquery/index.js @@ -1,3 +1,5 @@ +var assign = require('object-assign'); +var isobject = require('lodash.isobject'); var Q = require('q'); /** @@ -36,6 +38,8 @@ function createQuery(resource, query, options) { options = options || {}; if (resource.bound) { query = queryBound(resource); + } else if (isobject(query)) { + query = queryComplex(resource, query) } else if (isDynamic(query)) { query = queryDynamic(resource); } else if (isSet(query)) { @@ -49,6 +53,34 @@ function createQuery(resource, query, options) { return query; } +function queryComplex(resource, query) { + var dynamicProp; + var notDynamic = Object.keys(query).every(function(prop) { + var matcher = query[prop]; + if (isDynamic(matcher)) { + dynamicProp = prop; + return false; + } else { + return true; + } + }); + + if (notDynamic) { + return function() { + console.log('get it!', query) + return resource.find(query); + } + } else { + return function(id) { + var dynamicQuery = {}; + dynamicQuery[dynamicProp] = id; + var query = assign({}, query, dynamicQuery); + console.log('get it!', query) + return resource.find(query); + } + } +} + function queryDynamic(resource) { return function(id) { return resource.get(id); -- cgit v1.2.3-70-g09d2