cmbf-hapi-restmodel
Advanced tools
Comparing version 0.2.1 to 0.3.0
@@ -71,11 +71,19 @@ var Joi = require('joi'), | ||
static list() { | ||
log.debug("List "+BaseModel.name); | ||
static list(options) { | ||
log.debug("list %s", BaseModel.name); | ||
options = options || {}; | ||
var coll = BaseModel.collection; | ||
var cursor = coll.find(); | ||
return P.promisify(cursor.toArray, cursor)(); | ||
var cursor = coll.find(options.filter); | ||
return P.promisify(cursor.toArray, cursor)().then(function(results) { | ||
if(options.wrap) { | ||
return P.map(results, function(r){ return BaseModel.wrap(r)}); | ||
} | ||
else { | ||
return results; | ||
} | ||
}); | ||
} | ||
static show(id) { | ||
log.debug("show "+BaseModel.name, id); | ||
log.debug("show %s ", BaseModel.name, id); | ||
var _this = this; | ||
@@ -88,4 +96,15 @@ var coll = BaseModel.collection; | ||
static create(data) { | ||
var val = Joi.validate(data || {}, BaseModel.Schema); | ||
static wrap(data) { | ||
if(data instanceof BaseModel) | ||
return BaseModel.create(data); | ||
else | ||
return data; | ||
} | ||
save(data, options) { | ||
data = data || this; | ||
log.debug("Save", data.id || this.id); | ||
options = options || {upsert: false}; | ||
var coll = BaseModel.collection; | ||
var val = Joi.validate(data, BaseModel.Schema); | ||
if(val.error) { | ||
@@ -95,21 +114,16 @@ throw val.error; | ||
else { | ||
return new BaseModel(val.value); | ||
// Update our internal values | ||
_.assign(this, val.value); | ||
return P.promisify(coll.update, coll)({id: this.id}, {$set: _.omit(val.value, 'id') }, { multi: false, upsert: options.upsert}); | ||
} | ||
} | ||
static wrap(data) { | ||
if(typeof data !== BaseModel.name) | ||
return BaseModel(data); | ||
else | ||
return data; | ||
} | ||
save(data) { | ||
log.debug("Save "+BaseModel.name, this.id); | ||
static remove(id) { | ||
log.debug("Remove", id); | ||
var coll = BaseModel.collection; | ||
return P.promisify(coll.update, coll)({id: this.id}, {$set: data }, { multi: false, upsert: true}); | ||
return P.promisify(coll.removeOne, coll)({id: id}); | ||
} | ||
remove() { | ||
log.debug("Remove "+BaseModel.name, this.id); | ||
log.debug("Remove", this.id); | ||
var coll = BaseModel.collection; | ||
@@ -119,2 +133,19 @@ return P.promisify(coll.removeOne, coll)({id: this.id}); | ||
toJSON() { | ||
var val = Joi.validate(this, BaseModel.Schema); | ||
if(val.error) { | ||
throw val.error; | ||
} | ||
else { | ||
return val.value; | ||
} | ||
}; | ||
isUnique() { | ||
var coll = BaseModel.collection; | ||
return P.promisify(coll.findOne, coll)({id: this.id}).then(function(existing) { | ||
return !existing; | ||
}); | ||
}; | ||
} | ||
@@ -121,0 +152,0 @@ |
@@ -1,4 +0,2 @@ | ||
var Calibrate = require('calibrate'), | ||
Boom = require('boom'), | ||
P = require('bluebird'); | ||
var Calibrate = require('calibrate'); | ||
@@ -5,0 +3,0 @@ module.exports = function(server, config, log) { |
@@ -19,2 +19,4 @@ var P = require('bluebird'), | ||
log.debug("Generating routes for model %s", Model); | ||
var endpoint = "/"; | ||
@@ -21,0 +23,0 @@ if(Model.endpoint_prefix) { |
{ | ||
"name": "cmbf-hapi-restmodel", | ||
"version": "0.2.1", | ||
"version": "0.3.0", | ||
"dependencies": { | ||
@@ -5,0 +5,0 @@ "bluebird": "^3.0.6", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
28069
424