Ghost/core/server/api/canary/offers.js
Fabien O'Carroll 696d8e3c49 Added 404 handling for edit Offer
no-issue

This was also missing as part of the Offers API.
2021-10-22 16:16:39 +02:00

79 lines
1.8 KiB
JavaScript

const tpl = require('@tryghost/tpl');
const errors = require('@tryghost/errors');
const offersService = require('../../services/offers');
const messages = {
offerNotFound: 'Offer not found.'
};
module.exports = {
docName: 'offers',
browse: {
options: [
'filter'
],
permissions: true,
async query(frame) {
const offers = await offersService.api.listOffers(frame.options);
frame.response = {
offers
};
}
},
read: {
data: ['id'],
permissions: true,
async query(frame) {
const offer = await offersService.api.getOffer(frame.data);
if (!offer) {
throw new errors.NotFoundError({
message: tpl(messages.offerNotFound)
});
}
frame.response = {
offers: [offer]
};
}
},
edit: {
options: ['id'],
permissions: true,
headers: {
cacheInvalidate: true
},
async query(frame) {
const offer = await offersService.api.updateOffer({
...frame.data.offers[0],
id: frame.options.id
});
if (!offer) {
throw new errors.NotFoundError({
message: tpl(messages.offerNotFound)
});
}
frame.response = {
offers: [offer]
};
}
},
add: {
permissions: true,
headers: {
cacheInvalidate: true
},
async query(frame) {
const offer = await offersService.api.createOffer(frame.data.offers[0]);
frame.response = {
offers: [offer]
};
}
}
};