diff --git a/ghost/core/core/server/services/email-analytics/EmailAnalyticsServiceWrapper.js b/ghost/core/core/server/services/email-analytics/EmailAnalyticsServiceWrapper.js index 6fc957189b..bb78c7d5ab 100644 --- a/ghost/core/core/server/services/email-analytics/EmailAnalyticsServiceWrapper.js +++ b/ghost/core/core/server/services/email-analytics/EmailAnalyticsServiceWrapper.js @@ -1,6 +1,4 @@ const logging = require('@tryghost/logging'); -const JobManager = require('../../services/jobs'); -const path = require('path'); class EmailAnalyticsServiceWrapper { init() { @@ -13,7 +11,6 @@ class EmailAnalyticsServiceWrapper { const MailgunProvider = require('@tryghost/email-analytics-provider-mailgun'); const {EmailRecipientFailure, EmailSpamComplaintEvent, Email} = require('../../models'); const StartEmailAnalyticsJobEvent = require('./events/StartEmailAnalyticsJobEvent'); - const {MemberEmailAnalyticsUpdateEvent} = require('@tryghost/member-events'); const domainEvents = require('@tryghost/domain-events'); const config = require('../../../shared/config'); const settings = require('../../../shared/settings-cache'); @@ -62,20 +59,6 @@ class EmailAnalyticsServiceWrapper { domainEvents.subscribe(StartEmailAnalyticsJobEvent, async () => { await this.startFetch(); }); - - domainEvents.subscribe(MemberEmailAnalyticsUpdateEvent, async (event) => { - const memberId = event.data.memberId; - await JobManager.addQueuedJob({ - name: `update-member-email-analytics-${memberId}`, - metadata: { - job: path.resolve(__dirname, 'jobs/update-member-email-analytics'), - name: 'update-member-email-analytics', - data: { - memberId - } - } - }); - }); } async fetchLatestOpenedEvents({maxEvents} = {maxEvents: Infinity}) { diff --git a/ghost/core/core/server/services/email-analytics/jobs/update-member-email-analytics/index.js b/ghost/core/core/server/services/email-analytics/jobs/update-member-email-analytics/index.js deleted file mode 100644 index 843919cc1c..0000000000 --- a/ghost/core/core/server/services/email-analytics/jobs/update-member-email-analytics/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const queries = require('../../lib/queries'); - -/** - * Updates email analytics for a specific member - * - * @param {Object} options - The options object - * @param {string} options.memberId - The ID of the member to update analytics for - * @returns {Promise} The result of the aggregation query (1/0) - */ -module.exports = async function updateMemberEmailAnalytics({memberId}) { - const result = await queries.aggregateMemberStats(memberId); - return result; -}; \ No newline at end of file diff --git a/ghost/email-analytics-service/lib/EmailAnalyticsService.js b/ghost/email-analytics-service/lib/EmailAnalyticsService.js index 91518eb9f6..b538b8876e 100644 --- a/ghost/email-analytics-service/lib/EmailAnalyticsService.js +++ b/ghost/email-analytics-service/lib/EmailAnalyticsService.js @@ -1,7 +1,6 @@ const EventProcessingResult = require('./EventProcessingResult'); const logging = require('@tryghost/logging'); const errors = require('@tryghost/errors'); -const {MemberEmailAnalyticsUpdateEvent} = require('@tryghost/member-events'); /** * @typedef {import('@tryghost/email-service').EmailEventProcessor} EmailEventProcessor @@ -525,14 +524,8 @@ module.exports = class EmailAnalyticsService { // @ts-expect-error const memberMetric = this.prometheusClient?.getMetric('email_analytics_aggregate_member_stats_count'); for (const memberId of memberIds) { - if (this.config?.get('services:jobs:queue:enabled')) { - // With the queue enabled we will dispatch an event to update the member email analytics on the background queue (multithreaded :)) - // job manager has its own metrics - await this.domainEvents.dispatch(MemberEmailAnalyticsUpdateEvent.create({memberId})); - } else { - await this.aggregateMemberStats(memberId); - memberMetric?.inc(); - } + await this.aggregateMemberStats(memberId); + memberMetric?.inc(); } endTime = Date.now() - startTime; logging.info(`[EmailAnalytics] Aggregating for ${memberIds.length} members took ${endTime}ms`); diff --git a/ghost/member-events/index.js b/ghost/member-events/index.js index 233b401db1..6995e32620 100644 --- a/ghost/member-events/index.js +++ b/ghost/member-events/index.js @@ -12,6 +12,5 @@ module.exports = { SubscriptionActivatedEvent: require('./lib/SubscriptionActivatedEvent'), SubscriptionCancelledEvent: require('./lib/SubscriptionCancelledEvent'), OfferRedemptionEvent: require('./lib/OfferRedemptionEvent'), - MemberLinkClickEvent: require('./lib/MemberLinkClickEvent'), - MemberEmailAnalyticsUpdateEvent: require('./lib/MemberEmailAnalyticsUpdateEvent') + MemberLinkClickEvent: require('./lib/MemberLinkClickEvent') }; diff --git a/ghost/member-events/lib/MemberEmailAnalyticsUpdateEvent.js b/ghost/member-events/lib/MemberEmailAnalyticsUpdateEvent.js deleted file mode 100644 index 21df9f0821..0000000000 --- a/ghost/member-events/lib/MemberEmailAnalyticsUpdateEvent.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * @typedef {object} MemberEmailAnalyticsUpdateEventData - * @prop {string} memberId - */ - -module.exports = class MemberEmailAnalyticsUpdateEvent { - /** - * @param {MemberEmailAnalyticsUpdateEventData} data - * @param {Date} timestamp - */ - constructor(data, timestamp) { - this.data = data; - this.timestamp = timestamp; - } - - /** - * @param {MemberEmailAnalyticsUpdateEventData} data - * @param {Date} [timestamp] - */ - static create(data, timestamp) { - return new MemberEmailAnalyticsUpdateEvent(data, timestamp ?? new Date); - } -}; \ No newline at end of file