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)
|
||
|
};
|