0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-10 23:18:42 -05:00

Added initial Offers API

refs https://github.com/TryGhost/Team/issues/1083

This is a WIP for the Offers API so that Admin development can begin to
use it.
This commit is contained in:
Fabien O'Carroll 2021-10-05 13:19:23 +02:00 committed by Fabien 'egg' O'Carroll
parent 561ef348c9
commit ff0b1a61b3
3 changed files with 59 additions and 0 deletions

View file

@ -85,6 +85,10 @@ module.exports = {
return shared.pipeline(require('./members'), localUtils);
},
get offers() {
return shared.pipeline(require('./offers'), localUtils);
},
get products() {
return shared.pipeline(require('./products'), localUtils);
},

View file

@ -0,0 +1,50 @@
const offersService = require('../../services/offers');
module.exports = {
docName: 'offers',
browse: {
permissions: true,
async query(frame) {
const offers = await offersService.api.listOffers();
frame.response = {
offers
};
}
},
read: {
data: ['id'],
permissions: true,
async query(frame) {
const offer = await offersService.api.getOffer(frame.data);
frame.response = {
offers: [offer]
};
}
},
edit: {
options: ['id'],
permissions: true,
async query(frame) {
const offer = await offersService.api.updateOffer({
...frame.data.offers[0],
id: frame.options.id
});
frame.response = {
offers: [offer]
};
}
},
add: {
permissions: true,
async query(frame) {
const offer = await offersService.api.createOffer(frame.data.offers[0]);
frame.response = {
offers: [offer]
};
}
}
};

View file

@ -100,6 +100,11 @@ module.exports = function apiRoutes() {
router.del('/members', mw.authAdminApi, http(api.members.bulkDestroy));
router.put('/members/bulk', mw.authAdminApi, http(api.members.bulkEdit));
router.get('/offers', labs.enabledMiddleware('offers'), mw.authAdminApi, http(api.offers.browse));
router.post('/offers', labs.enabledMiddleware('offers'), mw.authAdminApi, http(api.offers.add));
router.get('/offers/:id', labs.enabledMiddleware('offers'), mw.authAdminApi, http(api.offers.read));
router.put('/offers/:id', labs.enabledMiddleware('offers'), mw.authAdminApi, http(api.offers.edit));
router.get('/members/stats/count', mw.authAdminApi, http(api.members.memberStats));
router.get('/members/stats/mrr', mw.authAdminApi, http(api.members.mrrStats));
router.get('/members/stats/subscribers', mw.authAdminApi, http(api.members.subscriberStats));