summaryrefslogtreecommitdiff
path: root/app/node_modules/okquery/index.js
diff options
context:
space:
mode:
authorSean Fridman <fridman@mail.sfsu.edu>2015-04-09 12:38:58 -0400
committerSean Fridman <fridman@mail.sfsu.edu>2015-04-09 12:39:08 -0400
commitd2e9c90b4d99c05734dd9f8fa1545650703f7114 (patch)
tree04d7fd43d2af12fe29d7785b3708c36abb489209 /app/node_modules/okquery/index.js
parente5d2c46da817cf4303d1daca89ef8e18d347fdb4 (diff)
Implement filter matching query
Diffstat (limited to 'app/node_modules/okquery/index.js')
-rw-r--r--app/node_modules/okquery/index.js32
1 files changed, 32 insertions, 0 deletions
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);