44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
const ghostBookshelf = require('./base');
|
|
|
|
const EmailBatch = ghostBookshelf.Model.extend({
|
|
tableName: 'email_batches',
|
|
|
|
defaults() {
|
|
return {
|
|
status: 'pending'
|
|
};
|
|
},
|
|
|
|
email() {
|
|
return this.belongsTo('Email', 'email_id');
|
|
},
|
|
recipients() {
|
|
return this.hasMany('EmailRecipient', 'batch_id');
|
|
},
|
|
members() {
|
|
return this.belongsToMany('Member', 'email_recipients', 'batch_id', 'member_id');
|
|
}
|
|
}, {
|
|
countRelations() {
|
|
return {
|
|
recipients(modelOrCollection) {
|
|
modelOrCollection.query('columns', 'email_batches.*', (qb) => {
|
|
qb.count('email_recipients.id')
|
|
.from('email_recipients')
|
|
.whereRaw('email_batches.id = email_recipients.batch_id')
|
|
.as('count__recipients');
|
|
});
|
|
}
|
|
};
|
|
}
|
|
});
|
|
|
|
const EmailBatches = ghostBookshelf.Collection.extend({
|
|
model: EmailBatch
|
|
});
|
|
|
|
module.exports = {
|
|
EmailBatch: ghostBookshelf.model('EmailBatch', EmailBatch),
|
|
EmailBatches: ghostBookshelf.collection('EmailBatches', EmailBatches)
|
|
};
|