diff options
| author | Sean Fridman <fridman@mail.sfsu.edu> | 2015-04-03 02:28:12 -0400 |
|---|---|---|
| committer | Sean Fridman <fridman@mail.sfsu.edu> | 2015-04-03 02:28:12 -0400 |
| commit | b8ae0749a6e7f85edda8a0926e003cd561e4d172 (patch) | |
| tree | cbf7e35a550c8133ea5fad257997ecb7c9370ed8 /app/node_modules/okresource | |
| parent | 6fbccc554b2ab51f683718334338eae2b7b06200 (diff) | |
Separate schema and resource concepts
Also refactor a bit
Diffstat (limited to 'app/node_modules/okresource')
| -rw-r--r-- | app/node_modules/okresource/index.js | 41 | ||||
| -rw-r--r-- | app/node_modules/okresource/package.json | 6 |
2 files changed, 19 insertions, 28 deletions
diff --git a/app/node_modules/okresource/index.js b/app/node_modules/okresource/index.js index cfdd389..58b94c2 100644 --- a/app/node_modules/okresource/index.js +++ b/app/node_modules/okresource/index.js @@ -1,14 +1,17 @@ -var Q = require('q'); -var joi = require('joi'); var OKRestEndpoint = require('okrest'); /** * Creates an OKResource types * Takes a resource name and a spec defining the resources attributes. */ -function createResourceClass(name, spec, options) { +function createResourceClass(options) { options = options || {}; - spec = spec || {}; + if (!options.type) + throw new Error('No resource type provided to OKResource') + if (!options.schema) + throw new Error('No schema provided to OKResource'); + var type = options.type; + var schema = options.schema; // All resources have the same default CRUD endpoint var viewClass = options.endpoint || OKRestEndpoint; // Id determines specific resource referenced. @@ -22,14 +25,12 @@ function createResourceClass(name, spec, options) { */ function OKResource(options) { if (!(this instanceof OKResource)) return new OKResource(options); + if (!options.db) + throw new Error('No DB provided to OKResource'); options = options || {}; this.name = name; - if (!name) - throw new Error('No resource type provided to resource!') - var db = this._db = options.db; - if (!db) - throw new Error('No DB provided to resource!'); - this._validator = compileValidator(spec); + this._db = options.db; + this._schema = schema; } /** @@ -40,23 +41,17 @@ function createResourceClass(name, spec, options) { return viewClass(this, options); }; - // OKResource.prototype.get = function() { - // return this._query(); - // }; + OKResource.prototype.assertValid = function(data) { + this._schema.assertValid(data); + } // Expose the resource type on the class constructor - OKResource.type = name; + Object.defineProperty(OKResource, 'type', { + value: type, + writable: false + }); return OKResource; } -/** - * Compiles our schema spec into a schema validator function - */ -function compileValidator(spec) { - // Skip validation for now - var schema = joi.any(); - return schema.validate.bind(schema); -} - module.exports = createResourceClass; diff --git a/app/node_modules/okresource/package.json b/app/node_modules/okresource/package.json index 12fcd26..43824ed 100644 --- a/app/node_modules/okresource/package.json +++ b/app/node_modules/okresource/package.json @@ -7,9 +7,5 @@ "test": "echo \"Error: no test specified\" && exit 1" }, "author": "OKFocus", - "license": "None", - "dependencies": { - "joi": "^6.0.8", - "q": "^1.2.0" - } + "license": "None" } |
