Ghost/core/server/services
Kevin Ansfield 717543835c
Added email analytics service (#12393)
no issue

- added `EmailAnalyticsService`
  - `.fetchAll()` grabs and processes all available events
  - `.fetchLatest()` grabs and processes all events since the last seen event timestamp
  - `EventProcessor` passed event objects and updates `email_recipients` or `members` records depending on the event being analytics or list hygiene
    - always returns a `EventProcessingResult` instance so that progress can be tracked and merged across individual events, batches (pages of events), and total runs
    - adds email_id and member_id to the returned result where appropriate so that the stats aggregator can limit processing to data that has changed
    - sets `email_recipients.{delivered_at, opened_at, failed_at}` for analytics events
    - sets `members.subscribed = false` for permanent failure/unsubscribed/complained list hygiene events
  - `StatsAggregator` takes an `EventProcessingResult`-like object containing arrays of email ids and member ids on which to aggregate statistics.
  - jobs for `fetch-latest` and `fetch-all` ready for use with the JobsService
- added `initialiseRecurringJobs()` function to Ghost bootup procedure that schedules the email analytics "fetch latest" job to run every minute
2020-11-26 13:09:38 +00:00
..
adapter-manager Moved config from server to shared (#11850) 2020-05-27 18:47:53 +01:00
auth Disabled Personal Tokens of inactive/locked users 2020-11-20 09:53:18 +01:00
bulk-email Fixed bulk email only having 'bulk-email' tag in certain circumstances 2020-11-23 18:34:17 +00:00
email-analytics Added email analytics service (#12393) 2020-11-26 13:09:38 +00:00
invitations 🐛 Fixed error caused by accepting invitation with existing email (#12172) 2020-09-09 11:58:53 +12:00
jobs Added job-manager & wired up shutdown and testmode 2020-08-11 21:31:34 +01:00
mail Updated error name check in GhostMailer 2020-07-21 01:08:19 +05:30
mega Fixed error when creating emails when track opens is disabled 2020-11-25 08:08:15 +00:00
members Included all subscriptions in stripeSubscriptions (#12414) 2020-11-25 10:39:07 +00:00
permissions Fixed "no-shadow" linting error in server modules (#12287) 2020-10-20 12:02:56 +13:00
settings Fixed settings reinit to only emit changed settings events (#12184) 2020-09-23 14:35:03 +01:00
webhooks Fixed "no-shadow" linting error in server modules (#12287) 2020-10-20 12:02:56 +13:00
labs.js Moved core/server/lib/common/logging to core/shared/logging (#11857) 2020-05-28 19:30:23 +01:00
slack.js Moved core/server/lib/common/logging to core/shared/logging (#11857) 2020-05-28 19:30:23 +01:00
xmlrpc.js Moved core/server/lib/common/logging to core/shared/logging (#11857) 2020-05-28 19:30:23 +01:00