mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-01-06 22:40:14 -05:00
Added customQuery to handle subscribed aggregates
refs https://github.com/TryGhost/Ghost/issues/12602 In order to build up a list of un/subscribes over time we have to use the customQuery functionality to run SQL aggregates - this is "hidden" behind an option, so that we can find{All,Page} as usual.
This commit is contained in:
parent
3dbc7ef5b4
commit
1dc6fdcd66
1 changed files with 17 additions and 1 deletions
|
@ -1,6 +1,22 @@
|
|||
const errors = require('@tryghost/errors');
|
||||
const ghostBookshelf = require('./base');
|
||||
|
||||
const MemberSubscribeEvent = ghostBookshelf.Model.extend({tableName: 'members_subscribe_events'}, {
|
||||
const MemberSubscribeEvent = ghostBookshelf.Model.extend({
|
||||
tableName: 'members_subscribe_events',
|
||||
customQuery(qb, options) {
|
||||
if (options.aggregateSubscriptionDeltas) {
|
||||
if (options.limit || options.filter) {
|
||||
throw new errors.IncorrectUsageError('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)`);
|
||||
}
|
||||
}
|
||||
}, {
|
||||
async edit() {
|
||||
throw new errors.IncorrectUsageError('Cannot edit MemberSubscribeEvent');
|
||||
},
|
||||
|
|
Loading…
Reference in a new issue