mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-24 11:22:19 +03:00
0620ff6ae0
refs https://github.com/TryGhost/Ghost/issues/12633 Adds new `browse` endpoint for emails that allows Admin to check performance of newsletters over time and show stats on dashboard as primary usecase
75 lines
2.0 KiB
JavaScript
75 lines
2.0 KiB
JavaScript
const models = require('../../models');
|
|
const {i18n} = require('../../lib/common');
|
|
const errors = require('@tryghost/errors');
|
|
const megaService = require('../../services/mega');
|
|
|
|
module.exports = {
|
|
docName: 'emails',
|
|
|
|
browse: {
|
|
options: [
|
|
'limit',
|
|
'fields',
|
|
'filter',
|
|
'order',
|
|
'page'
|
|
],
|
|
permissions: true,
|
|
async query(frame) {
|
|
return await models.Email.findPage(frame.options);
|
|
}
|
|
},
|
|
|
|
read: {
|
|
options: [
|
|
'fields'
|
|
],
|
|
validation: {
|
|
options: {
|
|
fields: ['html', 'plaintext', 'subject']
|
|
}
|
|
},
|
|
data: [
|
|
'id'
|
|
],
|
|
permissions: true,
|
|
query(frame) {
|
|
return models.Email.findOne(frame.data, frame.options)
|
|
.then((model) => {
|
|
if (!model) {
|
|
throw new errors.NotFoundError({
|
|
message: i18n.t('errors.models.email.emailNotFound')
|
|
});
|
|
}
|
|
|
|
return model;
|
|
});
|
|
}
|
|
},
|
|
|
|
retry: {
|
|
data: [
|
|
'id'
|
|
],
|
|
permissions: true,
|
|
query(frame) {
|
|
return models.Email.findOne(frame.data, frame.options)
|
|
.then(async (model) => {
|
|
if (!model) {
|
|
throw new errors.NotFoundError({
|
|
message: i18n.t('errors.models.email.emailNotFound')
|
|
});
|
|
}
|
|
|
|
if (model.get('status') !== 'failed') {
|
|
throw new errors.IncorrectUsageError({
|
|
message: i18n.t('errors.models.email.retryNotAllowed')
|
|
});
|
|
}
|
|
|
|
return await megaService.mega.retryFailedEmail(model);
|
|
});
|
|
}
|
|
}
|
|
};
|