index.js
757 Bytes
'use strict'
let uuid = require('uuid')
let merge = require('lodash.merge')
let result = require('lodash.result')
module.exports = (bookshelf, settings) => {
// Add default settings
settings = merge({
type: 'v4'
}, settings)
// Store prototypes for later
let modelPrototype = bookshelf.Model.prototype
// Extends the default model class
bookshelf.Model = bookshelf.Model.extend({
initialize: function (attributes, options) {
modelPrototype.initialize.call(this)
if (this.uuid) {
this.defaults = merge({
[this.idAttribute]: typeof settings.type === 'string'
? uuid[settings.type]() : settings.type.call(this, attributes, options)
}, result(this, 'defaults'))
}
}
})
}