summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Fridman <fridman@mail.sfsu.edu>2015-04-06 14:26:34 -0400
committerSean Fridman <fridman@mail.sfsu.edu>2015-04-06 15:27:53 -0400
commitf7bb4fc5ad662d9becd60c11f48998dba9339433 (patch)
treef0a55826a8fedf9e5ae2329fbcaddb10c3560c12
parent7297a035b734b545364a2508977ba9078e1e72c5 (diff)
Allow specification of default queries
-rw-r--r--app/node_modules/okquery/index.js30
-rw-r--r--app/node_modules/okquery/package.json1
2 files changed, 26 insertions, 5 deletions
diff --git a/app/node_modules/okquery/index.js b/app/node_modules/okquery/index.js
index e5bae67..c28971f 100644
--- a/app/node_modules/okquery/index.js
+++ b/app/node_modules/okquery/index.js
@@ -1,3 +1,5 @@
+var Q = require('q');
+
/**
* OKQuery!
* Takes a query spec for a resource and maps it the proper read
@@ -20,17 +22,24 @@ function OKQuery(options) {
value: resource.type,
writable: false
});
- this.get = createQuery(resource, query);
+ this.get = createQuery(resource, query, {
+ default: options.default
+ });
}
-function createQuery(resource, query) {
+function createQuery(resource, query, options) {
+ options = options || {};
+ var query;
if (isDynamic(query)) {
- return queryDynamic(resource);
+ query = queryDynamic(resource);
} else if (isSet(query)) {
- return queryAll(resource);
+ query = queryAll(resource);
} else {
- return querySingle(resource, query);
+ query = querySingle(resource, query);
}
+ if (options.default)
+ query = withDefault(query, options.default);
+ return query;
}
function queryDynamic(resource) {
@@ -51,6 +60,17 @@ function querySingle(resource, id) {
}
}
+function withDefault(queryFn, resultDefault) {
+ return function() {
+ return Q.Promise(function(resolve, reject) {
+ queryFn().then(function(data) {
+ data = data || resultDefault;
+ resolve(data);
+ }, reject);
+ });
+ };
+}
+
function isDynamic(query) {
return query && query.charAt(0) === ':';
}
diff --git a/app/node_modules/okquery/package.json b/app/node_modules/okquery/package.json
index a503c4b..56cd09f 100644
--- a/app/node_modules/okquery/package.json
+++ b/app/node_modules/okquery/package.json
@@ -9,5 +9,6 @@
"author": "OKFocus",
"license": "None",
"dependencies": {
+ "q": "^1.2.0"
}
}