From 77bea5755ebc8bea5d25a43678d4f98b2798e7aa Mon Sep 17 00:00:00 2001 From: Matt Gibson Date: Thu, 4 Nov 2021 12:51:22 -0400 Subject: [PATCH] Add PlanSponsorshipType to db model --- .../OrganizationSponsorshipsController.cs | 2 +- src/Core/Enums/PlanSponsorshipType.cs | 10 ++++++++++ .../OrganizationSponsorshipRequestModel.cs | 5 +++++ .../Models/Table/OrganizationSponsorship.cs | 2 ++ .../Services/IOrganizationSponsorshipService.cs | 3 ++- .../OrganizationSponsorshipService.cs | 17 ++++++++++++----- .../OrganizationSponsorship_Create.sql | 3 +++ .../OrganizationSponsorship_Update.sql | 2 ++ src/Sql/dbo/Tables/OrganizationSponsorship.sql | 3 ++- .../OrganizationSponsorshipsControllerTests.cs | 8 ++++---- .../OrganizationSponsorshipServiceTests.cs | 8 ++++++-- .../2021-11-02_00_OrganizationSponsorship.sql | 6 ++++++ ...4164838_OrganizationSponsorship.Designer.cs} | 5 ++++- ...> 20211104164838_OrganizationSponsorship.cs} | 1 + .../Migrations/DatabaseContextModelSnapshot.cs | 3 +++ .../2021-11-02_00_OrganizationSponsorship.sql | 3 ++- ...4164532_OrganizationSponsorship.Designer.cs} | 5 ++++- ...> 20211104164532_OrganizationSponsorship.cs} | 1 + .../Migrations/DatabaseContextModelSnapshot.cs | 3 +++ .../2021-11-02_00_OrganizationSponsorship.psql | 3 ++- 20 files changed, 75 insertions(+), 18 deletions(-) create mode 100644 src/Core/Enums/PlanSponsorshipType.cs rename util/MySqlMigrations/Migrations/{20211102213543_OrganizationSponsorship.Designer.cs => 20211104164838_OrganizationSponsorship.Designer.cs} (99%) rename util/MySqlMigrations/Migrations/{20211102213543_OrganizationSponsorship.cs => 20211104164838_OrganizationSponsorship.cs} (97%) rename util/PostgresMigrations/Migrations/{20211102205745_OrganizationSponsorship.Designer.cs => 20211104164532_OrganizationSponsorship.Designer.cs} (99%) rename util/PostgresMigrations/Migrations/{20211102205745_OrganizationSponsorship.cs => 20211104164532_OrganizationSponsorship.cs} (97%) diff --git a/src/Api/Controllers/OrganizationSponsorshipsController.cs b/src/Api/Controllers/OrganizationSponsorshipsController.cs index fde4f938e..74e5feeb4 100644 --- a/src/Api/Controllers/OrganizationSponsorshipsController.cs +++ b/src/Api/Controllers/OrganizationSponsorshipsController.cs @@ -64,7 +64,7 @@ namespace Bit.Api.Controllers throw new BadRequestException("Can only sponsor one organization per Organization User."); } - await _organizationsSponsorshipService.OfferSponsorshipAsync(sponsoringOrg, sponsoringOrgUser, model.sponsoredEmail); + await _organizationsSponsorshipService.OfferSponsorshipAsync(sponsoringOrg, sponsoringOrgUser, model.PlanSponsorshipType, model.sponsoredEmail); } [HttpPost("sponsored/redeem/families-for-enterprise")] diff --git a/src/Core/Enums/PlanSponsorshipType.cs b/src/Core/Enums/PlanSponsorshipType.cs new file mode 100644 index 000000000..59f778e10 --- /dev/null +++ b/src/Core/Enums/PlanSponsorshipType.cs @@ -0,0 +1,10 @@ +using System.ComponentModel.DataAnnotations; + +namespace Bit.Core.Enums +{ + public enum PlanSponsorshipType : byte + { + [Display(Name = "Families For Enterprise")] + FamiliesForEnterprise = 0, + } +} diff --git a/src/Core/Models/Api/Request/Organizations/OrganizationSponsorshipRequestModel.cs b/src/Core/Models/Api/Request/Organizations/OrganizationSponsorshipRequestModel.cs index 1e8c8a981..646b5d212 100644 --- a/src/Core/Models/Api/Request/Organizations/OrganizationSponsorshipRequestModel.cs +++ b/src/Core/Models/Api/Request/Organizations/OrganizationSponsorshipRequestModel.cs @@ -1,13 +1,18 @@ using System; using System.ComponentModel.DataAnnotations; +using Bit.Core.Enums; using Bit.Core.Utilities; namespace Bit.Core.Models.Api.Request { public class OrganizationSponsorshipRequestModel { + [Required] + public PlanSponsorshipType PlanSponsorshipType { get; set; } + [Required] public Guid OrganizationUserId { get; set; } + [Required] [StringLength(256)] [StrictEmailAddress] diff --git a/src/Core/Models/Table/OrganizationSponsorship.cs b/src/Core/Models/Table/OrganizationSponsorship.cs index 7966d8a09..47bded5be 100644 --- a/src/Core/Models/Table/OrganizationSponsorship.cs +++ b/src/Core/Models/Table/OrganizationSponsorship.cs @@ -1,5 +1,6 @@ using System; using System.ComponentModel.DataAnnotations; +using Bit.Core.Enums; using Bit.Core.Utilities; namespace Bit.Core.Models.Table @@ -15,6 +16,7 @@ namespace Bit.Core.Models.Table public Guid? SponsoredOrganizationId { get; set; } [MaxLength(256)] public string OfferedToEmail { get; set; } + public PlanSponsorshipType? PlanSponsorshipType { get; set; } [Required] public bool CloudSponsor { get; set; } public DateTime? LastSyncDate { get; set; } diff --git a/src/Core/Services/IOrganizationSponsorshipService.cs b/src/Core/Services/IOrganizationSponsorshipService.cs index ade55ac98..cd2023f17 100644 --- a/src/Core/Services/IOrganizationSponsorshipService.cs +++ b/src/Core/Services/IOrganizationSponsorshipService.cs @@ -1,4 +1,5 @@ using System.Threading.Tasks; +using Bit.Core.Enums; using Bit.Core.Models.Table; namespace Bit.Core.Services @@ -6,7 +7,7 @@ namespace Bit.Core.Services public interface IOrganizationSponsorshipService { Task ValidateRedemptionTokenAsync(string encryptedToken); - Task OfferSponsorshipAsync(Organization sponsoringOrg, OrganizationUser sponsoringOrgUser, string sponsoredEmail); + Task OfferSponsorshipAsync(Organization sponsoringOrg, OrganizationUser sponsoringOrgUser, PlanSponsorshipType sponsorshipType, string sponsoredEmail); Task SetUpSponsorshipAsync(OrganizationSponsorship sponsorship, Organization sponsoredOrganization); Task RemoveSponsorshipAsync(OrganizationSponsorship sponsorship); } diff --git a/src/Core/Services/Implementations/OrganizationSponsorshipService.cs b/src/Core/Services/Implementations/OrganizationSponsorshipService.cs index b49bbd2f3..2e4984374 100644 --- a/src/Core/Services/Implementations/OrganizationSponsorshipService.cs +++ b/src/Core/Services/Implementations/OrganizationSponsorshipService.cs @@ -1,5 +1,6 @@ using System; using System.Threading.Tasks; +using Bit.Core.Enums; using Bit.Core.Models.Table; using Bit.Core.Repositories; using Microsoft.AspNetCore.DataProtection; @@ -38,25 +39,31 @@ namespace Bit.Core.Services if (dataParts[0].Equals(FamiliesForEnterpriseTokenName)) { - if (!Guid.TryParse(dataParts[1], out Guid sponsorshipId)) + if (!Guid.TryParse(dataParts[1], out Guid sponsorshipId) || + !Enum.TryParse(dataParts[2], true, out var sponsorshipType)) { return false; } var sponsorship = await _organizationSponsorshipRepository.GetByIdAsync(sponsorshipId); - return sponsorship != null; + if (sponsorship == null || sponsorship.PlanSponsorshipType != sponsorshipType) + { + return false; + } + + return true; } return false; } - private string RedemptionToken(Guid sponsorshipId) => + private string RedemptionToken(Guid sponsorshipId, PlanSponsorshipType sponsorshipType) => string.Concat( TokenClearTextPrefix, - _dataProtector.Protect($"{FamiliesForEnterpriseTokenName} {sponsorshipId}") + _dataProtector.Protect($"{FamiliesForEnterpriseTokenName} {sponsorshipId} {sponsorshipType}") ); - public async Task OfferSponsorshipAsync(Organization sponsoringOrg, OrganizationUser sponsoringOrgUser, string sponsoredEmail) + public async Task OfferSponsorshipAsync(Organization sponsoringOrg, OrganizationUser sponsoringOrgUser, PlanSponsorshipType sponsorshipType, string sponsoredEmail) { var sponsorship = new OrganizationSponsorship { diff --git a/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_Create.sql b/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_Create.sql index 93257c3bc..f26e9a35b 100644 --- a/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_Create.sql +++ b/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_Create.sql @@ -5,6 +5,7 @@ CREATE PROCEDURE [dbo].[OrganizationSponsorship_Create] @SponsoringOrganizationUserID UNIQUEIDENTIFIER, @SponsoredOrganizationId UNIQUEIDENTIFIER, @OfferedToEmail NVARCHAR(256), + @PlanSponsorshipType TINYINT, @CloudSponsor BIT, @LastSyncDate DATETIME2 (7), @TimesRenewedWithoutValidation TINYINT, @@ -21,6 +22,7 @@ BEGIN [SponsoringOrganizationUserID], [SponsoredOrganizationId], [OfferedToEmail], + [PlanSponsorshipType], [CloudSponsor], [LastSyncDate], [TimesRenewedWithoutValidation], @@ -34,6 +36,7 @@ BEGIN @SponsoringOrganizationUserID, @SponsoredOrganizationId, @OfferedToEmail, + @PlanSponsorshipType, @CloudSponsor, @LastSyncDate, @TimesRenewedWithoutValidation, diff --git a/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_Update.sql b/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_Update.sql index 364385f54..88ac04856 100644 --- a/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_Update.sql +++ b/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_Update.sql @@ -5,6 +5,7 @@ CREATE PROCEDURE [dbo].[OrganizationSponsorship_Update] @SponsoringOrganizationUserID UNIQUEIDENTIFIER, @SponsoredOrganizationId UNIQUEIDENTIFIER, @OfferedToEmail NVARCHAR(256), + @PlanSponsorshipType TINYINT, @CloudSponsor BIT, @LastSyncDate DATETIME2 (7), @TimesRenewedWithoutValidation TINYINT, @@ -21,6 +22,7 @@ BEGIN [SponsoringOrganizationUserID] = @SponsoringOrganizationUserID, [SponsoredOrganizationId] = @SponsoredOrganizationId, [OfferedToEmail] = @OfferedToEmail, + [PlanSponsorshipType] = @PlanSponsorshipType, [CloudSponsor] = @CloudSponsor, [LastSyncDate] = @LastSyncDate, [TimesRenewedWithoutValidation] = @TimesRenewedWithoutValidation, diff --git a/src/Sql/dbo/Tables/OrganizationSponsorship.sql b/src/Sql/dbo/Tables/OrganizationSponsorship.sql index 2dc3ead15..9467297b8 100644 --- a/src/Sql/dbo/Tables/OrganizationSponsorship.sql +++ b/src/Sql/dbo/Tables/OrganizationSponsorship.sql @@ -2,9 +2,10 @@ CREATE TABLE [dbo].[OrganizationSponsorship] ( [Id] UNIQUEIDENTIFIER NOT NULL, [InstallationId] UNIQUEIDENTIFIER NULL, [SponsoringOrganizationId] UNIQUEIDENTIFIER NOT NULL, - [SponsorginOrganizationUserID] UNIQUEIDENTIFIER NOT NULL, + [SponsoringOrganizationUserID] UNIQUEIDENTIFIER NOT NULL, [SponsoredOrganizationId] UNIQUEIDENTIFIER NULL, [OfferedToEmail] NVARCHAR (256) NULL, + [PlanSponsorshipType] TINYINT NULL, [CloudSponsor] BIT NULL, [LastSyncDate] DATETIME2 (7) NULL, [TimesRenewedWithoutValidation] TINYINT DEFAULT 0, diff --git a/test/Api.Test/Controllers/OrganizationSponsorshipsControllerTests.cs b/test/Api.Test/Controllers/OrganizationSponsorshipsControllerTests.cs index d9dd59e64..2f1434ba9 100644 --- a/test/Api.Test/Controllers/OrganizationSponsorshipsControllerTests.cs +++ b/test/Api.Test/Controllers/OrganizationSponsorshipsControllerTests.cs @@ -44,7 +44,7 @@ namespace Bit.Api.Test.Controllers Assert.Contains("Specified Organization cannot sponsor other organizations.", exception.Message); await sutProvider.GetDependency() .DidNotReceiveWithAnyArgs() - .OfferSponsorshipAsync(default, default, default); + .OfferSponsorshipAsync(default, default, default, default); } public static IEnumerable NonConfirmedOrganizationUsersStatuses => @@ -73,7 +73,7 @@ namespace Bit.Api.Test.Controllers Assert.Contains("Only confirm users can sponsor other organizations.", exception.Message); await sutProvider.GetDependency() .DidNotReceiveWithAnyArgs() - .OfferSponsorshipAsync(default, default, default); + .OfferSponsorshipAsync(default, default, default, default); } [Theory] @@ -96,7 +96,7 @@ namespace Bit.Api.Test.Controllers Assert.Contains("Can only create organization sponsorships for yourself.", exception.Message); await sutProvider.GetDependency() .DidNotReceiveWithAnyArgs() - .OfferSponsorshipAsync(default, default, default); + .OfferSponsorshipAsync(default, default, default, default); } [Theory] @@ -121,7 +121,7 @@ namespace Bit.Api.Test.Controllers Assert.Contains("Can only sponsor one organization per Organization User.", exception.Message); await sutProvider.GetDependency() .DidNotReceiveWithAnyArgs() - .OfferSponsorshipAsync(default, default, default); + .OfferSponsorshipAsync(default, default, default, default); } [Theory] diff --git a/test/Core.Test/Services/OrganizationSponsorshipServiceTests.cs b/test/Core.Test/Services/OrganizationSponsorshipServiceTests.cs index 3588345fa..f91675691 100644 --- a/test/Core.Test/Services/OrganizationSponsorshipServiceTests.cs +++ b/test/Core.Test/Services/OrganizationSponsorshipServiceTests.cs @@ -1,6 +1,7 @@ using System; using System.Linq; using System.Threading.Tasks; +using Bit.Core.Enums; using Bit.Core.Models.Table; using Bit.Core.Repositories; using Bit.Core.Services; @@ -35,7 +36,8 @@ namespace Bit.Core.Test.Services public async Task OfferSponsorship_CreatesSponsorship(Organization sponsoringOrg, OrganizationUser sponsoringOrgUser, string sponsoredEmail, SutProvider sutProvider) { - await sutProvider.Sut.OfferSponsorshipAsync(sponsoringOrg, sponsoringOrgUser, sponsoredEmail); + await sutProvider.Sut.OfferSponsorshipAsync(sponsoringOrg, sponsoringOrgUser, + PlanSponsorshipType.FamiliesForEnterprise, sponsoredEmail); var expectedSponsorship = new OrganizationSponsorship { @@ -64,7 +66,9 @@ namespace Bit.Core.Test.Services return expectedException; }); - var actualException = await Assert.ThrowsAsync(() => sutProvider.Sut.OfferSponsorshipAsync(sponsoringOrg, sponsoringOrgUser, sponsoredEmail)); + var actualException = await Assert.ThrowsAsync(() => + sutProvider.Sut.OfferSponsorshipAsync(sponsoringOrg, sponsoringOrgUser, + PlanSponsorshipType.FamiliesForEnterprise, sponsoredEmail)); Assert.Same(expectedException, actualException); await sutProvider.GetDependency().Received(1) diff --git a/util/Migrator/DbScripts/2021-11-02_00_OrganizationSponsorship.sql b/util/Migrator/DbScripts/2021-11-02_00_OrganizationSponsorship.sql index 12113573e..8a0bc7809 100644 --- a/util/Migrator/DbScripts/2021-11-02_00_OrganizationSponsorship.sql +++ b/util/Migrator/DbScripts/2021-11-02_00_OrganizationSponsorship.sql @@ -8,6 +8,7 @@ CREATE TABLE [dbo].[OrganizationSponsorship] ( [SponsoringOrganizationUserID] UNIQUEIDENTIFIER NOT NULL, [SponsoredOrganizationId] UNIQUEIDENTIFIER NULL, [OfferedToEmail] NVARCHAR (256) NULL, + [PlanSponsorshipType] TINYINT NULL, [CloudSponsor] BIT NULL, [LastSyncDate] DATETIME2 (7) NULL, [TimesRenewedWithoutValidation] TINYINT DEFAULT 0, @@ -114,6 +115,7 @@ CREATE PROCEDURE [dbo].[OrganizationSponsorship_Create] @SponsoringOrganizationUserID UNIQUEIDENTIFIER, @SponsoredOrganizationId UNIQUEIDENTIFIER, @OfferedToEmail NVARCHAR(256), + @PlanSponsorshipType TINYINT, @CloudSponsor BIT, @LastSyncDate DATETIME2 (7), @TimesRenewedWithoutValidation TINYINT, @@ -130,6 +132,7 @@ BEGIN [SponsoringOrganizationUserID], [SponsoredOrganizationId], [OfferedToEmail], + [PlanSponsorshipType], [CloudSponsor], [LastSyncDate], [TimesRenewedWithoutValidation], @@ -143,6 +146,7 @@ BEGIN @SponsoringOrganizationUserID, @SponsoredOrganizationId, @OfferedToEmail, + @PlanSponsorshipType, @CloudSponsor, @LastSyncDate, @TimesRenewedWithoutValidation, @@ -165,6 +169,7 @@ CREATE PROCEDURE [dbo].[OrganizationSponsorship_Update] @SponsoringOrganizationUserID UNIQUEIDENTIFIER, @SponsoredOrganizationId UNIQUEIDENTIFIER, @OfferedToEmail NVARCHAR(256), + @PlanSponsorshipType TINYINT, @CloudSponsor BIT, @LastSyncDate DATETIME2 (7), @TimesRenewedWithoutValidation TINYINT, @@ -181,6 +186,7 @@ BEGIN [SponsoringOrganizationUserID] = @SponsoringOrganizationUserID, [SponsoredOrganizationId] = @SponsoredOrganizationId, [OfferedToEmail] = @OfferedToEmail, + [PlanSponsorshipType] = @PlanSponsorshipType, [CloudSponsor] = @CloudSponsor, [LastSyncDate] = @LastSyncDate, [TimesRenewedWithoutValidation] = @TimesRenewedWithoutValidation, diff --git a/util/MySqlMigrations/Migrations/20211102213543_OrganizationSponsorship.Designer.cs b/util/MySqlMigrations/Migrations/20211104164838_OrganizationSponsorship.Designer.cs similarity index 99% rename from util/MySqlMigrations/Migrations/20211102213543_OrganizationSponsorship.Designer.cs rename to util/MySqlMigrations/Migrations/20211104164838_OrganizationSponsorship.Designer.cs index 9a915376e..39646fa67 100644 --- a/util/MySqlMigrations/Migrations/20211102213543_OrganizationSponsorship.Designer.cs +++ b/util/MySqlMigrations/Migrations/20211104164838_OrganizationSponsorship.Designer.cs @@ -9,7 +9,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Bit.MySqlMigrations.Migrations { [DbContext(typeof(DatabaseContext))] - [Migration("20211102213543_OrganizationSponsorship")] + [Migration("20211104164838_OrganizationSponsorship")] partial class OrganizationSponsorship { protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -605,6 +605,9 @@ namespace Bit.MySqlMigrations.Migrations .HasMaxLength(256) .HasColumnType("varchar(256)"); + b.Property("PlanSponsorshipType") + .HasColumnType("tinyint unsigned"); + b.Property("SponsoredOrganizationId") .HasColumnType("char(36)"); diff --git a/util/MySqlMigrations/Migrations/20211102213543_OrganizationSponsorship.cs b/util/MySqlMigrations/Migrations/20211104164838_OrganizationSponsorship.cs similarity index 97% rename from util/MySqlMigrations/Migrations/20211102213543_OrganizationSponsorship.cs rename to util/MySqlMigrations/Migrations/20211104164838_OrganizationSponsorship.cs index 38da37d96..0af0aca10 100644 --- a/util/MySqlMigrations/Migrations/20211102213543_OrganizationSponsorship.cs +++ b/util/MySqlMigrations/Migrations/20211104164838_OrganizationSponsorship.cs @@ -25,6 +25,7 @@ namespace Bit.MySqlMigrations.Migrations SponsoredOrganizationId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), OfferedToEmail = table.Column(type: "varchar(256)", maxLength: 256, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), + PlanSponsorshipType = table.Column(type: "tinyint unsigned", nullable: true), CloudSponsor = table.Column(type: "tinyint(1)", nullable: false), LastSyncDate = table.Column(type: "datetime(6)", nullable: true), TimesRenewedWithoutValidation = table.Column(type: "tinyint unsigned", nullable: false), diff --git a/util/MySqlMigrations/Migrations/DatabaseContextModelSnapshot.cs b/util/MySqlMigrations/Migrations/DatabaseContextModelSnapshot.cs index 8bca8a711..06545d15f 100644 --- a/util/MySqlMigrations/Migrations/DatabaseContextModelSnapshot.cs +++ b/util/MySqlMigrations/Migrations/DatabaseContextModelSnapshot.cs @@ -603,6 +603,9 @@ namespace Bit.MySqlMigrations.Migrations .HasMaxLength(256) .HasColumnType("varchar(256)"); + b.Property("PlanSponsorshipType") + .HasColumnType("tinyint unsigned"); + b.Property("SponsoredOrganizationId") .HasColumnType("char(36)"); diff --git a/util/MySqlMigrations/Scripts/2021-11-02_00_OrganizationSponsorship.sql b/util/MySqlMigrations/Scripts/2021-11-02_00_OrganizationSponsorship.sql index 11bcabc82..cb1f7c0ff 100644 --- a/util/MySqlMigrations/Scripts/2021-11-02_00_OrganizationSponsorship.sql +++ b/util/MySqlMigrations/Scripts/2021-11-02_00_OrganizationSponsorship.sql @@ -9,6 +9,7 @@ CREATE TABLE `OrganizationSponsorship` ( `SponsoringOrganizationUserId` char(36) COLLATE ascii_general_ci NOT NULL, `SponsoredOrganizationId` char(36) COLLATE ascii_general_ci NULL, `OfferedToEmail` varchar(256) CHARACTER SET utf8mb4 NULL, + `PlanSponsorshipType` tinyint unsigned NULL, `CloudSponsor` tinyint(1) NOT NULL, `LastSyncDate` datetime(6) NULL, `TimesRenewedWithoutValidation` tinyint unsigned NOT NULL, @@ -26,6 +27,6 @@ CREATE INDEX `IX_OrganizationSponsorship_SponsoredOrganizationId` ON `Organizati CREATE INDEX `IX_OrganizationSponsorship_SponsoringOrganizationId` ON `OrganizationSponsorship` (`SponsoringOrganizationId`); INSERT INTO `__EFMigrationsHistory` (`MigrationId`, `ProductVersion`) -VALUES ('20211102213543_OrganizationSponsorship', '5.0.9'); +VALUES ('20211104164838_OrganizationSponsorship', '5.0.9'); COMMIT; diff --git a/util/PostgresMigrations/Migrations/20211102205745_OrganizationSponsorship.Designer.cs b/util/PostgresMigrations/Migrations/20211104164532_OrganizationSponsorship.Designer.cs similarity index 99% rename from util/PostgresMigrations/Migrations/20211102205745_OrganizationSponsorship.Designer.cs rename to util/PostgresMigrations/Migrations/20211104164532_OrganizationSponsorship.Designer.cs index 4120c68f6..d383ce366 100644 --- a/util/PostgresMigrations/Migrations/20211102205745_OrganizationSponsorship.Designer.cs +++ b/util/PostgresMigrations/Migrations/20211104164532_OrganizationSponsorship.Designer.cs @@ -10,7 +10,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace Bit.PostgresMigrations.Migrations { [DbContext(typeof(DatabaseContext))] - [Migration("20211102205745_OrganizationSponsorship")] + [Migration("20211104164532_OrganizationSponsorship")] partial class OrganizationSponsorship { protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -609,6 +609,9 @@ namespace Bit.PostgresMigrations.Migrations .HasMaxLength(256) .HasColumnType("character varying(256)"); + b.Property("PlanSponsorshipType") + .HasColumnType("smallint"); + b.Property("SponsoredOrganizationId") .HasColumnType("uuid"); diff --git a/util/PostgresMigrations/Migrations/20211102205745_OrganizationSponsorship.cs b/util/PostgresMigrations/Migrations/20211104164532_OrganizationSponsorship.cs similarity index 97% rename from util/PostgresMigrations/Migrations/20211102205745_OrganizationSponsorship.cs rename to util/PostgresMigrations/Migrations/20211104164532_OrganizationSponsorship.cs index cf452e2bd..0de10d335 100644 --- a/util/PostgresMigrations/Migrations/20211102205745_OrganizationSponsorship.cs +++ b/util/PostgresMigrations/Migrations/20211104164532_OrganizationSponsorship.cs @@ -24,6 +24,7 @@ namespace Bit.PostgresMigrations.Migrations SponsoringOrganizationUserId = table.Column(type: "uuid", nullable: false), SponsoredOrganizationId = table.Column(type: "uuid", nullable: true), OfferedToEmail = table.Column(type: "character varying(256)", maxLength: 256, nullable: true), + PlanSponsorshipType = table.Column(type: "smallint", nullable: true), CloudSponsor = table.Column(type: "boolean", nullable: false), LastSyncDate = table.Column(type: "timestamp without time zone", nullable: true), TimesRenewedWithoutValidation = table.Column(type: "smallint", nullable: false), diff --git a/util/PostgresMigrations/Migrations/DatabaseContextModelSnapshot.cs b/util/PostgresMigrations/Migrations/DatabaseContextModelSnapshot.cs index 3b758f313..920d128d6 100644 --- a/util/PostgresMigrations/Migrations/DatabaseContextModelSnapshot.cs +++ b/util/PostgresMigrations/Migrations/DatabaseContextModelSnapshot.cs @@ -607,6 +607,9 @@ namespace Bit.PostgresMigrations.Migrations .HasMaxLength(256) .HasColumnType("character varying(256)"); + b.Property("PlanSponsorshipType") + .HasColumnType("smallint"); + b.Property("SponsoredOrganizationId") .HasColumnType("uuid"); diff --git a/util/PostgresMigrations/Scripts/2021-11-02_00_OrganizationSponsorship.psql b/util/PostgresMigrations/Scripts/2021-11-02_00_OrganizationSponsorship.psql index 95e8557ad..870aff88a 100644 --- a/util/PostgresMigrations/Scripts/2021-11-02_00_OrganizationSponsorship.psql +++ b/util/PostgresMigrations/Scripts/2021-11-02_00_OrganizationSponsorship.psql @@ -9,6 +9,7 @@ CREATE TABLE "OrganizationSponsorship" ( "SponsoringOrganizationUserId" uuid NOT NULL, "SponsoredOrganizationId" uuid NULL, "OfferedToEmail" character varying(256) NULL, + "PlanSponsorshipType" smallint NULL, "CloudSponsor" boolean NOT NULL, "LastSyncDate" timestamp without time zone NULL, "TimesRenewedWithoutValidation" smallint NOT NULL, @@ -26,6 +27,6 @@ CREATE INDEX "IX_OrganizationSponsorship_SponsoredOrganizationId" ON "Organizati CREATE INDEX "IX_OrganizationSponsorship_SponsoringOrganizationId" ON "OrganizationSponsorship" ("SponsoringOrganizationId"); INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion") -VALUES ('20211102205745_OrganizationSponsorship', '5.0.9'); +VALUES ('20211104164532_OrganizationSponsorship', '5.0.9'); COMMIT;