mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-01-07 03:22:21 +03:00
2cf76cb031
refs https://github.com/TryGhost/Team/issues/1478 **Changes** - Added the newsletter relation to subscribe events **Changes in `members-api`** - Compare: https://github.com/TryGhost/Members/compare/%40tryghost/members-api%406.0.0-alpha.0...%40tryghost/members-api%406.0.0 - Makes sure the newsletter relation is returned in the activity feed for susbcribe events (aka newsletter events). **Tests** - Added first test for activity feed to check if the newsletter relation is correctly fetched
61 lines
1.9 KiB
JavaScript
61 lines
1.9 KiB
JavaScript
const errors = require('@tryghost/errors');
|
|
const ghostBookshelf = require('./base');
|
|
|
|
const MemberSubscribeEvent = ghostBookshelf.Model.extend({
|
|
tableName: 'members_subscribe_events',
|
|
|
|
member() {
|
|
return this.belongsTo('Member', 'member_id', 'id');
|
|
},
|
|
|
|
newsletter() {
|
|
return this.belongsTo('Newsletter', 'newsletter_id', 'id');
|
|
},
|
|
|
|
customQuery(qb, options) {
|
|
if (options.aggregateSubscriptionDeltas) {
|
|
if (options.limit || options.filter) {
|
|
throw new errors.IncorrectUsageError({
|
|
message: 'aggregateSubscriptionDeltas does not work when passed a filter or limit'
|
|
});
|
|
}
|
|
const knex = ghostBookshelf.knex;
|
|
return qb.clear('select')
|
|
.select(knex.raw(`DATE(created_at) as date`))
|
|
.select(knex.raw(`SUM(CASE WHEN subscribed THEN 1 ELSE -1 END) as subscribed_delta`))
|
|
.groupByRaw(`DATE(created_at)`)
|
|
.orderByRaw(`DATE(created_at)`);
|
|
}
|
|
}
|
|
}, {
|
|
permittedOptions(methodName) {
|
|
const options = ghostBookshelf.Model.permittedOptions.call(this, methodName);
|
|
|
|
if (methodName === 'findAll') {
|
|
return options.concat('aggregateSubscriptionDeltas');
|
|
}
|
|
|
|
return options;
|
|
},
|
|
async edit() {
|
|
throw new errors.IncorrectUsageError({
|
|
message: 'Cannot edit MemberSubscribeEvent'
|
|
});
|
|
},
|
|
|
|
async destroy() {
|
|
throw new errors.IncorrectUsageError({
|
|
message: 'Cannot destroy MemberSubscribeEvent'
|
|
});
|
|
}
|
|
});
|
|
|
|
const MemberSubscribeEvents = ghostBookshelf.Collection.extend({
|
|
model: MemberSubscribeEvent
|
|
});
|
|
|
|
module.exports = {
|
|
MemberSubscribeEvent: ghostBookshelf.model('MemberSubscribeEvent', MemberSubscribeEvent),
|
|
MemberSubscribeEvents: ghostBookshelf.collection('MemberSubscribeEvents', MemberSubscribeEvents)
|
|
};
|