// <auto-generated />
using System;
using Bit.Core.Repositories.EntityFramework;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;

namespace Bit.MySqlMigrations.Migrations
{
    [DbContext(typeof(DatabaseContext))]
    [Migration("20210617183900_Init")]
    partial class Init
    {
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("Relational:MaxIdentifierLength", 64)
                .HasAnnotation("ProductVersion", "5.0.5");

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Cipher", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("char(36)");

                    b.Property<string>("Attachments")
                        .HasColumnType("longtext");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Data")
                        .HasColumnType("longtext");

                    b.Property<DateTime?>("DeletedDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Favorites")
                        .HasColumnType("longtext");

                    b.Property<string>("Folders")
                        .HasColumnType("longtext");

                    b.Property<Guid?>("OrganizationId")
                        .HasColumnType("char(36)");

                    b.Property<byte?>("Reprompt")
                        .HasColumnType("tinyint unsigned");

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("datetime(6)");

                    b.Property<byte>("Type")
                        .HasColumnType("tinyint unsigned");

                    b.Property<Guid?>("UserId")
                        .HasColumnType("char(36)");

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.HasIndex("UserId");

                    b.ToTable("Cipher");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Collection", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("char(36)");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("ExternalId")
                        .HasMaxLength(300)
                        .HasColumnType("varchar(300)");

                    b.Property<string>("Name")
                        .HasColumnType("longtext");

                    b.Property<Guid>("OrganizationId")
                        .HasColumnType("char(36)");

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("datetime(6)");

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.ToTable("Collection");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.CollectionCipher", b =>
                {
                    b.Property<Guid>("CollectionId")
                        .HasColumnType("char(36)");

                    b.Property<Guid>("CipherId")
                        .HasColumnType("char(36)");

                    b.HasKey("CollectionId", "CipherId");

                    b.HasIndex("CipherId");

                    b.ToTable("CollectionCipher");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.CollectionGroup", b =>
                {
                    b.Property<Guid>("CollectionId")
                        .HasColumnType("char(36)");

                    b.Property<Guid>("GroupId")
                        .HasColumnType("char(36)");

                    b.Property<bool>("HidePasswords")
                        .HasColumnType("tinyint(1)");

                    b.Property<bool>("ReadOnly")
                        .HasColumnType("tinyint(1)");

                    b.HasKey("CollectionId", "GroupId");

                    b.HasIndex("GroupId");

                    b.ToTable("CollectionGroups");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.CollectionUser", b =>
                {
                    b.Property<Guid>("CollectionId")
                        .HasColumnType("char(36)");

                    b.Property<Guid>("OrganizationUserId")
                        .HasColumnType("char(36)");

                    b.Property<bool>("HidePasswords")
                        .HasColumnType("tinyint(1)");

                    b.Property<bool>("ReadOnly")
                        .HasColumnType("tinyint(1)");

                    b.Property<Guid?>("UserId")
                        .HasColumnType("char(36)");

                    b.HasKey("CollectionId", "OrganizationUserId");

                    b.HasIndex("OrganizationUserId");

                    b.HasIndex("UserId");

                    b.ToTable("CollectionUsers");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Device", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("char(36)");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Identifier")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.Property<string>("Name")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.Property<string>("PushToken")
                        .HasMaxLength(255)
                        .HasColumnType("varchar(255)");

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("datetime(6)");

                    b.Property<byte>("Type")
                        .HasColumnType("tinyint unsigned");

                    b.Property<Guid>("UserId")
                        .HasColumnType("char(36)");

                    b.HasKey("Id");

                    b.HasIndex("UserId");

                    b.ToTable("Device");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.EmergencyAccess", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("char(36)");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Email")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)");

                    b.Property<Guid?>("GranteeId")
                        .HasColumnType("char(36)");

                    b.Property<Guid>("GrantorId")
                        .HasColumnType("char(36)");

                    b.Property<string>("KeyEncrypted")
                        .HasColumnType("longtext");

                    b.Property<DateTime?>("LastNotificationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<DateTime?>("RecoveryInitiatedDate")
                        .HasColumnType("datetime(6)");

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("datetime(6)");

                    b.Property<byte>("Status")
                        .HasColumnType("tinyint unsigned");

                    b.Property<byte>("Type")
                        .HasColumnType("tinyint unsigned");

                    b.Property<int>("WaitTimeDays")
                        .HasColumnType("int");

                    b.HasKey("Id");

                    b.HasIndex("GranteeId");

                    b.HasIndex("GrantorId");

                    b.ToTable("EmergencyAccess");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Event", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("char(36)");

                    b.Property<Guid?>("ActingUserId")
                        .HasColumnType("char(36)");

                    b.Property<Guid?>("CipherId")
                        .HasColumnType("char(36)");

                    b.Property<Guid?>("CollectionId")
                        .HasColumnType("char(36)");

                    b.Property<DateTime>("Date")
                        .HasColumnType("datetime(6)");

                    b.Property<byte?>("DeviceType")
                        .HasColumnType("tinyint unsigned");

                    b.Property<Guid?>("GroupId")
                        .HasColumnType("char(36)");

                    b.Property<string>("IpAddress")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.Property<Guid?>("OrganizationId")
                        .HasColumnType("char(36)");

                    b.Property<Guid?>("OrganizationUserId")
                        .HasColumnType("char(36)");

                    b.Property<Guid?>("PolicyId")
                        .HasColumnType("char(36)");

                    b.Property<int>("Type")
                        .HasColumnType("int");

                    b.Property<Guid?>("UserId")
                        .HasColumnType("char(36)");

                    b.HasKey("Id");

                    b.ToTable("Event");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Folder", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("char(36)");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Name")
                        .HasColumnType("longtext");

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("datetime(6)");

                    b.Property<Guid>("UserId")
                        .HasColumnType("char(36)");

                    b.HasKey("Id");

                    b.HasIndex("UserId");

                    b.ToTable("Folder");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Grant", b =>
                {
                    b.Property<string>("Key")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)");

                    b.Property<string>("ClientId")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)");

                    b.Property<DateTime?>("ConsumedDate")
                        .HasColumnType("datetime(6)");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Data")
                        .HasColumnType("longtext");

                    b.Property<string>("Description")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)");

                    b.Property<DateTime?>("ExpirationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("SessionId")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)");

                    b.Property<string>("SubjectId")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)");

                    b.Property<string>("Type")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.HasKey("Key");

                    b.ToTable("Grant");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Group", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("char(36)");

                    b.Property<bool>("AccessAll")
                        .HasColumnType("tinyint(1)");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("ExternalId")
                        .HasMaxLength(300)
                        .HasColumnType("varchar(300)");

                    b.Property<string>("Name")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)");

                    b.Property<Guid>("OrganizationId")
                        .HasColumnType("char(36)");

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("datetime(6)");

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.ToTable("Group");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.GroupUser", b =>
                {
                    b.Property<Guid>("GroupId")
                        .HasColumnType("char(36)");

                    b.Property<Guid>("OrganizationUserId")
                        .HasColumnType("char(36)");

                    b.Property<Guid?>("UserId")
                        .HasColumnType("char(36)");

                    b.HasKey("GroupId", "OrganizationUserId");

                    b.HasIndex("OrganizationUserId");

                    b.HasIndex("UserId");

                    b.ToTable("GroupUser");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Installation", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("char(36)");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Email")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)");

                    b.Property<bool>("Enabled")
                        .HasColumnType("tinyint(1)");

                    b.Property<string>("Key")
                        .HasMaxLength(150)
                        .HasColumnType("varchar(150)");

                    b.HasKey("Id");

                    b.ToTable("Installation");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Organization", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("char(36)");

                    b.Property<string>("ApiKey")
                        .HasMaxLength(30)
                        .HasColumnType("varchar(30)");

                    b.Property<string>("BillingEmail")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)");

                    b.Property<string>("BusinessAddress1")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.Property<string>("BusinessAddress2")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.Property<string>("BusinessAddress3")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.Property<string>("BusinessCountry")
                        .HasMaxLength(2)
                        .HasColumnType("varchar(2)");

                    b.Property<string>("BusinessName")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.Property<string>("BusinessTaxNumber")
                        .HasMaxLength(30)
                        .HasColumnType("varchar(30)");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<bool>("Enabled")
                        .HasColumnType("tinyint(1)");

                    b.Property<DateTime?>("ExpirationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<byte?>("Gateway")
                        .HasColumnType("tinyint unsigned");

                    b.Property<string>("GatewayCustomerId")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.Property<string>("GatewaySubscriptionId")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.Property<string>("Identifier")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.Property<string>("LicenseKey")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)");

                    b.Property<short?>("MaxCollections")
                        .HasColumnType("smallint");

                    b.Property<short?>("MaxStorageGb")
                        .HasColumnType("smallint");

                    b.Property<string>("Name")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.Property<string>("Plan")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.Property<byte>("PlanType")
                        .HasColumnType("tinyint unsigned");

                    b.Property<string>("PrivateKey")
                        .HasColumnType("longtext");

                    b.Property<string>("PublicKey")
                        .HasColumnType("longtext");

                    b.Property<string>("ReferenceData")
                        .HasColumnType("longtext");

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("datetime(6)");

                    b.Property<int?>("Seats")
                        .HasColumnType("int");

                    b.Property<bool>("SelfHost")
                        .HasColumnType("tinyint(1)");

                    b.Property<long?>("Storage")
                        .HasColumnType("bigint");

                    b.Property<string>("TwoFactorProviders")
                        .HasColumnType("longtext");

                    b.Property<bool>("Use2fa")
                        .HasColumnType("tinyint(1)");

                    b.Property<bool>("UseApi")
                        .HasColumnType("tinyint(1)");

                    b.Property<bool>("UseDirectory")
                        .HasColumnType("tinyint(1)");

                    b.Property<bool>("UseEvents")
                        .HasColumnType("tinyint(1)");

                    b.Property<bool>("UseGroups")
                        .HasColumnType("tinyint(1)");

                    b.Property<bool>("UsePolicies")
                        .HasColumnType("tinyint(1)");

                    b.Property<bool>("UseResetPassword")
                        .HasColumnType("tinyint(1)");

                    b.Property<bool>("UseSso")
                        .HasColumnType("tinyint(1)");

                    b.Property<bool>("UseTotp")
                        .HasColumnType("tinyint(1)");

                    b.Property<bool>("UsersGetPremium")
                        .HasColumnType("tinyint(1)");

                    b.HasKey("Id");

                    b.ToTable("Organization");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.OrganizationUser", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("char(36)");

                    b.Property<bool>("AccessAll")
                        .HasColumnType("tinyint(1)");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Email")
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)");

                    b.Property<string>("ExternalId")
                        .HasMaxLength(300)
                        .HasColumnType("varchar(300)");

                    b.Property<string>("Key")
                        .HasColumnType("longtext");

                    b.Property<Guid>("OrganizationId")
                        .HasColumnType("char(36)");

                    b.Property<string>("Permissions")
                        .HasColumnType("longtext");

                    b.Property<string>("ResetPasswordKey")
                        .HasColumnType("longtext");

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("datetime(6)");

                    b.Property<byte>("Status")
                        .HasColumnType("tinyint unsigned");

                    b.Property<byte>("Type")
                        .HasColumnType("tinyint unsigned");

                    b.Property<Guid?>("UserId")
                        .HasColumnType("char(36)");

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.HasIndex("UserId");

                    b.ToTable("OrganizationUser");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Policy", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("char(36)");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Data")
                        .HasColumnType("longtext");

                    b.Property<bool>("Enabled")
                        .HasColumnType("tinyint(1)");

                    b.Property<Guid>("OrganizationId")
                        .HasColumnType("char(36)");

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("datetime(6)");

                    b.Property<byte>("Type")
                        .HasColumnType("tinyint unsigned");

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.ToTable("Policy");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Provider.Provider", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("char(36)");

                    b.Property<string>("BillingEmail")
                        .HasColumnType("longtext");

                    b.Property<string>("BusinessAddress1")
                        .HasColumnType("longtext");

                    b.Property<string>("BusinessAddress2")
                        .HasColumnType("longtext");

                    b.Property<string>("BusinessAddress3")
                        .HasColumnType("longtext");

                    b.Property<string>("BusinessCountry")
                        .HasColumnType("longtext");

                    b.Property<string>("BusinessName")
                        .HasColumnType("longtext");

                    b.Property<string>("BusinessTaxNumber")
                        .HasColumnType("longtext");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<bool>("Enabled")
                        .HasColumnType("tinyint(1)");

                    b.Property<string>("Name")
                        .HasColumnType("longtext");

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("datetime(6)");

                    b.Property<byte>("Status")
                        .HasColumnType("tinyint unsigned");

                    b.HasKey("Id");

                    b.ToTable("Provider");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Provider.ProviderOrganization", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("char(36)");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Key")
                        .HasColumnType("longtext");

                    b.Property<Guid>("OrganizationId")
                        .HasColumnType("char(36)");

                    b.Property<Guid>("ProviderId")
                        .HasColumnType("char(36)");

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Settings")
                        .HasColumnType("longtext");

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.HasIndex("ProviderId");

                    b.ToTable("ProviderOrganization");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Provider.ProviderOrganizationProviderUser", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("char(36)");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Permissions")
                        .HasColumnType("longtext");

                    b.Property<Guid>("ProviderOrganizationId")
                        .HasColumnType("char(36)");

                    b.Property<Guid>("ProviderUserId")
                        .HasColumnType("char(36)");

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("datetime(6)");

                    b.Property<byte>("Type")
                        .HasColumnType("tinyint unsigned");

                    b.HasKey("Id");

                    b.HasIndex("ProviderOrganizationId");

                    b.HasIndex("ProviderUserId");

                    b.ToTable("ProviderOrganizationProviderUser");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Provider.ProviderUser", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("char(36)");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Email")
                        .HasColumnType("longtext");

                    b.Property<string>("Key")
                        .HasColumnType("longtext");

                    b.Property<string>("Permissions")
                        .HasColumnType("longtext");

                    b.Property<Guid>("ProviderId")
                        .HasColumnType("char(36)");

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("datetime(6)");

                    b.Property<byte>("Status")
                        .HasColumnType("tinyint unsigned");

                    b.Property<byte>("Type")
                        .HasColumnType("tinyint unsigned");

                    b.Property<Guid?>("UserId")
                        .HasColumnType("char(36)");

                    b.HasKey("Id");

                    b.HasIndex("ProviderId");

                    b.HasIndex("UserId");

                    b.ToTable("ProviderUser");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Send", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("char(36)");

                    b.Property<int>("AccessCount")
                        .HasColumnType("int");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Data")
                        .HasColumnType("longtext");

                    b.Property<DateTime>("DeletionDate")
                        .HasColumnType("datetime(6)");

                    b.Property<bool>("Disabled")
                        .HasColumnType("tinyint(1)");

                    b.Property<DateTime?>("ExpirationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<bool?>("HideEmail")
                        .HasColumnType("tinyint(1)");

                    b.Property<string>("Key")
                        .HasColumnType("longtext");

                    b.Property<int?>("MaxAccessCount")
                        .HasColumnType("int");

                    b.Property<Guid?>("OrganizationId")
                        .HasColumnType("char(36)");

                    b.Property<string>("Password")
                        .HasMaxLength(300)
                        .HasColumnType("varchar(300)");

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("datetime(6)");

                    b.Property<byte>("Type")
                        .HasColumnType("tinyint unsigned");

                    b.Property<Guid?>("UserId")
                        .HasColumnType("char(36)");

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.HasIndex("UserId");

                    b.ToTable("Send");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.SsoConfig", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Data")
                        .HasColumnType("longtext");

                    b.Property<bool>("Enabled")
                        .HasColumnType("tinyint(1)");

                    b.Property<Guid>("OrganizationId")
                        .HasColumnType("char(36)");

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("datetime(6)");

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.ToTable("SsoConfig");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.SsoUser", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("ExternalId")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.Property<Guid?>("OrganizationId")
                        .HasColumnType("char(36)");

                    b.Property<Guid>("UserId")
                        .HasColumnType("char(36)");

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.HasIndex("UserId");

                    b.ToTable("SsoUser");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.TaxRate", b =>
                {
                    b.Property<string>("Id")
                        .HasMaxLength(40)
                        .HasColumnType("varchar(40)");

                    b.Property<bool>("Active")
                        .HasColumnType("tinyint(1)");

                    b.Property<string>("Country")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.Property<string>("PostalCode")
                        .HasMaxLength(10)
                        .HasColumnType("varchar(10)");

                    b.Property<decimal>("Rate")
                        .HasColumnType("decimal(65,30)");

                    b.Property<string>("State")
                        .HasMaxLength(2)
                        .HasColumnType("varchar(2)");

                    b.HasKey("Id");

                    b.ToTable("TaxRate");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Transaction", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("char(36)");

                    b.Property<decimal>("Amount")
                        .HasColumnType("decimal(65,30)");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Details")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)");

                    b.Property<byte?>("Gateway")
                        .HasColumnType("tinyint unsigned");

                    b.Property<string>("GatewayId")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.Property<Guid?>("OrganizationId")
                        .HasColumnType("char(36)");

                    b.Property<byte?>("PaymentMethodType")
                        .HasColumnType("tinyint unsigned");

                    b.Property<bool?>("Refunded")
                        .HasColumnType("tinyint(1)");

                    b.Property<decimal?>("RefundedAmount")
                        .HasColumnType("decimal(65,30)");

                    b.Property<byte>("Type")
                        .HasColumnType("tinyint unsigned");

                    b.Property<Guid?>("UserId")
                        .HasColumnType("char(36)");

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.HasIndex("UserId");

                    b.ToTable("Transaction");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.U2f", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");

                    b.Property<string>("AppId")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.Property<string>("Challenge")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("KeyHandle")
                        .HasMaxLength(200)
                        .HasColumnType("varchar(200)");

                    b.Property<Guid>("UserId")
                        .HasColumnType("char(36)");

                    b.Property<string>("Version")
                        .HasMaxLength(20)
                        .HasColumnType("varchar(20)");

                    b.HasKey("Id");

                    b.HasIndex("UserId");

                    b.ToTable("U2f");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.User", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("char(36)");

                    b.Property<DateTime>("AccountRevisionDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("ApiKey")
                        .IsRequired()
                        .HasMaxLength(30)
                        .HasColumnType("varchar(30)");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Culture")
                        .HasMaxLength(10)
                        .HasColumnType("varchar(10)");

                    b.Property<string>("Email")
                        .IsRequired()
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)");

                    b.Property<bool>("EmailVerified")
                        .HasColumnType("tinyint(1)");

                    b.Property<string>("EquivalentDomains")
                        .HasColumnType("longtext");

                    b.Property<string>("ExcludedGlobalEquivalentDomains")
                        .HasColumnType("longtext");

                    b.Property<byte?>("Gateway")
                        .HasColumnType("tinyint unsigned");

                    b.Property<string>("GatewayCustomerId")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.Property<string>("GatewaySubscriptionId")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.Property<byte>("Kdf")
                        .HasColumnType("tinyint unsigned");

                    b.Property<int>("KdfIterations")
                        .HasColumnType("int");

                    b.Property<string>("Key")
                        .HasColumnType("longtext");

                    b.Property<string>("LicenseKey")
                        .HasMaxLength(100)
                        .HasColumnType("varchar(100)");

                    b.Property<string>("MasterPassword")
                        .HasMaxLength(300)
                        .HasColumnType("varchar(300)");

                    b.Property<string>("MasterPasswordHint")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.Property<short?>("MaxStorageGb")
                        .HasColumnType("smallint");

                    b.Property<string>("Name")
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.Property<bool>("Premium")
                        .HasColumnType("tinyint(1)");

                    b.Property<DateTime?>("PremiumExpirationDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("PrivateKey")
                        .HasColumnType("longtext");

                    b.Property<string>("PublicKey")
                        .HasColumnType("longtext");

                    b.Property<string>("ReferenceData")
                        .HasColumnType("longtext");

                    b.Property<DateTime?>("RenewalReminderDate")
                        .HasColumnType("datetime(6)");

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("SecurityStamp")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("varchar(50)");

                    b.Property<long?>("Storage")
                        .HasColumnType("bigint");

                    b.Property<string>("TwoFactorProviders")
                        .HasColumnType("longtext");

                    b.Property<string>("TwoFactorRecoveryCode")
                        .HasMaxLength(32)
                        .HasColumnType("varchar(32)");

                    b.HasKey("Id");

                    b.ToTable("User");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Cipher", b =>
                {
                    b.HasOne("Bit.Core.Models.EntityFramework.Organization", "Organization")
                        .WithMany("Ciphers")
                        .HasForeignKey("OrganizationId");

                    b.HasOne("Bit.Core.Models.EntityFramework.User", "User")
                        .WithMany("Ciphers")
                        .HasForeignKey("UserId");

                    b.Navigation("Organization");

                    b.Navigation("User");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Collection", b =>
                {
                    b.HasOne("Bit.Core.Models.EntityFramework.Organization", "Organization")
                        .WithMany()
                        .HasForeignKey("OrganizationId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Organization");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.CollectionCipher", b =>
                {
                    b.HasOne("Bit.Core.Models.EntityFramework.Cipher", "Cipher")
                        .WithMany("CollectionCiphers")
                        .HasForeignKey("CipherId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Bit.Core.Models.EntityFramework.Collection", "Collection")
                        .WithMany("CollectionCiphers")
                        .HasForeignKey("CollectionId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Cipher");

                    b.Navigation("Collection");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.CollectionGroup", b =>
                {
                    b.HasOne("Bit.Core.Models.EntityFramework.Collection", "Collection")
                        .WithMany("CollectionGroups")
                        .HasForeignKey("CollectionId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Bit.Core.Models.EntityFramework.Group", "Group")
                        .WithMany()
                        .HasForeignKey("GroupId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Collection");

                    b.Navigation("Group");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.CollectionUser", b =>
                {
                    b.HasOne("Bit.Core.Models.EntityFramework.Collection", "Collection")
                        .WithMany("CollectionUsers")
                        .HasForeignKey("CollectionId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Bit.Core.Models.EntityFramework.OrganizationUser", "OrganizationUser")
                        .WithMany("CollectionUsers")
                        .HasForeignKey("OrganizationUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Bit.Core.Models.EntityFramework.User", null)
                        .WithMany("CollectionUsers")
                        .HasForeignKey("UserId");

                    b.Navigation("Collection");

                    b.Navigation("OrganizationUser");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Device", b =>
                {
                    b.HasOne("Bit.Core.Models.EntityFramework.User", "User")
                        .WithMany()
                        .HasForeignKey("UserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("User");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.EmergencyAccess", b =>
                {
                    b.HasOne("Bit.Core.Models.EntityFramework.User", "Grantee")
                        .WithMany()
                        .HasForeignKey("GranteeId");

                    b.HasOne("Bit.Core.Models.EntityFramework.User", "Grantor")
                        .WithMany()
                        .HasForeignKey("GrantorId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Grantee");

                    b.Navigation("Grantor");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Folder", b =>
                {
                    b.HasOne("Bit.Core.Models.EntityFramework.User", "User")
                        .WithMany("Folders")
                        .HasForeignKey("UserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("User");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Group", b =>
                {
                    b.HasOne("Bit.Core.Models.EntityFramework.Organization", "Organization")
                        .WithMany("Groups")
                        .HasForeignKey("OrganizationId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Organization");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.GroupUser", b =>
                {
                    b.HasOne("Bit.Core.Models.EntityFramework.Group", "Group")
                        .WithMany("GroupUsers")
                        .HasForeignKey("GroupId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Bit.Core.Models.EntityFramework.OrganizationUser", "OrganizationUser")
                        .WithMany()
                        .HasForeignKey("OrganizationUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Bit.Core.Models.EntityFramework.User", null)
                        .WithMany("GroupUsers")
                        .HasForeignKey("UserId");

                    b.Navigation("Group");

                    b.Navigation("OrganizationUser");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.OrganizationUser", b =>
                {
                    b.HasOne("Bit.Core.Models.EntityFramework.Organization", "Organization")
                        .WithMany("OrganizationUsers")
                        .HasForeignKey("OrganizationId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Bit.Core.Models.EntityFramework.User", "User")
                        .WithMany("OrganizationUsers")
                        .HasForeignKey("UserId");

                    b.Navigation("Organization");

                    b.Navigation("User");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Policy", b =>
                {
                    b.HasOne("Bit.Core.Models.EntityFramework.Organization", "Organization")
                        .WithMany("Policies")
                        .HasForeignKey("OrganizationId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Organization");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Provider.ProviderOrganization", b =>
                {
                    b.HasOne("Bit.Core.Models.EntityFramework.Organization", "Organization")
                        .WithMany()
                        .HasForeignKey("OrganizationId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Bit.Core.Models.EntityFramework.Provider.Provider", "Provider")
                        .WithMany()
                        .HasForeignKey("ProviderId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Organization");

                    b.Navigation("Provider");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Provider.ProviderOrganizationProviderUser", b =>
                {
                    b.HasOne("Bit.Core.Models.EntityFramework.Provider.ProviderOrganization", "ProviderOrganization")
                        .WithMany()
                        .HasForeignKey("ProviderOrganizationId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Bit.Core.Models.EntityFramework.Provider.ProviderUser", "ProviderUser")
                        .WithMany()
                        .HasForeignKey("ProviderUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("ProviderOrganization");

                    b.Navigation("ProviderUser");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Provider.ProviderUser", b =>
                {
                    b.HasOne("Bit.Core.Models.EntityFramework.Provider.Provider", "Provider")
                        .WithMany()
                        .HasForeignKey("ProviderId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Bit.Core.Models.EntityFramework.User", "User")
                        .WithMany()
                        .HasForeignKey("UserId");

                    b.Navigation("Provider");

                    b.Navigation("User");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Send", b =>
                {
                    b.HasOne("Bit.Core.Models.EntityFramework.Organization", "Organization")
                        .WithMany()
                        .HasForeignKey("OrganizationId");

                    b.HasOne("Bit.Core.Models.EntityFramework.User", "User")
                        .WithMany()
                        .HasForeignKey("UserId");

                    b.Navigation("Organization");

                    b.Navigation("User");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.SsoConfig", b =>
                {
                    b.HasOne("Bit.Core.Models.EntityFramework.Organization", "Organization")
                        .WithMany("SsoConfigs")
                        .HasForeignKey("OrganizationId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Organization");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.SsoUser", b =>
                {
                    b.HasOne("Bit.Core.Models.EntityFramework.Organization", "Organization")
                        .WithMany("SsoUsers")
                        .HasForeignKey("OrganizationId");

                    b.HasOne("Bit.Core.Models.EntityFramework.User", "User")
                        .WithMany("SsoUsers")
                        .HasForeignKey("UserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Organization");

                    b.Navigation("User");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Transaction", b =>
                {
                    b.HasOne("Bit.Core.Models.EntityFramework.Organization", "Organization")
                        .WithMany("Transactions")
                        .HasForeignKey("OrganizationId");

                    b.HasOne("Bit.Core.Models.EntityFramework.User", "User")
                        .WithMany("Transactions")
                        .HasForeignKey("UserId");

                    b.Navigation("Organization");

                    b.Navigation("User");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.U2f", b =>
                {
                    b.HasOne("Bit.Core.Models.EntityFramework.User", "User")
                        .WithMany("U2fs")
                        .HasForeignKey("UserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("User");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Cipher", b =>
                {
                    b.Navigation("CollectionCiphers");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Collection", b =>
                {
                    b.Navigation("CollectionCiphers");

                    b.Navigation("CollectionGroups");

                    b.Navigation("CollectionUsers");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Group", b =>
                {
                    b.Navigation("GroupUsers");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.Organization", b =>
                {
                    b.Navigation("Ciphers");

                    b.Navigation("Groups");

                    b.Navigation("OrganizationUsers");

                    b.Navigation("Policies");

                    b.Navigation("SsoConfigs");

                    b.Navigation("SsoUsers");

                    b.Navigation("Transactions");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.OrganizationUser", b =>
                {
                    b.Navigation("CollectionUsers");
                });

            modelBuilder.Entity("Bit.Core.Models.EntityFramework.User", b =>
                {
                    b.Navigation("Ciphers");

                    b.Navigation("CollectionUsers");

                    b.Navigation("Folders");

                    b.Navigation("GroupUsers");

                    b.Navigation("OrganizationUsers");

                    b.Navigation("SsoUsers");

                    b.Navigation("Transactions");

                    b.Navigation("U2fs");
                });
#pragma warning restore 612, 618
        }
    }
}