summaryrefslogtreecommitdiff
path: root/app/index.js
diff options
context:
space:
mode:
authorSean Fridman <fridman@mail.sfsu.edu>2015-04-03 12:40:03 -0400
committerSean Fridman <fridman@mail.sfsu.edu>2015-04-03 12:40:03 -0400
commite04236546cc0978c892bbb360ff909b3460d67a6 (patch)
treecb0d8eedece34ca8d407dc8b1d07a1223c88164f /app/index.js
parent7d15bc8a49121dd85171d7837c4f6a97a7e096dc (diff)
Queries now properly backed by resources
Diffstat (limited to 'app/index.js')
-rw-r--r--app/index.js21
1 files changed, 12 insertions, 9 deletions
diff --git a/app/index.js b/app/index.js
index 6d057d3..8ab7743 100644
--- a/app/index.js
+++ b/app/index.js
@@ -25,7 +25,6 @@ function OKCMS(options) {
var db = new OKDB(options.db || 'fs');
var templateCache = this._templateCache = new OKTemplate({root: root});
var server = this._server = new OKServer({root: root});
- // Special query for getting meta info
var meta = this._meta = {
name: 'meta',
get: function() {
@@ -36,7 +35,7 @@ function OKCMS(options) {
var resources = this._resources =
this._createResources(resourceConfig, db, schemas);
var views = this._views =
- this._createViews(viewConfig, db, meta, templateCache);
+ this._createViews(viewConfig, db, meta, resources, templateCache);
this._initViews(server, views);
}
@@ -75,7 +74,7 @@ OKCMS.prototype._createResources = function(resourceConfig, db, schemaCache) {
};
OKCMS.prototype._createViews = function(viewConfig, db,
- meta, templateCache) {
+ meta, resourceCache, templateCache) {
viewConfig = viewConfig || {};
var self = this;
var createQueries = this._createQueries.bind(this);
@@ -86,7 +85,7 @@ OKCMS.prototype._createViews = function(viewConfig, db,
if (!template)
throw new Error(format('No template named "%s" found', templateName));
var queryConfig = config.data || [];
- var queries = createQueries(queryConfig, db);
+ var queries = createQueries(queryConfig, resourceCache);
// Instantiate!
cache[route] = OKView({
route: route,
@@ -113,16 +112,20 @@ OKCMS.prototype._createViews = function(viewConfig, db,
}
}
-OKCMS.prototype._createQueries = function(queryConfig, db) {
+OKCMS.prototype._createQueries = function(queryConfig, resourceCache) {
queryConfig = queryConfig || {};
if (!queryConfig.length)
queryConfig = [queryConfig];
return queryConfig.map(function(config) {
+ var type = config.type;
+ var resource = resourceCache[type];
+ if (!resource)
+ throw new Error('Query configured with nonexistent resource');
// Default to "select all" query
- var id = config.id || '*';
- return new OKQuery(db, {
- type: config.type,
- id: id
+ var query = config.query || '*';
+ return new OKQuery({
+ resource: resource,
+ query: query
});
});
};