summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Fridman <fridman@mail.sfsu.edu>2015-04-10 23:09:05 -0400
committerSean Fridman <fridman@mail.sfsu.edu>2015-04-11 01:38:43 -0400
commit4021d7846ce164f3f0c3cb37d3a1d82d2de489d9 (patch)
tree5b8f998b8e34b581039bc0ed3c871624c25e15e7
parent1eff07c9c2ca5b61a28a1037a586d25c3791d67b (diff)
Give views sorted resources
-rw-r--r--app/node_modules/okdb/index.js11
-rw-r--r--app/node_modules/okquery/index.js3
-rw-r--r--app/node_modules/okresource/index.js11
3 files changed, 23 insertions, 2 deletions
diff --git a/app/node_modules/okdb/index.js b/app/node_modules/okdb/index.js
index 7639ec6..c00087c 100644
--- a/app/node_modules/okdb/index.js
+++ b/app/node_modules/okdb/index.js
@@ -117,6 +117,17 @@ FSDB.prototype.remove = function(collection, id) {
}
};
+FSDB.prototype.sortBy = function(collection, prop, descend) {
+ var schema = this._schemas[collection];
+ if (!schema)
+ return resolve(null, new Error('No such collection type'));
+ if (!prop)
+ return resolve(null, new Error('Bad input'));
+
+ var result = this._db(collection).sortByOrder([prop], [!descend]);
+ return resolve(result);
+};
+
FSDB.prototype.find = function(collection, id) {
var schema = this._schemas[collection];
if (!schema)
diff --git a/app/node_modules/okquery/index.js b/app/node_modules/okquery/index.js
index 89c8b73..9cc8b78 100644
--- a/app/node_modules/okquery/index.js
+++ b/app/node_modules/okquery/index.js
@@ -96,7 +96,8 @@ function queryDynamic(resource) {
function queryAll(resource) {
return function() {
- return resource.all();
+ // Always return sorted results
+ return resource.sortBy('__index');
};
}
diff --git a/app/node_modules/okresource/index.js b/app/node_modules/okresource/index.js
index df89617..8c0bb16 100644
--- a/app/node_modules/okresource/index.js
+++ b/app/node_modules/okresource/index.js
@@ -122,12 +122,21 @@ OKResource.prototype.update = function(id, data) {
reject(new Error('No resource ID provided'));
} else if (!data) {
reject(new Error('No data provided'));
- }else {
+ } else {
db.update(type, id, data).then(resolve).fail(reject);;
}
});
};
+
+/**
+ * Get all documents in collection sorted by property,
+ * optionally in descending order
+ */
+OKResource.prototype.sortBy = function(prop, descend) {
+ return this._db.sortBy(this.type, prop, descend);
+};
+
/**
* Update all resources with the given ids with the given data
*/