rittenhop-ghost/versions/5.94.2/core/server/models/email-batch.js

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