bookshelf-modelbase
Advanced tools
Comparing version 2.10.1 to 2.10.2
@@ -24,5 +24,5 @@ var extend = require('xtend') | ||
this.validate = this.validate.isJoi ? | ||
this.validate.keys(baseValidation) : | ||
Joi.object(this.validate).keys(baseValidation) | ||
this.validate = this.validate.isJoi | ||
? this.validate.keys(baseValidation) | ||
: Joi.object(this.validate).keys(baseValidation) | ||
@@ -55,2 +55,3 @@ this.on('saving', this.validateSave) | ||
} else { | ||
this.set(validation.value) | ||
return validation.value | ||
@@ -147,5 +148,3 @@ } | ||
var defaults = options && options.defaults | ||
return model ? | ||
model : | ||
this.create(extend(defaults, data), options) | ||
return model || this.create(extend(defaults, data), options) | ||
}) | ||
@@ -164,5 +163,5 @@ }, | ||
.then(function (model) { | ||
return model ? | ||
model.save(updateData, extend({ patch: true }, options)) : | ||
this.create(extend(selectData, updateData), options) | ||
return model | ||
? model.save(updateData, extend({ patch: true }, options)) | ||
: this.create(extend(selectData, updateData), options) | ||
}) | ||
@@ -169,0 +168,0 @@ } |
{ | ||
"name": "bookshelf-modelbase", | ||
"version": "2.10.1", | ||
"version": "2.10.2", | ||
"description": "Extensible ModelBase for bookshelf-based model layers", | ||
@@ -20,17 +20,17 @@ "main": "./lib", | ||
"dependencies": { | ||
"joi": "^5.0.2", | ||
"lodash.difference": "^3.2.2", | ||
"xtend": "^4.0.0" | ||
"joi": "^9.0.4", | ||
"lodash.difference": "^4.4.0", | ||
"xtend": "^4.0.1" | ||
}, | ||
"devDependencies": { | ||
"bluebird": "^2.10.0", | ||
"bookshelf": "^0.9.1", | ||
"chai": "^1.10.0", | ||
"istanbul": "^0.3.5", | ||
"knex": "^0.7.3", | ||
"mocha": "^2.0.1", | ||
"sinon": "^1.12.1", | ||
"sqlite3": "^3.0.4", | ||
"standard": "5.0.2" | ||
"bluebird": "^3.4.1", | ||
"bookshelf": "^0.10.0", | ||
"knex": "^0.11.9", | ||
"chai": "^3.5.0", | ||
"istanbul": "^0.4.4", | ||
"mocha": "^3.0.0", | ||
"sinon": "^1.17.5", | ||
"sqlite3": "^3.1.4", | ||
"standard": "^7.1.2" | ||
} | ||
} |
@@ -94,3 +94,3 @@ # bookshelf-modelbase | ||
destroy: function (options) { | ||
return this.forge({ id: options.id }) | ||
return this.forge({ [this.prototype.idAttribute]: options.id }) | ||
.destroy(options); | ||
@@ -113,3 +113,3 @@ } | ||
### model.findById | ||
#### model.findById | ||
@@ -173,3 +173,3 @@ ```javascript | ||
}); | ||
return this.forge({ id: options.id }).fetch(options) | ||
return this.forge({ [this.prototype.idAttribute]: options.id }).fetch(options) | ||
.then(function (model) { | ||
@@ -182,1 +182,21 @@ if (model) { | ||
``` | ||
### model.upsert | ||
```js | ||
/** | ||
* Upsert - select a model based on data and update if found, insert if not found | ||
* @param {Object} selectData Data for select | ||
* @param {Object} updateData Data for update | ||
* @param {Object} [options] Options for model.save | ||
* @return {Promise(bookshelf.Model)} edited Model | ||
*/ | ||
upsert: function (selectData, updateData, options) { | ||
return this.findOne(selectData, extend(options, { require: false })) | ||
.bind(this) | ||
.then(function (model) { | ||
return model | ||
? model.save(updateData, extend({ patch: true }, options)) | ||
: this.create(extend(selectData, updateData), options) | ||
}) | ||
} | ||
``` |
@@ -1,4 +0,5 @@ | ||
var knexFile = require(__dirname + '/knexfile') | ||
var path = require('path') | ||
var knexFile = require(path.resolve(__dirname, 'knexfile.js')) | ||
var knex = require('knex')(knexFile['development']) | ||
module.exports = knex |
@@ -53,6 +53,6 @@ /* global describe, before, after, beforeEach, it */ | ||
expect(Model.findOne).to.be.a('function') | ||
expect(bookshelf.Model.findOne).to.be.undefined() | ||
expect(bookshelf.Model.findOne).to.be.an('undefined') | ||
}) | ||
it('should be usable as a bookshelf plugin', function () { | ||
expect(bookshelf.Model.findOne).to.be.undefined() | ||
expect(bookshelf.Model.findOne).to.be.an('undefined') | ||
bookshelf.plugin(function () { | ||
@@ -70,3 +70,4 @@ require('../lib/index').pluggable.apply(null, arguments) | ||
validate: Joi.object().keys({ | ||
first_name: Joi.string().valid('hello', 'goodbye') | ||
first_name: Joi.string().valid('hello', 'goodbye'), | ||
last_name: Joi.string().default('world') | ||
}) | ||
@@ -81,3 +82,4 @@ }) | ||
.then(function (model) { | ||
expect(model).to.exist() | ||
expect(model).to.not.be.an('undefined') | ||
expect(model.get('last_name')).to.be.equal('world') | ||
}) | ||
@@ -249,3 +251,3 @@ }) | ||
expect(model.get('first_name')).to.equal('hello') | ||
expect(model.get('last_name')).to.be.null() | ||
expect(model.get('last_name')).to.be.a('null') | ||
}) | ||
@@ -288,4 +290,4 @@ }) | ||
expect(model.get('id')).to.equal(specimen.id) | ||
expect(model.get('first_name')).to.be.undefined() | ||
expect(model.get('last_name')).to.be.null() | ||
expect(model.get('first_name')).to.be.an('undefined') | ||
expect(model.get('last_name')).to.be.a('null') | ||
}) | ||
@@ -292,0 +294,0 @@ }) |
@@ -0,1 +1,2 @@ | ||
var path = require('path') | ||
// Update with your config settings. | ||
@@ -7,8 +8,8 @@ | ||
connection: { | ||
filename: __dirname + '/dev.sqlite3' | ||
filename: path.resolve(__dirname, 'dev.sqlite3') | ||
}, | ||
migrations: { | ||
directory: __dirname + '/migrations' | ||
directory: path.resolve(__dirname, 'migrations') | ||
} | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
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
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
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
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
24615
474
199
+ Addedhoek@4.3.1(transitive)
+ Addedisemail@2.2.1(transitive)
+ Addeditems@2.2.1(transitive)
+ Addedjoi@9.2.0(transitive)
+ Addedlodash.difference@4.5.0(transitive)
+ Addedtopo@2.1.1(transitive)
- Removedhoek@2.16.3(transitive)
- Removedisemail@1.2.0(transitive)
- Removedjoi@5.1.0(transitive)
- Removedlodash._basedifference@3.0.3(transitive)
- Removedlodash._baseflatten@3.1.4(transitive)
- Removedlodash._baseindexof@3.1.0(transitive)
- Removedlodash._cacheindexof@3.0.2(transitive)
- Removedlodash._createcache@3.1.2(transitive)
- Removedlodash._getnative@3.9.1(transitive)
- Removedlodash.difference@3.2.2(transitive)
- Removedlodash.isarguments@3.1.0(transitive)
- Removedlodash.isarray@3.0.4(transitive)
- Removedlodash.restparam@3.6.1(transitive)
- Removedtopo@1.1.0(transitive)
Updatedjoi@^9.0.4
Updatedlodash.difference@^4.4.0
Updatedxtend@^4.0.1