From 37ef0582e6489d6345e3f8544bacbbf6e410b07b Mon Sep 17 00:00:00 2001 From: "Fabien \"egg\" O'Carroll" Date: Tue, 16 Aug 2022 18:35:11 -0400 Subject: [PATCH] Added members_subscription_created_events table & model refs https://github.com/TryGhost/Team/issues/1803 --- .../core/server/data/exporter/table-lists.js | 1 + ...5-add-subscription-created-events-table.js | 11 +++++++ ghost/core/core/server/data/schema/schema.js | 9 ++++++ .../models/subscription-created-event.js | 30 +++++++++++++++++++ .../integration/exporter/exporter.test.js | 2 +- .../unit/server/data/schema/integrity.test.js | 2 +- 6 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 ghost/core/core/server/data/migrations/versions/5.10/2022-08-16-14-25-add-subscription-created-events-table.js create mode 100644 ghost/core/core/server/models/subscription-created-event.js diff --git a/ghost/core/core/server/data/exporter/table-lists.js b/ghost/core/core/server/data/exporter/table-lists.js index 6e031fcce9..9e977ab20f 100644 --- a/ghost/core/core/server/data/exporter/table-lists.js +++ b/ghost/core/core/server/data/exporter/table-lists.js @@ -32,6 +32,7 @@ const BACKUP_TABLES = [ 'members_subscribe_events', 'members_product_events', 'members_created_events', + 'members_subscription_created_events', 'members_newsletters', 'comments', 'comment_likes', diff --git a/ghost/core/core/server/data/migrations/versions/5.10/2022-08-16-14-25-add-subscription-created-events-table.js b/ghost/core/core/server/data/migrations/versions/5.10/2022-08-16-14-25-add-subscription-created-events-table.js new file mode 100644 index 0000000000..83c91dbf73 --- /dev/null +++ b/ghost/core/core/server/data/migrations/versions/5.10/2022-08-16-14-25-add-subscription-created-events-table.js @@ -0,0 +1,11 @@ +const {addTable} = require('../../utils'); + +module.exports = addTable('members_subscription_created_events', { + id: {type: 'string', maxlength: 24, nullable: false, primary: true}, + created_at: {type: 'dateTime', nullable: false}, + member_id: {type: 'string', maxlength: 24, nullable: false, references: 'members.id', cascadeDelete: true}, + subscription_id: {type: 'string', maxlength: 24, nullable: false, references: 'members_stripe_customers_subscriptions.id'}, + attribution_id: {type: 'string', maxlength: 24, nullable: true}, + attribution_type: {type: 'string', maxlength: 50, nullable: true}, + attribution_url: {type: 'string', maxlength: 2000, nullable: true} +}); diff --git a/ghost/core/core/server/data/schema/schema.js b/ghost/core/core/server/data/schema/schema.js index 7f2e1882d0..02f8daa6e6 100644 --- a/ghost/core/core/server/data/schema/schema.js +++ b/ghost/core/core/server/data/schema/schema.js @@ -603,6 +603,15 @@ module.exports = { plan_amount: {type: 'integer', nullable: false}, plan_currency: {type: 'string', maxLength: 3, nullable: false} }, + members_subscription_created_events: { + id: {type: 'string', maxlength: 24, nullable: false, primary: true}, + created_at: {type: 'dateTime', nullable: false}, + member_id: {type: 'string', maxlength: 24, nullable: false, references: 'members.id', cascadeDelete: true}, + subscription_id: {type: 'string', maxlength: 24, nullable: false, references: 'members_stripe_customers_subscriptions.id'}, + attribution_id: {type: 'string', maxlength: 24, nullable: true}, + attribution_type: {type: 'string', maxlength: 50, nullable: true}, + attribution_url: {type: 'string', maxlength: 2000, nullable: true} + }, offer_redemptions: { id: {type: 'string', maxlength: 24, nullable: false, primary: true}, offer_id: {type: 'string', maxlength: 24, nullable: false, references: 'offers.id', cascadeDelete: true}, diff --git a/ghost/core/core/server/models/subscription-created-event.js b/ghost/core/core/server/models/subscription-created-event.js new file mode 100644 index 0000000000..a2f904d090 --- /dev/null +++ b/ghost/core/core/server/models/subscription-created-event.js @@ -0,0 +1,30 @@ +const errors = require('@tryghost/errors'); +const ghostBookshelf = require('./base'); + +const SubscriptionCreatedEvent = ghostBookshelf.Model.extend({ + tableName: 'members_subscription_created_events', + + member() { + return this.belongsTo('Member', 'member_id', 'id'); + }, + + subscription() { + return this.belongsTo('StripeCustomerSubscription', 'subscription_id', 'id'); + }, + + attribution() { + return this.belongsTo('Post', 'attribution_id', 'id'); + } +}, { + async edit() { + throw new errors.IncorrectUsageError({message: 'Cannot edit SubscriptionCreatedEvent'}); + }, + + async destroy() { + throw new errors.IncorrectUsageError({message: 'Cannot destroy SubscriptionCreatedEvent'}); + } +}); + +module.exports = { + SubscriptionCreatedEvent: ghostBookshelf.model('SubscriptionCreatedEvent', SubscriptionCreatedEvent) +}; diff --git a/ghost/core/test/integration/exporter/exporter.test.js b/ghost/core/test/integration/exporter/exporter.test.js index 2e34b3d21e..7f96e8fc44 100644 --- a/ghost/core/test/integration/exporter/exporter.test.js +++ b/ghost/core/test/integration/exporter/exporter.test.js @@ -51,7 +51,7 @@ describe('Exporter', function () { 'members_stripe_customers_subscriptions', 'members_subscribe_events', 'members_created_events', - 'subscription_created_events', + 'members_subscription_created_events', 'migrations', 'migrations_lock', 'mobiledoc_revisions', diff --git a/ghost/core/test/unit/server/data/schema/integrity.test.js b/ghost/core/test/unit/server/data/schema/integrity.test.js index 84bd93e5c1..6a414f5cb3 100644 --- a/ghost/core/test/unit/server/data/schema/integrity.test.js +++ b/ghost/core/test/unit/server/data/schema/integrity.test.js @@ -35,7 +35,7 @@ const validateRouteSettings = require('../../../../../core/server/services/route */ describe('DB version integrity', function () { // Only these variables should need updating - const currentSchemaHash = 'f5f7bc63bf9484bf50a0e554604802b3'; + const currentSchemaHash = '36796d1729450e8d2184bb5360067919'; const currentFixturesHash = '0ae1887dd0b42508be946bdbd20d41c8'; const currentSettingsHash = 'd54210758b7054e2174fd34aa2320ad7'; const currentRoutesHash = '3d180d52c663d173a6be791ef411ed01';