// <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;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;

#nullable disable

namespace Bit.PostgresMigrations.Migrations
{
    [DbContext(typeof(DatabaseContext))]
    [Migration("20230720200747_2023-07-11_00_CollectionManagePermission.sql")]
    partial class _20230711_00_CollectionManagePermissionsql
    {
        /// <inheritdoc />
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("Npgsql:CollationDefinition:postgresIndetermanisticCollation", "en-u-ks-primary,en-u-ks-primary,icu,False")
                .HasAnnotation("ProductVersion", "7.0.5")
                .HasAnnotation("Relational:MaxIdentifierLength", 63);

            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.Auth.Models.AuthRequest", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("uuid");

                    b.Property<string>("AccessCode")
                        .HasMaxLength(25)
                        .HasColumnType("character varying(25)");

                    b.Property<bool?>("Approved")
                        .HasColumnType("boolean");

                    b.Property<DateTime?>("AuthenticationDate")
                        .HasColumnType("timestamp with time zone");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

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

                    b.Property<string>("MasterPasswordHash")
                        .HasColumnType("text");

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

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

                    b.Property<string>("RequestDeviceIdentifier")
                        .HasMaxLength(50)
                        .HasColumnType("character varying(50)");

                    b.Property<byte>("RequestDeviceType")
                        .HasColumnType("smallint");

                    b.Property<string>("RequestIpAddress")
                        .HasMaxLength(50)
                        .HasColumnType("character varying(50)");

                    b.Property<DateTime?>("ResponseDate")
                        .HasColumnType("timestamp with time zone");

                    b.Property<Guid?>("ResponseDeviceId")
                        .HasColumnType("uuid");

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

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

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.HasIndex("ResponseDeviceId");

                    b.HasIndex("UserId");

                    b.ToTable("AuthRequest", (string)null);
                });

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.Auth.Models.EmergencyAccess", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("uuid");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

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

                    b.Property<DateTime?>("LastNotificationDate")
                        .HasColumnType("timestamp with time zone");

                    b.Property<DateTime?>("RecoveryInitiatedDate")
                        .HasColumnType("timestamp with time zone");

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

                    b.HasKey("Id");

                    b.HasIndex("GranteeId");

                    b.HasIndex("GrantorId");

                    b.ToTable("EmergencyAccess", (string)null);
                });

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.Auth.Models.Grant", b =>
                {
                    b.Property<string>("Key")
                        .HasMaxLength(200)
                        .HasColumnType("character varying(200)");

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

                    b.Property<DateTime?>("ConsumedDate")
                        .HasColumnType("timestamp with time zone");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

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

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

                    b.Property<DateTime?>("ExpirationDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

                    b.HasKey("Key");

                    b.ToTable("Grant", (string)null);
                });

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

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("timestamp with time zone");

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.ToTable("SsoConfig", (string)null);
                });

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

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

                    b.Property<string>("ExternalId")
                        .HasMaxLength(50)
                        .HasColumnType("character varying(50)")
                        .UseCollation("postgresIndetermanisticCollation");

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

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

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.HasIndex("UserId");

                    b.ToTable("SsoUser", (string)null);
                });

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

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("timestamp with time zone");

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.ToTable("Collection", (string)null);
                });

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

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

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

                    b.HasIndex("CipherId");

                    b.ToTable("CollectionCipher", (string)null);
                });

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

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

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

                    b.Property<bool>("Manage")
                        .HasColumnType("boolean");

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

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

                    b.HasIndex("GroupId");

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

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

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

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

                    b.Property<bool>("Manage")
                        .HasColumnType("boolean");

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

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

                    b.HasIndex("OrganizationUserId");

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

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

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

                    b.Property<string>("EncryptedPrivateKey")
                        .HasColumnType("text");

                    b.Property<string>("EncryptedPublicKey")
                        .HasColumnType("text");

                    b.Property<string>("EncryptedUserKey")
                        .HasColumnType("text");

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

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

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

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("timestamp with time zone");

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

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

                    b.HasKey("Id");

                    b.HasIndex("UserId");

                    b.ToTable("Device", (string)null);
                });

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

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

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

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

                    b.Property<DateTime>("Date")
                        .HasColumnType("timestamp with time zone");

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

                    b.Property<string>("DomainName")
                        .HasColumnType("text");

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

                    b.Property<Guid?>("InstallationId")
                        .HasColumnType("uuid");

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

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

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

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

                    b.Property<Guid?>("ProviderId")
                        .HasColumnType("uuid");

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

                    b.Property<Guid?>("ProviderUserId")
                        .HasColumnType("uuid");

                    b.Property<Guid?>("SecretId")
                        .HasColumnType("uuid");

                    b.Property<Guid?>("ServiceAccountId")
                        .HasColumnType("uuid");

                    b.Property<byte?>("SystemUser")
                        .HasColumnType("smallint");

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

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

                    b.HasKey("Id");

                    b.ToTable("Event", (string)null);
                });

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

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

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("timestamp with time zone");

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.ToTable("Group", (string)null);
                });

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

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

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

                    b.HasIndex("OrganizationUserId");

                    b.ToTable("GroupUser", (string)null);
                });

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

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

                    b.HasKey("Id");

                    b.ToTable("Installation", (string)null);
                });

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

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

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

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

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

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

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

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

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

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

                    b.Property<DateTime?>("ExpirationDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

                    b.Property<string>("Identifier")
                        .HasMaxLength(50)
                        .HasColumnType("character varying(50)")
                        .UseCollation("postgresIndetermanisticCollation");

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

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

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

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

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

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

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

                    b.Property<DateTime?>("OwnersNotifiedOfAutoscaling")
                        .HasColumnType("timestamp with time zone");

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

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

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

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

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

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

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

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

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

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

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

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

                    b.Property<bool>("UseCustomPermissions")
                        .HasColumnType("boolean");

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

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

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

                    b.Property<bool>("UseKeyConnector")
                        .HasColumnType("boolean");

                    b.Property<bool>("UsePasswordManager")
                        .HasColumnType("boolean");

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

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

                    b.Property<bool>("UseScim")
                        .HasColumnType("boolean");

                    b.Property<bool>("UseSecretsManager")
                        .HasColumnType("boolean");

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

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

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

                    b.HasKey("Id");

                    b.ToTable("Organization", (string)null);
                });

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

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

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

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("timestamp with time zone");

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

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.ToTable("OrganizationApiKey", (string)null);
                });

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

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

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

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

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

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.ToTable("OrganizationConnection", (string)null);
                });

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

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

                    b.Property<string>("DomainName")
                        .HasMaxLength(255)
                        .HasColumnType("character varying(255)");

                    b.Property<int>("JobRunCount")
                        .HasColumnType("integer");

                    b.Property<DateTime?>("LastCheckedDate")
                        .HasColumnType("timestamp with time zone");

                    b.Property<DateTime>("NextRunDate")
                        .HasColumnType("timestamp with time zone");

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

                    b.Property<string>("Txt")
                        .HasColumnType("text");

                    b.Property<DateTime?>("VerifiedDate")
                        .HasColumnType("timestamp with time zone");

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.ToTable("OrganizationDomain", (string)null);
                });

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

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

                    b.Property<DateTime?>("LastSyncDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

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

                    b.Property<Guid>("SponsoringOrganizationUserId")
                        .HasColumnType("uuid");

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

                    b.Property<DateTime?>("ValidUntil")
                        .HasColumnType("timestamp with time zone");

                    b.HasKey("Id");

                    b.HasIndex("SponsoredOrganizationId");

                    b.HasIndex("SponsoringOrganizationId");

                    b.ToTable("OrganizationSponsorship", (string)null);
                });

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

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

                    b.Property<bool>("AccessSecretsManager")
                        .HasColumnType("boolean");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

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

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

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

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.HasIndex("UserId");

                    b.ToTable("OrganizationUser", (string)null);
                });

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

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("timestamp with time zone");

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

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.ToTable("Policy", (string)null);
                });

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

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

                    b.Property<string>("BillingPhone")
                        .HasColumnType("text");

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

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

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

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

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

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

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

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

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

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

                    b.HasKey("Id");

                    b.ToTable("Provider", (string)null);
                });

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

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("timestamp with time zone");

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

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.HasIndex("ProviderId");

                    b.ToTable("ProviderOrganization", (string)null);
                });

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

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

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

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

                    b.HasKey("Id");

                    b.HasIndex("ProviderId");

                    b.HasIndex("UserId");

                    b.ToTable("ProviderUser", (string)null);
                });

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

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

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

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

                    b.Property<DateTime>("DeletionDate")
                        .HasColumnType("timestamp with time zone");

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

                    b.Property<DateTime?>("ExpirationDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

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

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

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("timestamp with time zone");

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

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

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.HasIndex("UserId");

                    b.ToTable("Send", (string)null);
                });

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

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

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

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

                    b.Property<decimal>("Rate")
                        .HasColumnType("numeric");

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

                    b.HasKey("Id");

                    b.ToTable("TaxRate", (string)null);
                });

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

                    b.Property<decimal>("Amount")
                        .HasColumnType("numeric");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

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

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

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

                    b.Property<decimal?>("RefundedAmount")
                        .HasColumnType("numeric");

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

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

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.HasIndex("UserId");

                    b.ToTable("Transaction", (string)null);
                });

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

                    b.Property<DateTime>("AccountRevisionDate")
                        .HasColumnType("timestamp with time zone");

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

                    b.Property<string>("AvatarColor")
                        .HasMaxLength(7)
                        .HasColumnType("character varying(7)");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

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

                    b.Property<string>("Email")
                        .IsRequired()
                        .HasMaxLength(256)
                        .HasColumnType("character varying(256)")
                        .UseCollation("postgresIndetermanisticCollation");

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

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

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

                    b.Property<int>("FailedLoginCount")
                        .HasColumnType("integer");

                    b.Property<bool>("ForcePasswordReset")
                        .HasColumnType("boolean");

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

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

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

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

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

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

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

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

                    b.Property<DateTime?>("LastEmailChangeDate")
                        .HasColumnType("timestamp with time zone");

                    b.Property<DateTime?>("LastFailedLoginDate")
                        .HasColumnType("timestamp with time zone");

                    b.Property<DateTime?>("LastKdfChangeDate")
                        .HasColumnType("timestamp with time zone");

                    b.Property<DateTime?>("LastKeyRotationDate")
                        .HasColumnType("timestamp with time zone");

                    b.Property<DateTime?>("LastPasswordChangeDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

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

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

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

                    b.Property<DateTime?>("PremiumExpirationDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

                    b.Property<DateTime?>("RenewalReminderDate")
                        .HasColumnType("timestamp with time zone");

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

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

                    b.Property<bool>("UsesKeyConnector")
                        .HasColumnType("boolean");

                    b.HasKey("Id");

                    b.ToTable("User", (string)null);
                });

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.SecretsManager.Models.AccessPolicy", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("uuid");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

                    b.Property<string>("Discriminator")
                        .IsRequired()
                        .HasColumnType("text");

                    b.Property<bool>("Read")
                        .HasColumnType("boolean");

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("timestamp with time zone");

                    b.Property<bool>("Write")
                        .HasColumnType("boolean");

                    b.HasKey("Id")
                        .HasAnnotation("SqlServer:Clustered", true);

                    b.ToTable("AccessPolicy", (string)null);

                    b.HasDiscriminator<string>("Discriminator").HasValue("AccessPolicy");

                    b.UseTphMappingStrategy();
                });

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.SecretsManager.Models.ApiKey", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("uuid");

                    b.Property<string>("ClientSecretHash")
                        .HasMaxLength(128)
                        .HasColumnType("character varying(128)");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

                    b.Property<string>("EncryptedPayload")
                        .HasMaxLength(4000)
                        .HasColumnType("character varying(4000)");

                    b.Property<DateTime?>("ExpireAt")
                        .HasColumnType("timestamp with time zone");

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

                    b.Property<string>("Name")
                        .HasMaxLength(200)
                        .HasColumnType("character varying(200)");

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("timestamp with time zone");

                    b.Property<string>("Scope")
                        .HasMaxLength(4000)
                        .HasColumnType("character varying(4000)");

                    b.Property<Guid?>("ServiceAccountId")
                        .HasColumnType("uuid");

                    b.HasKey("Id")
                        .HasAnnotation("SqlServer:Clustered", true);

                    b.HasIndex("ServiceAccountId")
                        .HasAnnotation("SqlServer:Clustered", false);

                    b.ToTable("ApiKey", (string)null);
                });

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.SecretsManager.Models.Project", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("uuid");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

                    b.Property<DateTime?>("DeletedDate")
                        .HasColumnType("timestamp with time zone");

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

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

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("timestamp with time zone");

                    b.HasKey("Id")
                        .HasAnnotation("SqlServer:Clustered", true);

                    b.HasIndex("DeletedDate")
                        .HasAnnotation("SqlServer:Clustered", false);

                    b.HasIndex("OrganizationId")
                        .HasAnnotation("SqlServer:Clustered", false);

                    b.ToTable("Project", (string)null);
                });

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.SecretsManager.Models.Secret", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("uuid");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

                    b.Property<DateTime?>("DeletedDate")
                        .HasColumnType("timestamp with time zone");

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

                    b.Property<string>("Note")
                        .HasColumnType("text");

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

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("timestamp with time zone");

                    b.Property<string>("Value")
                        .HasColumnType("text");

                    b.HasKey("Id")
                        .HasAnnotation("SqlServer:Clustered", true);

                    b.HasIndex("DeletedDate")
                        .HasAnnotation("SqlServer:Clustered", false);

                    b.HasIndex("OrganizationId")
                        .HasAnnotation("SqlServer:Clustered", false);

                    b.ToTable("Secret", (string)null);
                });

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.SecretsManager.Models.ServiceAccount", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("uuid");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

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

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

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("timestamp with time zone");

                    b.HasKey("Id")
                        .HasAnnotation("SqlServer:Clustered", true);

                    b.HasIndex("OrganizationId")
                        .HasAnnotation("SqlServer:Clustered", false);

                    b.ToTable("ServiceAccount", (string)null);
                });

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.Vault.Models.Cipher", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("uuid");

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

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

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

                    b.Property<DateTime?>("DeletedDate")
                        .HasColumnType("timestamp with time zone");

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

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

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

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

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("timestamp with time zone");

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

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

                    b.HasKey("Id");

                    b.HasIndex("OrganizationId");

                    b.HasIndex("UserId");

                    b.ToTable("Cipher", (string)null);
                });

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.Vault.Models.Folder", b =>
                {
                    b.Property<Guid>("Id")
                        .HasColumnType("uuid");

                    b.Property<DateTime>("CreationDate")
                        .HasColumnType("timestamp with time zone");

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

                    b.Property<DateTime>("RevisionDate")
                        .HasColumnType("timestamp with time zone");

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

                    b.HasKey("Id");

                    b.HasIndex("UserId");

                    b.ToTable("Folder", (string)null);
                });

            modelBuilder.Entity("ProjectSecret", b =>
                {
                    b.Property<Guid>("ProjectsId")
                        .HasColumnType("uuid");

                    b.Property<Guid>("SecretsId")
                        .HasColumnType("uuid");

                    b.HasKey("ProjectsId", "SecretsId");

                    b.HasIndex("SecretsId");

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

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.SecretsManager.Models.GroupProjectAccessPolicy", b =>
                {
                    b.HasBaseType("Bit.Infrastructure.EntityFramework.SecretsManager.Models.AccessPolicy");

                    b.Property<Guid?>("GrantedProjectId")
                        .ValueGeneratedOnUpdateSometimes()
                        .HasColumnType("uuid")
                        .HasColumnName("GrantedProjectId");

                    b.Property<Guid?>("GroupId")
                        .ValueGeneratedOnUpdateSometimes()
                        .HasColumnType("uuid")
                        .HasColumnName("GroupId");

                    b.HasIndex("GrantedProjectId");

                    b.HasIndex("GroupId");

                    b.HasDiscriminator().HasValue("group_project");
                });

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.SecretsManager.Models.GroupServiceAccountAccessPolicy", b =>
                {
                    b.HasBaseType("Bit.Infrastructure.EntityFramework.SecretsManager.Models.AccessPolicy");

                    b.Property<Guid?>("GrantedServiceAccountId")
                        .ValueGeneratedOnUpdateSometimes()
                        .HasColumnType("uuid")
                        .HasColumnName("GrantedServiceAccountId");

                    b.Property<Guid?>("GroupId")
                        .ValueGeneratedOnUpdateSometimes()
                        .HasColumnType("uuid")
                        .HasColumnName("GroupId");

                    b.HasIndex("GrantedServiceAccountId");

                    b.HasIndex("GroupId");

                    b.HasDiscriminator().HasValue("group_service_account");
                });

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.SecretsManager.Models.ServiceAccountProjectAccessPolicy", b =>
                {
                    b.HasBaseType("Bit.Infrastructure.EntityFramework.SecretsManager.Models.AccessPolicy");

                    b.Property<Guid?>("GrantedProjectId")
                        .ValueGeneratedOnUpdateSometimes()
                        .HasColumnType("uuid")
                        .HasColumnName("GrantedProjectId");

                    b.Property<Guid?>("ServiceAccountId")
                        .HasColumnType("uuid")
                        .HasColumnName("ServiceAccountId");

                    b.HasIndex("GrantedProjectId");

                    b.HasIndex("ServiceAccountId");

                    b.HasDiscriminator().HasValue("service_account_project");
                });

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.SecretsManager.Models.UserProjectAccessPolicy", b =>
                {
                    b.HasBaseType("Bit.Infrastructure.EntityFramework.SecretsManager.Models.AccessPolicy");

                    b.Property<Guid?>("GrantedProjectId")
                        .ValueGeneratedOnUpdateSometimes()
                        .HasColumnType("uuid")
                        .HasColumnName("GrantedProjectId");

                    b.Property<Guid?>("OrganizationUserId")
                        .ValueGeneratedOnUpdateSometimes()
                        .HasColumnType("uuid")
                        .HasColumnName("OrganizationUserId");

                    b.HasIndex("GrantedProjectId");

                    b.HasIndex("OrganizationUserId");

                    b.HasDiscriminator().HasValue("user_project");
                });

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.SecretsManager.Models.UserServiceAccountAccessPolicy", b =>
                {
                    b.HasBaseType("Bit.Infrastructure.EntityFramework.SecretsManager.Models.AccessPolicy");

                    b.Property<Guid?>("GrantedServiceAccountId")
                        .ValueGeneratedOnUpdateSometimes()
                        .HasColumnType("uuid")
                        .HasColumnName("GrantedServiceAccountId");

                    b.Property<Guid?>("OrganizationUserId")
                        .ValueGeneratedOnUpdateSometimes()
                        .HasColumnType("uuid")
                        .HasColumnName("OrganizationUserId");

                    b.HasIndex("GrantedServiceAccountId");

                    b.HasIndex("OrganizationUserId");

                    b.HasDiscriminator().HasValue("user_service_account");
                });

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

                    b.HasOne("Bit.Infrastructure.EntityFramework.Models.Device", "ResponseDevice")
                        .WithMany()
                        .HasForeignKey("ResponseDeviceId");

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

                    b.Navigation("Organization");

                    b.Navigation("ResponseDevice");

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

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.Auth.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.Auth.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.Auth.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.Collection", b =>
                {
                    b.HasOne("Bit.Infrastructure.EntityFramework.Models.Organization", "Organization")
                        .WithMany("Collections")
                        .HasForeignKey("OrganizationId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

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

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.Models.CollectionCipher", b =>
                {
                    b.HasOne("Bit.Infrastructure.EntityFramework.Vault.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.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.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("GroupUsers")
                        .HasForeignKey("OrganizationUserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    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.OrganizationDomain", b =>
                {
                    b.HasOne("Bit.Infrastructure.EntityFramework.Models.Organization", "Organization")
                        .WithMany("Domains")
                        .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.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.SecretsManager.Models.ApiKey", b =>
                {
                    b.HasOne("Bit.Infrastructure.EntityFramework.SecretsManager.Models.ServiceAccount", "ServiceAccount")
                        .WithMany()
                        .HasForeignKey("ServiceAccountId");

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

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

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

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

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

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

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

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.Vault.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.Vault.Models.Folder", b =>
                {
                    b.HasOne("Bit.Infrastructure.EntityFramework.Models.User", "User")
                        .WithMany("Folders")
                        .HasForeignKey("UserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

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

            modelBuilder.Entity("ProjectSecret", b =>
                {
                    b.HasOne("Bit.Infrastructure.EntityFramework.SecretsManager.Models.Project", null)
                        .WithMany()
                        .HasForeignKey("ProjectsId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Bit.Infrastructure.EntityFramework.SecretsManager.Models.Secret", null)
                        .WithMany()
                        .HasForeignKey("SecretsId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.SecretsManager.Models.GroupProjectAccessPolicy", b =>
                {
                    b.HasOne("Bit.Infrastructure.EntityFramework.SecretsManager.Models.Project", "GrantedProject")
                        .WithMany("GroupAccessPolicies")
                        .HasForeignKey("GrantedProjectId");

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

                    b.Navigation("GrantedProject");

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

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.SecretsManager.Models.GroupServiceAccountAccessPolicy", b =>
                {
                    b.HasOne("Bit.Infrastructure.EntityFramework.SecretsManager.Models.ServiceAccount", "GrantedServiceAccount")
                        .WithMany("GroupAccessPolicies")
                        .HasForeignKey("GrantedServiceAccountId");

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

                    b.Navigation("GrantedServiceAccount");

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

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.SecretsManager.Models.ServiceAccountProjectAccessPolicy", b =>
                {
                    b.HasOne("Bit.Infrastructure.EntityFramework.SecretsManager.Models.Project", "GrantedProject")
                        .WithMany("ServiceAccountAccessPolicies")
                        .HasForeignKey("GrantedProjectId");

                    b.HasOne("Bit.Infrastructure.EntityFramework.SecretsManager.Models.ServiceAccount", "ServiceAccount")
                        .WithMany()
                        .HasForeignKey("ServiceAccountId");

                    b.Navigation("GrantedProject");

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

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.SecretsManager.Models.UserProjectAccessPolicy", b =>
                {
                    b.HasOne("Bit.Infrastructure.EntityFramework.SecretsManager.Models.Project", "GrantedProject")
                        .WithMany("UserAccessPolicies")
                        .HasForeignKey("GrantedProjectId");

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

                    b.Navigation("GrantedProject");

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

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.SecretsManager.Models.UserServiceAccountAccessPolicy", b =>
                {
                    b.HasOne("Bit.Infrastructure.EntityFramework.SecretsManager.Models.ServiceAccount", "GrantedServiceAccount")
                        .WithMany("UserAccessPolicies")
                        .HasForeignKey("GrantedServiceAccountId");

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

                    b.Navigation("GrantedServiceAccount");

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

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

                    b.Navigation("Connections");

                    b.Navigation("Domains");

                    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");

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

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

                    b.Navigation("Folders");

                    b.Navigation("OrganizationUsers");

                    b.Navigation("SsoUsers");

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

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.SecretsManager.Models.Project", b =>
                {
                    b.Navigation("GroupAccessPolicies");

                    b.Navigation("ServiceAccountAccessPolicies");

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

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.SecretsManager.Models.ServiceAccount", b =>
                {
                    b.Navigation("GroupAccessPolicies");

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

            modelBuilder.Entity("Bit.Infrastructure.EntityFramework.Vault.Models.Cipher", b =>
                {
                    b.Navigation("CollectionCiphers");
                });
#pragma warning restore 612, 618
        }
    }
}