diff options
| author | Sean Fridman <fridman@mail.sfsu.edu> | 2015-04-09 12:38:58 -0400 |
|---|---|---|
| committer | Sean Fridman <fridman@mail.sfsu.edu> | 2015-04-09 12:39:08 -0400 |
| commit | d2e9c90b4d99c05734dd9f8fa1545650703f7114 (patch) | |
| tree | 04d7fd43d2af12fe29d7785b3708c36abb489209 /app | |
| parent | e5d2c46da817cf4303d1daca89ef8e18d347fdb4 (diff) | |
Implement filter matching query
Diffstat (limited to 'app')
| -rw-r--r-- | app/node_modules/okquery/index.js | 32 | ||||
| -rw-r--r-- | app/node_modules/okquery/package.json | 2 |
2 files changed, 34 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); diff --git a/app/node_modules/okquery/package.json b/app/node_modules/okquery/package.json index 56cd09f..606d45b 100644 --- a/app/node_modules/okquery/package.json +++ b/app/node_modules/okquery/package.json @@ -9,6 +9,8 @@ "author": "OKFocus", "license": "None", "dependencies": { + "lodash.isobject": "^3.0.1", + "object-assign": "^2.0.0", "q": "^1.2.0" } } |
