Skip to content

Commit

Permalink
Updated packages
Browse files Browse the repository at this point in the history
  • Loading branch information
bsiddiqui committed Feb 26, 2020
1 parent c9109f6 commit a310802
Show file tree
Hide file tree
Showing 5 changed files with 4,551 additions and 30 deletions.
37 changes: 18 additions & 19 deletions lib/index.js
@@ -1,4 +1,3 @@
var extend = require('xtend')
var Joi = require('joi')
var difference = require('lodash.difference')

Expand Down Expand Up @@ -66,12 +65,12 @@ module.exports = function modelBase (bookshelf, params) {

/**
* Select a collection based on a query
* @param {Object} [query]
* @param {Object} [filter]
* @param {Object} [options] Options used of model.fetchAll
* @return {Promise(bookshelf.Collection)} Bookshelf Collection of Models
*/
findAll: function (filter, options) {
return this.forge().where(extend({}, filter)).fetchAll(options)
return this.forge().where(filter || {}).fetchAll(options)
},

/**
Expand All @@ -91,8 +90,8 @@ module.exports = function modelBase (bookshelf, params) {
* @param {Boolean} [options.require=false]
* @return {Promise(bookshelf.Model)}
*/
findOne: function (query, options) {
options = extend({ require: true }, options)
findOne: function (query, options = {}) {
options = Object.assign({ require: true }, options)
return this.forge(query).fetch(options)
},

Expand All @@ -116,8 +115,8 @@ module.exports = function modelBase (bookshelf, params) {
* @param {Boolean} [options.require=true]
* @return {Promise(bookshelf.Model)}
*/
update: function (data, options) {
options = extend({ patch: true, require: true }, options)
update: function (data, options = {}) {
options = Object.assign({ patch: true, require: true }, options)
return this.forge({ [this.prototype.idAttribute]: options.id }).fetch(options)
.then(function (model) {
return model ? model.save(data, options) : undefined
Expand All @@ -128,11 +127,11 @@ module.exports = function modelBase (bookshelf, params) {
* Destroy a model by id
* @param {Object} options
* @param {String|Integer} options.id The id of the model to destroy
* @param {Boolean} [options.require=false]
* @param {Boolean} [options.require=true]
* @return {Promise(bookshelf.Model)} empty model
*/
destroy: function (options) {
options = extend({ require: true }, options)
destroy: function (options = {}) {
options = Object.assign({ require: true }, options)
return this.forge({ [this.prototype.idAttribute]: options.id })
.destroy(options)
},
Expand All @@ -144,12 +143,12 @@ module.exports = function modelBase (bookshelf, params) {
* @param {Object} [options.defaults] Defaults to apply to a create
* @return {Promise(bookshelf.Model)} single Model
*/
findOrCreate: function (data, options) {
return this.findOne(data, extend(options, { require: false }))
findOrCreate: function (data, options = {}) {
return this.findOne(data, Object.assign({}, options, { require: false }))
.bind(this)
.then(function (model) {
var defaults = options && options.defaults
return model || this.create(extend(defaults, data), options)
var defaults = (options && options.defaults) || {}
return model || this.create(Object.assign(defaults, data), options)
})
},

Expand All @@ -159,18 +158,18 @@ module.exports = function modelBase (bookshelf, params) {
* @param {Object} updateData Data for update
* @param {Object} [options] Options for model.save
*/
upsert: function (selectData, updateData, options) {
return this.findOne(selectData, extend(options, { require: false }))
upsert: function (selectData, updateData, options = {}) {
return this.findOne(selectData, Object.assign({}, options, { require: false }))
.bind(this)
.then(function (model) {
return model
? model.save(
updateData,
extend({ patch: true, method: 'update' }, options)
Object.assign({ patch: true, method: 'update' }, options)
)
: this.create(
extend(selectData, updateData),
extend(options, { method: 'insert' })
Object.assign({}, selectData, updateData),
Object.assign({}, options, { method: 'insert' })
)
})
}
Expand Down

0 comments on commit a310802

Please sign in to comment.