diff options
Diffstat (limited to 'app/index.js')
| -rw-r--r-- | app/index.js | 21 |
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 }); }); }; |
