using System; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; namespace Bit.MySqlMigrations.Migrations { public partial class Init : Migration { protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.AlterDatabase() .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "Event", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), Date = table.Column(type: "datetime(6)", nullable: false), Type = table.Column(type: "int", nullable: false), UserId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), OrganizationId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), CipherId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), CollectionId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), PolicyId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), GroupId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), OrganizationUserId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), DeviceType = table.Column(type: "tinyint unsigned", nullable: true), IpAddress = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), ActingUserId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci") }, constraints: table => { table.PrimaryKey("PK_Event", x => x.Id); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "Grant", columns: table => new { Key = table.Column(type: "varchar(200)", maxLength: 200, nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Type = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), SubjectId = table.Column(type: "varchar(200)", maxLength: 200, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), SessionId = table.Column(type: "varchar(100)", maxLength: 100, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), ClientId = table.Column(type: "varchar(200)", maxLength: 200, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Description = table.Column(type: "varchar(200)", maxLength: 200, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), CreationDate = table.Column(type: "datetime(6)", nullable: false), ExpirationDate = table.Column(type: "datetime(6)", nullable: true), ConsumedDate = table.Column(type: "datetime(6)", nullable: true), Data = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4") }, constraints: table => { table.PrimaryKey("PK_Grant", x => x.Key); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "Installation", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), Email = table.Column(type: "varchar(256)", maxLength: 256, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Key = table.Column(type: "varchar(150)", maxLength: 150, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Enabled = table.Column(type: "tinyint(1)", nullable: false), CreationDate = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Installation", x => x.Id); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "Organization", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), Identifier = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Name = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), BusinessName = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), BusinessAddress1 = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), BusinessAddress2 = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), BusinessAddress3 = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), BusinessCountry = table.Column(type: "varchar(2)", maxLength: 2, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), BusinessTaxNumber = table.Column(type: "varchar(30)", maxLength: 30, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), BillingEmail = table.Column(type: "varchar(256)", maxLength: 256, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Plan = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), PlanType = table.Column(type: "tinyint unsigned", nullable: false), Seats = table.Column(type: "int", nullable: true), MaxCollections = table.Column(type: "smallint", nullable: true), UsePolicies = table.Column(type: "tinyint(1)", nullable: false), UseSso = table.Column(type: "tinyint(1)", nullable: false), UseGroups = table.Column(type: "tinyint(1)", nullable: false), UseDirectory = table.Column(type: "tinyint(1)", nullable: false), UseEvents = table.Column(type: "tinyint(1)", nullable: false), UseTotp = table.Column(type: "tinyint(1)", nullable: false), Use2fa = table.Column(type: "tinyint(1)", nullable: false), UseApi = table.Column(type: "tinyint(1)", nullable: false), UseResetPassword = table.Column(type: "tinyint(1)", nullable: false), SelfHost = table.Column(type: "tinyint(1)", nullable: false), UsersGetPremium = table.Column(type: "tinyint(1)", nullable: false), Storage = table.Column(type: "bigint", nullable: true), MaxStorageGb = table.Column(type: "smallint", nullable: true), Gateway = table.Column(type: "tinyint unsigned", nullable: true), GatewayCustomerId = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), GatewaySubscriptionId = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), ReferenceData = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Enabled = table.Column(type: "tinyint(1)", nullable: false), LicenseKey = table.Column(type: "varchar(100)", maxLength: 100, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), ApiKey = table.Column(type: "varchar(30)", maxLength: 30, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), PublicKey = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), PrivateKey = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), TwoFactorProviders = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), ExpirationDate = table.Column(type: "datetime(6)", nullable: true), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Organization", x => x.Id); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "Provider", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), Name = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), BusinessName = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), BusinessAddress1 = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), BusinessAddress2 = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), BusinessAddress3 = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), BusinessCountry = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), BusinessTaxNumber = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), BillingEmail = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Status = table.Column(type: "tinyint unsigned", nullable: false), Enabled = table.Column(type: "tinyint(1)", nullable: false), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Provider", x => x.Id); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "TaxRate", columns: table => new { Id = table.Column(type: "varchar(40)", maxLength: 40, nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Country = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), State = table.Column(type: "varchar(2)", maxLength: 2, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), PostalCode = table.Column(type: "varchar(10)", maxLength: 10, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Rate = table.Column(type: "decimal(65,30)", nullable: false), Active = table.Column(type: "tinyint(1)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_TaxRate", x => x.Id); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "User", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), Name = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Email = table.Column(type: "varchar(256)", maxLength: 256, nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), EmailVerified = table.Column(type: "tinyint(1)", nullable: false), MasterPassword = table.Column(type: "varchar(300)", maxLength: 300, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), MasterPasswordHint = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Culture = table.Column(type: "varchar(10)", maxLength: 10, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), SecurityStamp = table.Column(type: "varchar(50)", maxLength: 50, nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), TwoFactorProviders = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), TwoFactorRecoveryCode = table.Column(type: "varchar(32)", maxLength: 32, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), EquivalentDomains = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), ExcludedGlobalEquivalentDomains = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), AccountRevisionDate = table.Column(type: "datetime(6)", nullable: false), Key = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), PublicKey = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), PrivateKey = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Premium = table.Column(type: "tinyint(1)", nullable: false), PremiumExpirationDate = table.Column(type: "datetime(6)", nullable: true), RenewalReminderDate = table.Column(type: "datetime(6)", nullable: true), Storage = table.Column(type: "bigint", nullable: true), MaxStorageGb = table.Column(type: "smallint", nullable: true), Gateway = table.Column(type: "tinyint unsigned", nullable: true), GatewayCustomerId = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), GatewaySubscriptionId = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), ReferenceData = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), LicenseKey = table.Column(type: "varchar(100)", maxLength: 100, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), ApiKey = table.Column(type: "varchar(30)", maxLength: 30, nullable: false) .Annotation("MySql:CharSet", "utf8mb4"), Kdf = table.Column(type: "tinyint unsigned", nullable: false), KdfIterations = table.Column(type: "int", nullable: false), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_User", x => x.Id); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "Collection", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), OrganizationId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), Name = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), ExternalId = table.Column(type: "varchar(300)", maxLength: 300, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Collection", x => x.Id); table.ForeignKey( name: "FK_Collection_Organization_OrganizationId", column: x => x.OrganizationId, principalTable: "Organization", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "Group", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), OrganizationId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), Name = table.Column(type: "varchar(100)", maxLength: 100, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), AccessAll = table.Column(type: "tinyint(1)", nullable: false), ExternalId = table.Column(type: "varchar(300)", maxLength: 300, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Group", x => x.Id); table.ForeignKey( name: "FK_Group_Organization_OrganizationId", column: x => x.OrganizationId, principalTable: "Organization", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "Policy", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), OrganizationId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), Type = table.Column(type: "tinyint unsigned", nullable: false), Data = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Enabled = table.Column(type: "tinyint(1)", nullable: false), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Policy", x => x.Id); table.ForeignKey( name: "FK_Policy_Organization_OrganizationId", column: x => x.OrganizationId, principalTable: "Organization", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "SsoConfig", columns: table => new { Id = table.Column(type: "bigint", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), Enabled = table.Column(type: "tinyint(1)", nullable: false), OrganizationId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), Data = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_SsoConfig", x => x.Id); table.ForeignKey( name: "FK_SsoConfig_Organization_OrganizationId", column: x => x.OrganizationId, principalTable: "Organization", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "ProviderOrganization", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), ProviderId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), OrganizationId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), Key = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Settings = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_ProviderOrganization", x => x.Id); table.ForeignKey( name: "FK_ProviderOrganization_Organization_OrganizationId", column: x => x.OrganizationId, principalTable: "Organization", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_ProviderOrganization_Provider_ProviderId", column: x => x.ProviderId, principalTable: "Provider", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "Cipher", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), UserId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), OrganizationId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), Type = table.Column(type: "tinyint unsigned", nullable: false), Data = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Favorites = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Folders = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Attachments = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false), DeletedDate = table.Column(type: "datetime(6)", nullable: true), Reprompt = table.Column(type: "tinyint unsigned", nullable: true) }, constraints: table => { table.PrimaryKey("PK_Cipher", x => x.Id); table.ForeignKey( name: "FK_Cipher_Organization_OrganizationId", column: x => x.OrganizationId, principalTable: "Organization", principalColumn: "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Cipher_User_UserId", column: x => x.UserId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "Device", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), UserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), Name = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Type = table.Column(type: "tinyint unsigned", nullable: false), Identifier = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), PushToken = table.Column(type: "varchar(255)", maxLength: 255, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Device", x => x.Id); table.ForeignKey( name: "FK_Device_User_UserId", column: x => x.UserId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "EmergencyAccess", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), GrantorId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), GranteeId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), Email = table.Column(type: "varchar(256)", maxLength: 256, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), KeyEncrypted = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Type = table.Column(type: "tinyint unsigned", nullable: false), Status = table.Column(type: "tinyint unsigned", nullable: false), WaitTimeDays = table.Column(type: "int", nullable: false), RecoveryInitiatedDate = table.Column(type: "datetime(6)", nullable: true), LastNotificationDate = table.Column(type: "datetime(6)", nullable: true), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_EmergencyAccess", x => x.Id); table.ForeignKey( name: "FK_EmergencyAccess_User_GranteeId", column: x => x.GranteeId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_EmergencyAccess_User_GrantorId", column: x => x.GrantorId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "Folder", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), UserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), Name = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Folder", x => x.Id); table.ForeignKey( name: "FK_Folder_User_UserId", column: x => x.UserId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "OrganizationUser", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), OrganizationId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), UserId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), Email = table.Column(type: "varchar(256)", maxLength: 256, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Key = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), ResetPasswordKey = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Status = table.Column(type: "tinyint unsigned", nullable: false), Type = table.Column(type: "tinyint unsigned", nullable: false), AccessAll = table.Column(type: "tinyint(1)", nullable: false), ExternalId = table.Column(type: "varchar(300)", maxLength: 300, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false), Permissions = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4") }, constraints: table => { table.PrimaryKey("PK_OrganizationUser", x => x.Id); table.ForeignKey( name: "FK_OrganizationUser_Organization_OrganizationId", column: x => x.OrganizationId, principalTable: "Organization", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_OrganizationUser_User_UserId", column: x => x.UserId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "ProviderUser", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), ProviderId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), UserId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), Email = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Key = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Status = table.Column(type: "tinyint unsigned", nullable: false), Type = table.Column(type: "tinyint unsigned", nullable: false), Permissions = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_ProviderUser", x => x.Id); table.ForeignKey( name: "FK_ProviderUser_Provider_ProviderId", column: x => x.ProviderId, principalTable: "Provider", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_ProviderUser_User_UserId", column: x => x.UserId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "Send", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), UserId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), OrganizationId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), Type = table.Column(type: "tinyint unsigned", nullable: false), Data = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Key = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Password = table.Column(type: "varchar(300)", maxLength: 300, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), MaxAccessCount = table.Column(type: "int", nullable: true), AccessCount = table.Column(type: "int", nullable: false), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false), ExpirationDate = table.Column(type: "datetime(6)", nullable: true), DeletionDate = table.Column(type: "datetime(6)", nullable: false), Disabled = table.Column(type: "tinyint(1)", nullable: false), HideEmail = table.Column(type: "tinyint(1)", nullable: true) }, constraints: table => { table.PrimaryKey("PK_Send", x => x.Id); table.ForeignKey( name: "FK_Send_Organization_OrganizationId", column: x => x.OrganizationId, principalTable: "Organization", principalColumn: "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Send_User_UserId", column: x => x.UserId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "SsoUser", columns: table => new { Id = table.Column(type: "bigint", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), UserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), OrganizationId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), ExternalId = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), CreationDate = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_SsoUser", x => x.Id); table.ForeignKey( name: "FK_SsoUser_Organization_OrganizationId", column: x => x.OrganizationId, principalTable: "Organization", principalColumn: "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_SsoUser_User_UserId", column: x => x.UserId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "Transaction", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), UserId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), OrganizationId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), Type = table.Column(type: "tinyint unsigned", nullable: false), Amount = table.Column(type: "decimal(65,30)", nullable: false), Refunded = table.Column(type: "tinyint(1)", nullable: true), RefundedAmount = table.Column(type: "decimal(65,30)", nullable: true), Details = table.Column(type: "varchar(100)", maxLength: 100, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), PaymentMethodType = table.Column(type: "tinyint unsigned", nullable: true), Gateway = table.Column(type: "tinyint unsigned", nullable: true), GatewayId = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), CreationDate = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Transaction", x => x.Id); table.ForeignKey( name: "FK_Transaction_Organization_OrganizationId", column: x => x.OrganizationId, principalTable: "Organization", principalColumn: "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Transaction_User_UserId", column: x => x.UserId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "U2f", columns: table => new { Id = table.Column(type: "int", nullable: false) .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), UserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), KeyHandle = table.Column(type: "varchar(200)", maxLength: 200, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Challenge = table.Column(type: "varchar(200)", maxLength: 200, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), AppId = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Version = table.Column(type: "varchar(20)", maxLength: 20, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), CreationDate = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_U2f", x => x.Id); table.ForeignKey( name: "FK_U2f_User_UserId", column: x => x.UserId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "CollectionGroups", columns: table => new { CollectionId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), GroupId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), ReadOnly = table.Column(type: "tinyint(1)", nullable: false), HidePasswords = table.Column(type: "tinyint(1)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_CollectionGroups", x => new { x.CollectionId, x.GroupId }); table.ForeignKey( name: "FK_CollectionGroups_Collection_CollectionId", column: x => x.CollectionId, principalTable: "Collection", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_CollectionGroups_Group_GroupId", column: x => x.GroupId, principalTable: "Group", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "CollectionCipher", columns: table => new { CollectionId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), CipherId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci") }, constraints: table => { table.PrimaryKey("PK_CollectionCipher", x => new { x.CollectionId, x.CipherId }); table.ForeignKey( name: "FK_CollectionCipher_Cipher_CipherId", column: x => x.CipherId, principalTable: "Cipher", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_CollectionCipher_Collection_CollectionId", column: x => x.CollectionId, principalTable: "Collection", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "CollectionUsers", columns: table => new { CollectionId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), OrganizationUserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), UserId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), ReadOnly = table.Column(type: "tinyint(1)", nullable: false), HidePasswords = table.Column(type: "tinyint(1)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_CollectionUsers", x => new { x.CollectionId, x.OrganizationUserId }); table.ForeignKey( name: "FK_CollectionUsers_Collection_CollectionId", column: x => x.CollectionId, principalTable: "Collection", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_CollectionUsers_OrganizationUser_OrganizationUserId", column: x => x.OrganizationUserId, principalTable: "OrganizationUser", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_CollectionUsers_User_UserId", column: x => x.UserId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "GroupUser", columns: table => new { GroupId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), OrganizationUserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), UserId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci") }, constraints: table => { table.PrimaryKey("PK_GroupUser", x => new { x.GroupId, x.OrganizationUserId }); table.ForeignKey( name: "FK_GroupUser_Group_GroupId", column: x => x.GroupId, principalTable: "Group", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_GroupUser_OrganizationUser_OrganizationUserId", column: x => x.OrganizationUserId, principalTable: "OrganizationUser", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_GroupUser_User_UserId", column: x => x.UserId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "ProviderOrganizationProviderUser", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), ProviderOrganizationId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), ProviderUserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), Type = table.Column(type: "tinyint unsigned", nullable: false), Permissions = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_ProviderOrganizationProviderUser", x => x.Id); table.ForeignKey( name: "FK_ProviderOrganizationProviderUser_ProviderOrganization_Provid~", column: x => x.ProviderOrganizationId, principalTable: "ProviderOrganization", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_ProviderOrganizationProviderUser_ProviderUser_ProviderUserId", column: x => x.ProviderUserId, principalTable: "ProviderUser", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateIndex( name: "IX_Cipher_OrganizationId", table: "Cipher", column: "OrganizationId"); migrationBuilder.CreateIndex( name: "IX_Cipher_UserId", table: "Cipher", column: "UserId"); migrationBuilder.CreateIndex( name: "IX_Collection_OrganizationId", table: "Collection", column: "OrganizationId"); migrationBuilder.CreateIndex( name: "IX_CollectionCipher_CipherId", table: "CollectionCipher", column: "CipherId"); migrationBuilder.CreateIndex( name: "IX_CollectionGroups_GroupId", table: "CollectionGroups", column: "GroupId"); migrationBuilder.CreateIndex( name: "IX_CollectionUsers_OrganizationUserId", table: "CollectionUsers", column: "OrganizationUserId"); migrationBuilder.CreateIndex( name: "IX_CollectionUsers_UserId", table: "CollectionUsers", column: "UserId"); migrationBuilder.CreateIndex( name: "IX_Device_UserId", table: "Device", column: "UserId"); migrationBuilder.CreateIndex( name: "IX_EmergencyAccess_GranteeId", table: "EmergencyAccess", column: "GranteeId"); migrationBuilder.CreateIndex( name: "IX_EmergencyAccess_GrantorId", table: "EmergencyAccess", column: "GrantorId"); migrationBuilder.CreateIndex( name: "IX_Folder_UserId", table: "Folder", column: "UserId"); migrationBuilder.CreateIndex( name: "IX_Group_OrganizationId", table: "Group", column: "OrganizationId"); migrationBuilder.CreateIndex( name: "IX_GroupUser_OrganizationUserId", table: "GroupUser", column: "OrganizationUserId"); migrationBuilder.CreateIndex( name: "IX_GroupUser_UserId", table: "GroupUser", column: "UserId"); migrationBuilder.CreateIndex( name: "IX_OrganizationUser_OrganizationId", table: "OrganizationUser", column: "OrganizationId"); migrationBuilder.CreateIndex( name: "IX_OrganizationUser_UserId", table: "OrganizationUser", column: "UserId"); migrationBuilder.CreateIndex( name: "IX_Policy_OrganizationId", table: "Policy", column: "OrganizationId"); migrationBuilder.CreateIndex( name: "IX_ProviderOrganization_OrganizationId", table: "ProviderOrganization", column: "OrganizationId"); migrationBuilder.CreateIndex( name: "IX_ProviderOrganization_ProviderId", table: "ProviderOrganization", column: "ProviderId"); migrationBuilder.CreateIndex( name: "IX_ProviderOrganizationProviderUser_ProviderOrganizationId", table: "ProviderOrganizationProviderUser", column: "ProviderOrganizationId"); migrationBuilder.CreateIndex( name: "IX_ProviderOrganizationProviderUser_ProviderUserId", table: "ProviderOrganizationProviderUser", column: "ProviderUserId"); migrationBuilder.CreateIndex( name: "IX_ProviderUser_ProviderId", table: "ProviderUser", column: "ProviderId"); migrationBuilder.CreateIndex( name: "IX_ProviderUser_UserId", table: "ProviderUser", column: "UserId"); migrationBuilder.CreateIndex( name: "IX_Send_OrganizationId", table: "Send", column: "OrganizationId"); migrationBuilder.CreateIndex( name: "IX_Send_UserId", table: "Send", column: "UserId"); migrationBuilder.CreateIndex( name: "IX_SsoConfig_OrganizationId", table: "SsoConfig", column: "OrganizationId"); migrationBuilder.CreateIndex( name: "IX_SsoUser_OrganizationId", table: "SsoUser", column: "OrganizationId"); migrationBuilder.CreateIndex( name: "IX_SsoUser_UserId", table: "SsoUser", column: "UserId"); migrationBuilder.CreateIndex( name: "IX_Transaction_OrganizationId", table: "Transaction", column: "OrganizationId"); migrationBuilder.CreateIndex( name: "IX_Transaction_UserId", table: "Transaction", column: "UserId"); migrationBuilder.CreateIndex( name: "IX_U2f_UserId", table: "U2f", column: "UserId"); } protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "CollectionCipher"); migrationBuilder.DropTable( name: "CollectionGroups"); migrationBuilder.DropTable( name: "CollectionUsers"); migrationBuilder.DropTable( name: "Device"); migrationBuilder.DropTable( name: "EmergencyAccess"); migrationBuilder.DropTable( name: "Event"); migrationBuilder.DropTable( name: "Folder"); migrationBuilder.DropTable( name: "Grant"); migrationBuilder.DropTable( name: "GroupUser"); migrationBuilder.DropTable( name: "Installation"); migrationBuilder.DropTable( name: "Policy"); migrationBuilder.DropTable( name: "ProviderOrganizationProviderUser"); migrationBuilder.DropTable( name: "Send"); migrationBuilder.DropTable( name: "SsoConfig"); migrationBuilder.DropTable( name: "SsoUser"); migrationBuilder.DropTable( name: "TaxRate"); migrationBuilder.DropTable( name: "Transaction"); migrationBuilder.DropTable( name: "U2f"); migrationBuilder.DropTable( name: "Cipher"); migrationBuilder.DropTable( name: "Collection"); migrationBuilder.DropTable( name: "Group"); migrationBuilder.DropTable( name: "OrganizationUser"); migrationBuilder.DropTable( name: "ProviderOrganization"); migrationBuilder.DropTable( name: "ProviderUser"); migrationBuilder.DropTable( name: "Organization"); migrationBuilder.DropTable( name: "Provider"); migrationBuilder.DropTable( name: "User"); } } }