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

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

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.Models.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.Infrastructure.EntityFramework.Models.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.Infrastructure.EntityFramework.Models.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.Infrastructure.EntityFramework.Models.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.Infrastructure.EntityFramework.Models.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.Infrastructure.EntityFramework.Models.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.Infrastructure.EntityFramework.Models.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.Infrastructure.EntityFramework.Models.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<Guid?>("ProviderId")
                        .HasColumnType("char(36)");

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

                    b.Property<Guid?>("ProviderUserId")
                        .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.Infrastructure.EntityFramework.Models.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.Infrastructure.EntityFramework.Models.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.Infrastructure.EntityFramework.Models.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.Infrastructure.EntityFramework.Models.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.Infrastructure.EntityFramework.Models.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.Infrastructure.EntityFramework.Models.Organization", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("char(36)");

                    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<int?>("MaxAutoscaleSeats")
                        .HasColumnType("int");

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

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

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

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

                    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>("UseKeyConnector")
                        .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.Infrastructure.EntityFramework.Models.OrganizationApiKey", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("char(36)");

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

                    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("OrganizationApiKey");
                });

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

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

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

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

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

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

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

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

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

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

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

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

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

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

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

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

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

                    b.HasKey("Id");

                    b.HasIndex("SponsoredOrganizationId");

                    b.HasIndex("SponsoringOrganizationId");

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

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.Models.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.Infrastructure.EntityFramework.Models.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.Infrastructure.EntityFramework.Models.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.Property<bool>("UseEvents")
                        .HasColumnType("tinyint(1)");

                    b.HasKey("Id");

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

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.Models.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.Infrastructure.EntityFramework.Models.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.Infrastructure.EntityFramework.Models.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.Infrastructure.EntityFramework.Models.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.Infrastructure.EntityFramework.Models.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.Infrastructure.EntityFramework.Models.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.Infrastructure.EntityFramework.Models.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.Infrastructure.EntityFramework.Models.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<bool>("ForcePasswordReset")
                        .HasColumnType("tinyint(1)");

                    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.Property<bool>("UsesKeyConnector")
                        .HasColumnType("tinyint(1)");

                    b.HasKey("Id");

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

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

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

                    b.Navigation("Organization");

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

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

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

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

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

                    b.Navigation("Cipher");

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

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

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

                    b.Navigation("Collection");

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

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

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

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

                    b.Navigation("Collection");

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

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

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

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

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

                    b.Navigation("Grantee");

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

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

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

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

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

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

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

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

                    b.Navigation("Group");

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

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

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

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

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

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.Models.OrganizationSponsorship", b =>
                {
                    b.HasOne("Bit.Infrastructure.EntityFramework.Models.Organization", "SponsoredOrganization")
                        .WithMany()
                        .HasForeignKey("SponsoredOrganizationId");

                    b.HasOne("Bit.Infrastructure.EntityFramework.Models.Organization", "SponsoringOrganization")
                        .WithMany()
                        .HasForeignKey("SponsoringOrganizationId");

                    b.Navigation("SponsoredOrganization");

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

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

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

                    b.Navigation("Organization");

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

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

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

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

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

                    b.Navigation("Organization");

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

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

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

                    b.Navigation("Provider");

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

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

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

                    b.Navigation("Organization");

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

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

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

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

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

                    b.Navigation("Organization");

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

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

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

                    b.Navigation("Organization");

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

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

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

                    b.Navigation("CollectionGroups");

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

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

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

                    b.Navigation("Ciphers");

                    b.Navigation("Connections");

                    b.Navigation("Groups");

                    b.Navigation("OrganizationUsers");

                    b.Navigation("Policies");

                    b.Navigation("SsoConfigs");

                    b.Navigation("SsoUsers");

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

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

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

                    b.Navigation("CollectionUsers");

                    b.Navigation("Folders");

                    b.Navigation("GroupUsers");

                    b.Navigation("OrganizationUsers");

                    b.Navigation("SsoUsers");

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