mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-25 03:44:29 +03:00
Added MemberPaymentEvent model
refs https://github.com/TryGhost/Ghost/issues/12602 - Adds the aggregatePaymentVolume option to the `findAll` method, allowing us to calculate volume over time
This commit is contained in:
parent
1af6be63f0
commit
a8ee271336
@ -29,6 +29,7 @@ const models = [
|
||||
'mobiledoc-revision',
|
||||
'member',
|
||||
'member-subscribe-event',
|
||||
'member-payment-event',
|
||||
'member-status-event',
|
||||
'posts-meta',
|
||||
'member-stripe-customer',
|
||||
|
47
core/server/models/member-payment-event.js
Normal file
47
core/server/models/member-payment-event.js
Normal file
@ -0,0 +1,47 @@
|
||||
const errors = require('@tryghost/errors');
|
||||
const ghostBookshelf = require('./base');
|
||||
|
||||
const MemberPaymentEvent = ghostBookshelf.Model.extend({
|
||||
tableName: 'members_payment_events',
|
||||
customQuery(qb, options) {
|
||||
if (options.aggregatePaymentVolume) {
|
||||
if (options.limit || options.filter) {
|
||||
throw new errors.IncorrectUsageError('aggregatePaymentVolume 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(amount) as gross_volume'))
|
||||
.select('currency')
|
||||
.groupByRaw('currency, DATE(created_at)')
|
||||
.orderByRaw('DATE(created_at)');
|
||||
}
|
||||
}
|
||||
}, {
|
||||
permittedOptions(methodName) {
|
||||
const options = ghostBookshelf.Model.permittedOptions.call(this, methodName);
|
||||
|
||||
if (methodName === 'findAll') {
|
||||
return options.concat('aggregatePaymentVolume');
|
||||
}
|
||||
|
||||
return options;
|
||||
},
|
||||
async edit() {
|
||||
throw new errors.IncorrectUsageError('Cannot edit MemberPaymentEvent');
|
||||
},
|
||||
|
||||
async destroy() {
|
||||
throw new errors.IncorrectUsageError('Cannot destroy MemberPaymentEvent');
|
||||
}
|
||||
});
|
||||
|
||||
const MemberPaymentEvents = ghostBookshelf.Collection.extend({
|
||||
model: MemberPaymentEvent
|
||||
});
|
||||
|
||||
module.exports = {
|
||||
MemberPaymentEvent: ghostBookshelf.model('MemberPaymentEvent', MemberPaymentEvent),
|
||||
MemberPaymentEvents: ghostBookshelf.collection('MemberPaymentEvents', MemberPaymentEvents)
|
||||
};
|
||||
|
@ -170,6 +170,7 @@ function createApiInstance(config) {
|
||||
StripeCustomerSubscription: models.StripeCustomerSubscription,
|
||||
Member: models.Member,
|
||||
MemberSubscribeEvent: models.MemberSubscribeEvent,
|
||||
MemberPaymentEvent: models.MemberPaymentEvent,
|
||||
MemberStatusEvent: models.MemberStatusEvent
|
||||
},
|
||||
logger: logging
|
||||
|
Loading…
Reference in New Issue
Block a user