ghost
Version:
The professional publishing platform
39 lines (33 loc) • 1.18 kB
JavaScript
const ghostBookshelf = require('./base');
const Benefit = ghostBookshelf.Model.extend({
tableName: 'benefits',
async onSaving(model, attr, options) {
ghostBookshelf.Model.prototype.onSaving.call(this, model, attr, options);
// Make sure name is trimmed of extra spaces
let name = this.get('name') && this.get('name').trim();
this.set('name', name);
if (this.hasChanged('slug') || (!this.get('slug') && this.get('name'))) {
// Pass the new slug through the generator to strip illegal characters, detect duplicates
const slug = await ghostBookshelf.Model.generateSlug(
Benefit,
this.get('slug') || this.get('name'),
{transacting: options.transacting}
);
this.set({slug});
}
}
}, {
orderDefaultOptions() {
return {
name: 'ASC',
created_at: 'DESC'
};
}
});
const Benefits = ghostBookshelf.Collection.extend({
model: Benefit
});
module.exports = {
Benefit: ghostBookshelf.model('Benefit', Benefit),
Benefits: ghostBookshelf.collection('Benefits', Benefits)
};