// <auto-generated />
using System;
using Data.MigrationContext;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;

#nullable disable

namespace Data.Migrations.Sqlite
{
    [DbContext(typeof(SqliteDatabaseContext))]
    [Migration("20220402211115_AddSearchableIPToEFAlias")]
    partial class AddSearchableIPToEFAlias
    {
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder.HasAnnotation("ProductVersion", "6.0.1");

            modelBuilder.Entity("Data.Models.Client.EFACSnapshotVector3", b =>
                {
                    b.Property<int>("ACSnapshotVector3Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

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

                    b.Property<int>("SnapshotId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("Vector3Id")
                        .HasColumnType("INTEGER");

                    b.HasKey("ACSnapshotVector3Id");

                    b.HasIndex("SnapshotId");

                    b.HasIndex("Vector3Id");

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

            modelBuilder.Entity("Data.Models.Client.EFClient", b =>
                {
                    b.Property<int>("ClientId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

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

                    b.Property<int>("AliasLinkId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("Connections")
                        .HasColumnType("INTEGER");

                    b.Property<int>("CurrentAliasId")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("FirstConnection")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("LastConnection")
                        .HasColumnType("TEXT");

                    b.Property<int>("Level")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("Masked")
                        .HasColumnType("INTEGER");

                    b.Property<long>("NetworkId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Password")
                        .HasColumnType("TEXT");

                    b.Property<string>("PasswordSalt")
                        .HasColumnType("TEXT");

                    b.Property<int>("TotalConnectionTime")
                        .HasColumnType("INTEGER");

                    b.HasKey("ClientId");

                    b.HasIndex("AliasLinkId");

                    b.HasIndex("CurrentAliasId");

                    b.HasIndex("NetworkId")
                        .IsUnique();

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

            modelBuilder.Entity("Data.Models.Client.EFClientConnectionHistory", b =>
                {
                    b.Property<long>("ClientConnectionId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("ClientId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("ConnectionType")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("CreatedDateTime")
                        .HasColumnType("TEXT");

                    b.Property<long>("ServerId")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime?>("UpdatedDateTime")
                        .HasColumnType("TEXT");

                    b.HasKey("ClientConnectionId");

                    b.HasIndex("ClientId");

                    b.HasIndex("CreatedDateTime");

                    b.HasIndex("ServerId");

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

            modelBuilder.Entity("Data.Models.Client.EFClientKill", b =>
                {
                    b.Property<long>("KillId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

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

                    b.Property<int>("AttackerId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("Damage")
                        .HasColumnType("INTEGER");

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

                    b.Property<int>("DeathType")
                        .HasColumnType("INTEGER");

                    b.Property<double>("Fraction")
                        .HasColumnType("REAL");

                    b.Property<int>("HitLoc")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("IsKill")
                        .HasColumnType("INTEGER");

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

                    b.Property<int>("Map")
                        .HasColumnType("INTEGER");

                    b.Property<long>("ServerId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("VictimId")
                        .HasColumnType("INTEGER");

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

                    b.Property<double>("VisibilityPercentage")
                        .HasColumnType("REAL");

                    b.Property<int>("Weapon")
                        .HasColumnType("INTEGER");

                    b.Property<string>("WeaponReference")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("When")
                        .HasColumnType("TEXT");

                    b.HasKey("KillId");

                    b.HasIndex("AttackerId");

                    b.HasIndex("DeathOriginVector3Id");

                    b.HasIndex("KillOriginVector3Id");

                    b.HasIndex("ServerId");

                    b.HasIndex("VictimId");

                    b.HasIndex("ViewAnglesVector3Id");

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

            modelBuilder.Entity("Data.Models.Client.EFClientMessage", b =>
                {
                    b.Property<long>("MessageId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

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

                    b.Property<int>("ClientId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Message")
                        .HasColumnType("TEXT");

                    b.Property<bool>("SentIngame")
                        .HasColumnType("INTEGER");

                    b.Property<long>("ServerId")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("TimeSent")
                        .HasColumnType("TEXT");

                    b.HasKey("MessageId");

                    b.HasIndex("ClientId");

                    b.HasIndex("ServerId");

                    b.HasIndex("TimeSent");

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

            modelBuilder.Entity("Data.Models.Client.Stats.EFACSnapshot", b =>
                {
                    b.Property<int>("SnapshotId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

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

                    b.Property<int>("ClientId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("CurrentSessionLength")
                        .HasColumnType("INTEGER");

                    b.Property<double>("CurrentStrain")
                        .HasColumnType("REAL");

                    b.Property<int>("CurrentViewAngleId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("Deaths")
                        .HasColumnType("INTEGER");

                    b.Property<double>("Distance")
                        .HasColumnType("REAL");

                    b.Property<double>("EloRating")
                        .HasColumnType("REAL");

                    b.Property<int>("HitDestinationId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("HitLocation")
                        .HasColumnType("INTEGER");

                    b.Property<string>("HitLocationReference")
                        .HasColumnType("TEXT");

                    b.Property<int>("HitOriginId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("HitType")
                        .HasColumnType("INTEGER");

                    b.Property<int>("Hits")
                        .HasColumnType("INTEGER");

                    b.Property<int>("Kills")
                        .HasColumnType("INTEGER");

                    b.Property<int>("LastStrainAngleId")
                        .HasColumnType("INTEGER");

                    b.Property<double>("RecoilOffset")
                        .HasColumnType("REAL");

                    b.Property<long?>("ServerId")
                        .HasColumnType("INTEGER");

                    b.Property<double>("SessionAngleOffset")
                        .HasColumnType("REAL");

                    b.Property<double>("SessionAverageSnapValue")
                        .HasColumnType("REAL");

                    b.Property<double>("SessionSPM")
                        .HasColumnType("REAL");

                    b.Property<int>("SessionScore")
                        .HasColumnType("INTEGER");

                    b.Property<int>("SessionSnapHits")
                        .HasColumnType("INTEGER");

                    b.Property<double>("StrainAngleBetween")
                        .HasColumnType("REAL");

                    b.Property<int>("TimeSinceLastEvent")
                        .HasColumnType("INTEGER");

                    b.Property<int>("WeaponId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("WeaponReference")
                        .HasColumnType("TEXT");

                    b.Property<DateTime>("When")
                        .HasColumnType("TEXT");

                    b.HasKey("SnapshotId");

                    b.HasIndex("ClientId");

                    b.HasIndex("CurrentViewAngleId");

                    b.HasIndex("HitDestinationId");

                    b.HasIndex("HitOriginId");

                    b.HasIndex("LastStrainAngleId");

                    b.HasIndex("ServerId");

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

            modelBuilder.Entity("Data.Models.Client.Stats.EFClientHitStatistic", b =>
                {
                    b.Property<int>("ClientHitStatisticId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("ClientId")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("CreatedDateTime")
                        .HasColumnType("TEXT");

                    b.Property<int>("DamageInflicted")
                        .HasColumnType("INTEGER");

                    b.Property<int>("DamageReceived")
                        .HasColumnType("INTEGER");

                    b.Property<int>("DeathCount")
                        .HasColumnType("INTEGER");

                    b.Property<int>("HitCount")
                        .HasColumnType("INTEGER");

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

                    b.Property<int>("KillCount")
                        .HasColumnType("INTEGER");

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

                    b.Property<int>("ReceivedHitCount")
                        .HasColumnType("INTEGER");

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

                    b.Property<long?>("ServerId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("SuicideCount")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime?>("UpdatedDateTime")
                        .HasColumnType("TEXT");

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

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

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

                    b.HasKey("ClientHitStatisticId");

                    b.HasIndex("ClientId");

                    b.HasIndex("HitLocationId");

                    b.HasIndex("MeansOfDeathId");

                    b.HasIndex("ServerId");

                    b.HasIndex("WeaponAttachmentComboId");

                    b.HasIndex("WeaponId");

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

            modelBuilder.Entity("Data.Models.Client.Stats.EFClientRankingHistory", b =>
                {
                    b.Property<long>("ClientRankingHistoryId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("ClientId")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("CreatedDateTime")
                        .HasColumnType("TEXT");

                    b.Property<bool>("Newest")
                        .HasColumnType("INTEGER");

                    b.Property<double?>("PerformanceMetric")
                        .HasColumnType("REAL");

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

                    b.Property<long?>("ServerId")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime?>("UpdatedDateTime")
                        .HasColumnType("TEXT");

                    b.Property<double?>("ZScore")
                        .HasColumnType("REAL");

                    b.HasKey("ClientRankingHistoryId");

                    b.HasIndex("ClientId");

                    b.HasIndex("Ranking");

                    b.HasIndex("ServerId");

                    b.HasIndex("UpdatedDateTime");

                    b.HasIndex("ZScore");

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

            modelBuilder.Entity("Data.Models.Client.Stats.EFClientRatingHistory", b =>
                {
                    b.Property<int>("RatingHistoryId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

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

                    b.Property<int>("ClientId")
                        .HasColumnType("INTEGER");

                    b.HasKey("RatingHistoryId");

                    b.HasIndex("ClientId");

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

            modelBuilder.Entity("Data.Models.Client.Stats.EFClientStatistics", b =>
                {
                    b.Property<int>("ClientId")
                        .HasColumnType("INTEGER");

                    b.Property<long>("ServerId")
                        .HasColumnType("INTEGER");

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

                    b.Property<double>("AverageSnapValue")
                        .HasColumnType("REAL");

                    b.Property<int>("Deaths")
                        .HasColumnType("INTEGER");

                    b.Property<double>("EloRating")
                        .HasColumnType("REAL");

                    b.Property<int>("Kills")
                        .HasColumnType("INTEGER");

                    b.Property<double>("MaxStrain")
                        .HasColumnType("REAL");

                    b.Property<double>("RollingWeightedKDR")
                        .HasColumnType("REAL");

                    b.Property<double>("SPM")
                        .HasColumnType("REAL");

                    b.Property<double>("Skill")
                        .HasColumnType("REAL");

                    b.Property<int>("SnapHitCount")
                        .HasColumnType("INTEGER");

                    b.Property<int>("TimePlayed")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("TEXT");

                    b.Property<double>("ZScore")
                        .HasColumnType("REAL");

                    b.HasKey("ClientId", "ServerId");

                    b.HasIndex("ServerId");

                    b.HasIndex("ZScore");

                    b.HasIndex("ClientId", "TimePlayed", "ZScore");

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

            modelBuilder.Entity("Data.Models.Client.Stats.EFHitLocationCount", b =>
                {
                    b.Property<int>("HitLocationCountId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

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

                    b.Property<int>("EFClientStatisticsClientId")
                        .HasColumnType("INTEGER")
                        .HasColumnName("EFClientStatisticsClientId");

                    b.Property<long>("EFClientStatisticsServerId")
                        .HasColumnType("INTEGER")
                        .HasColumnName("EFClientStatisticsServerId");

                    b.Property<int>("HitCount")
                        .HasColumnType("INTEGER");

                    b.Property<float>("HitOffsetAverage")
                        .HasColumnType("REAL");

                    b.Property<int>("Location")
                        .HasColumnType("INTEGER");

                    b.Property<float>("MaxAngleDistance")
                        .HasColumnType("REAL");

                    b.HasKey("HitLocationCountId");

                    b.HasIndex("EFClientStatisticsServerId");

                    b.HasIndex("EFClientStatisticsClientId", "EFClientStatisticsServerId");

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

            modelBuilder.Entity("Data.Models.Client.Stats.EFRating", b =>
                {
                    b.Property<int>("RatingId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

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

                    b.Property<int>("ActivityAmount")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("Newest")
                        .HasColumnType("INTEGER");

                    b.Property<double>("Performance")
                        .HasColumnType("REAL");

                    b.Property<int>("Ranking")
                        .HasColumnType("INTEGER");

                    b.Property<int>("RatingHistoryId")
                        .HasColumnType("INTEGER");

                    b.Property<long?>("ServerId")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("When")
                        .HasColumnType("TEXT");

                    b.HasKey("RatingId");

                    b.HasIndex("RatingHistoryId");

                    b.HasIndex("ServerId");

                    b.HasIndex("Performance", "Ranking", "When");

                    b.HasIndex("When", "ServerId", "Performance", "ActivityAmount");

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

            modelBuilder.Entity("Data.Models.Client.Stats.Reference.EFHitLocation", b =>
                {
                    b.Property<int>("HitLocationId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("CreatedDateTime")
                        .HasColumnType("TEXT");

                    b.Property<int>("Game")
                        .HasColumnType("INTEGER");

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

                    b.Property<DateTime?>("UpdatedDateTime")
                        .HasColumnType("TEXT");

                    b.HasKey("HitLocationId");

                    b.HasIndex("Name");

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

            modelBuilder.Entity("Data.Models.Client.Stats.Reference.EFMap", b =>
                {
                    b.Property<int>("MapId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("CreatedDateTime")
                        .HasColumnType("TEXT");

                    b.Property<int>("Game")
                        .HasColumnType("INTEGER");

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

                    b.Property<DateTime?>("UpdatedDateTime")
                        .HasColumnType("TEXT");

                    b.HasKey("MapId");

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

            modelBuilder.Entity("Data.Models.Client.Stats.Reference.EFMeansOfDeath", b =>
                {
                    b.Property<int>("MeansOfDeathId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("CreatedDateTime")
                        .HasColumnType("TEXT");

                    b.Property<int>("Game")
                        .HasColumnType("INTEGER");

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

                    b.Property<DateTime?>("UpdatedDateTime")
                        .HasColumnType("TEXT");

                    b.HasKey("MeansOfDeathId");

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

            modelBuilder.Entity("Data.Models.Client.Stats.Reference.EFWeapon", b =>
                {
                    b.Property<int>("WeaponId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("CreatedDateTime")
                        .HasColumnType("TEXT");

                    b.Property<int>("Game")
                        .HasColumnType("INTEGER");

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

                    b.Property<DateTime?>("UpdatedDateTime")
                        .HasColumnType("TEXT");

                    b.HasKey("WeaponId");

                    b.HasIndex("Name");

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

            modelBuilder.Entity("Data.Models.Client.Stats.Reference.EFWeaponAttachment", b =>
                {
                    b.Property<int>("WeaponAttachmentId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("CreatedDateTime")
                        .HasColumnType("TEXT");

                    b.Property<int>("Game")
                        .HasColumnType("INTEGER");

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

                    b.Property<DateTime?>("UpdatedDateTime")
                        .HasColumnType("TEXT");

                    b.HasKey("WeaponAttachmentId");

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

            modelBuilder.Entity("Data.Models.Client.Stats.Reference.EFWeaponAttachmentCombo", b =>
                {
                    b.Property<int>("WeaponAttachmentComboId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<int>("Attachment1Id")
                        .HasColumnType("INTEGER");

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

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

                    b.Property<DateTime>("CreatedDateTime")
                        .HasColumnType("TEXT");

                    b.Property<int>("Game")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime?>("UpdatedDateTime")
                        .HasColumnType("TEXT");

                    b.HasKey("WeaponAttachmentComboId");

                    b.HasIndex("Attachment1Id");

                    b.HasIndex("Attachment2Id");

                    b.HasIndex("Attachment3Id");

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

            modelBuilder.Entity("Data.Models.EFAlias", b =>
                {
                    b.Property<int>("AliasId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

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

                    b.Property<DateTime>("DateAdded")
                        .HasColumnType("TEXT");

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

                    b.Property<int>("LinkId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Name")
                        .IsRequired()
                        .HasMaxLength(24)
                        .HasColumnType("TEXT");

                    b.Property<string>("SearchableIPAddress")
                        .ValueGeneratedOnAddOrUpdate()
                        .HasColumnType("TEXT")
                        .HasComputedColumnSql("((IPAddress & 255) || '.' || ((IPAddress >> 8) & 255)) || '.' || ((IPAddress >> 16) & 255) || '.' || ((IPAddress >> 24) & 255)");

                    b.Property<string>("SearchableName")
                        .HasMaxLength(24)
                        .HasColumnType("TEXT");

                    b.HasKey("AliasId");

                    b.HasIndex("IPAddress");

                    b.HasIndex("LinkId");

                    b.HasIndex("Name");

                    b.HasIndex("SearchableName");

                    b.HasIndex("Name", "IPAddress");

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

            modelBuilder.Entity("Data.Models.EFAliasLink", b =>
                {
                    b.Property<int>("AliasLinkId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

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

                    b.HasKey("AliasLinkId");

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

            modelBuilder.Entity("Data.Models.EFChangeHistory", b =>
                {
                    b.Property<int>("ChangeHistoryId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

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

                    b.Property<string>("Comment")
                        .HasMaxLength(128)
                        .HasColumnType("TEXT");

                    b.Property<string>("CurrentValue")
                        .HasColumnType("TEXT");

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

                    b.Property<int>("OriginEntityId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("PreviousValue")
                        .HasColumnType("TEXT");

                    b.Property<int>("TargetEntityId")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("TimeChanged")
                        .HasColumnType("TEXT");

                    b.Property<int>("TypeOfChange")
                        .HasColumnType("INTEGER");

                    b.HasKey("ChangeHistoryId");

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

            modelBuilder.Entity("Data.Models.EFMeta", b =>
                {
                    b.Property<int>("MetaId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

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

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

                    b.Property<DateTime>("Created")
                        .HasColumnType("TEXT");

                    b.Property<string>("Extra")
                        .HasColumnType("TEXT");

                    b.Property<string>("Key")
                        .IsRequired()
                        .HasMaxLength(32)
                        .HasColumnType("TEXT");

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

                    b.Property<DateTime>("Updated")
                        .HasColumnType("TEXT");

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

                    b.HasKey("MetaId");

                    b.HasIndex("ClientId");

                    b.HasIndex("Key");

                    b.HasIndex("LinkedMetaId");

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

            modelBuilder.Entity("Data.Models.EFPenalty", b =>
                {
                    b.Property<int>("PenaltyId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

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

                    b.Property<string>("AutomatedOffense")
                        .HasColumnType("TEXT");

                    b.Property<DateTime?>("Expires")
                        .HasColumnType("TEXT");

                    b.Property<bool>("IsEvadedOffense")
                        .HasColumnType("INTEGER");

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

                    b.Property<int>("OffenderId")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Offense")
                        .IsRequired()
                        .HasColumnType("TEXT");

                    b.Property<int>("PunisherId")
                        .HasColumnType("INTEGER");

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

                    b.Property<DateTime>("When")
                        .HasColumnType("TEXT");

                    b.HasKey("PenaltyId");

                    b.HasIndex("LinkId");

                    b.HasIndex("OffenderId");

                    b.HasIndex("PunisherId");

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

            modelBuilder.Entity("Data.Models.EFPenaltyIdentifier", b =>
                {
                    b.Property<int>("PenaltyIdentifierId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("CreatedDateTime")
                        .HasColumnType("TEXT");

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

                    b.Property<long>("NetworkId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("PenaltyId")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime?>("UpdatedDateTime")
                        .HasColumnType("TEXT");

                    b.HasKey("PenaltyIdentifierId");

                    b.HasIndex("IPv4Address");

                    b.HasIndex("NetworkId");

                    b.HasIndex("PenaltyId");

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

            modelBuilder.Entity("Data.Models.Misc.EFInboxMessage", b =>
                {
                    b.Property<int>("InboxMessageId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<DateTime>("CreatedDateTime")
                        .HasColumnType("TEXT");

                    b.Property<int>("DestinationClientId")
                        .HasColumnType("INTEGER");

                    b.Property<bool>("IsDelivered")
                        .HasColumnType("INTEGER");

                    b.Property<string>("Message")
                        .HasColumnType("TEXT");

                    b.Property<long?>("ServerId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("SourceClientId")
                        .HasColumnType("INTEGER");

                    b.Property<DateTime?>("UpdatedDateTime")
                        .HasColumnType("TEXT");

                    b.HasKey("InboxMessageId");

                    b.HasIndex("DestinationClientId");

                    b.HasIndex("ServerId");

                    b.HasIndex("SourceClientId");

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

            modelBuilder.Entity("Data.Models.Server.EFServer", b =>
                {
                    b.Property<long>("ServerId")
                        .HasColumnType("INTEGER");

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

                    b.Property<string>("EndPoint")
                        .HasColumnType("TEXT");

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

                    b.Property<string>("HostName")
                        .HasColumnType("TEXT");

                    b.Property<bool>("IsPasswordProtected")
                        .HasColumnType("INTEGER");

                    b.Property<int>("Port")
                        .HasColumnType("INTEGER");

                    b.HasKey("ServerId");

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

            modelBuilder.Entity("Data.Models.Server.EFServerSnapshot", b =>
                {
                    b.Property<long>("ServerSnapshotId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

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

                    b.Property<DateTime>("CapturedAt")
                        .HasColumnType("TEXT");

                    b.Property<int>("ClientCount")
                        .HasColumnType("INTEGER");

                    b.Property<bool?>("ConnectionInterrupted")
                        .HasColumnType("INTEGER");

                    b.Property<int>("MapId")
                        .HasColumnType("INTEGER");

                    b.Property<int>("PeriodBlock")
                        .HasColumnType("INTEGER");

                    b.Property<long>("ServerId")
                        .HasColumnType("INTEGER");

                    b.HasKey("ServerSnapshotId");

                    b.HasIndex("MapId");

                    b.HasIndex("ServerId");

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

            modelBuilder.Entity("Data.Models.Server.EFServerStatistics", b =>
                {
                    b.Property<int>("StatisticId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

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

                    b.Property<long>("ServerId")
                        .HasColumnType("INTEGER");

                    b.Property<long>("TotalKills")
                        .HasColumnType("INTEGER");

                    b.Property<long>("TotalPlayTime")
                        .HasColumnType("INTEGER");

                    b.HasKey("StatisticId");

                    b.HasIndex("ServerId");

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

            modelBuilder.Entity("Data.Models.Vector3", b =>
                {
                    b.Property<int>("Vector3Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER");

                    b.Property<float>("X")
                        .HasColumnType("REAL");

                    b.Property<float>("Y")
                        .HasColumnType("REAL");

                    b.Property<float>("Z")
                        .HasColumnType("REAL");

                    b.HasKey("Vector3Id");

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

            modelBuilder.Entity("Data.Models.Client.EFACSnapshotVector3", b =>
                {
                    b.HasOne("Data.Models.Client.Stats.EFACSnapshot", "Snapshot")
                        .WithMany("PredictedViewAngles")
                        .HasForeignKey("SnapshotId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Data.Models.Vector3", "Vector")
                        .WithMany()
                        .HasForeignKey("Vector3Id")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Snapshot");

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

            modelBuilder.Entity("Data.Models.Client.EFClient", b =>
                {
                    b.HasOne("Data.Models.EFAliasLink", "AliasLink")
                        .WithMany()
                        .HasForeignKey("AliasLinkId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Data.Models.EFAlias", "CurrentAlias")
                        .WithMany()
                        .HasForeignKey("CurrentAliasId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("AliasLink");

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

            modelBuilder.Entity("Data.Models.Client.EFClientConnectionHistory", b =>
                {
                    b.HasOne("Data.Models.Client.EFClient", "Client")
                        .WithMany()
                        .HasForeignKey("ClientId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Data.Models.Server.EFServer", "Server")
                        .WithMany()
                        .HasForeignKey("ServerId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Client");

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

            modelBuilder.Entity("Data.Models.Client.EFClientKill", b =>
                {
                    b.HasOne("Data.Models.Client.EFClient", "Attacker")
                        .WithMany()
                        .HasForeignKey("AttackerId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Data.Models.Vector3", "DeathOrigin")
                        .WithMany()
                        .HasForeignKey("DeathOriginVector3Id");

                    b.HasOne("Data.Models.Vector3", "KillOrigin")
                        .WithMany()
                        .HasForeignKey("KillOriginVector3Id");

                    b.HasOne("Data.Models.Server.EFServer", "Server")
                        .WithMany()
                        .HasForeignKey("ServerId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Data.Models.Client.EFClient", "Victim")
                        .WithMany()
                        .HasForeignKey("VictimId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Data.Models.Vector3", "ViewAngles")
                        .WithMany()
                        .HasForeignKey("ViewAnglesVector3Id");

                    b.Navigation("Attacker");

                    b.Navigation("DeathOrigin");

                    b.Navigation("KillOrigin");

                    b.Navigation("Server");

                    b.Navigation("Victim");

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

            modelBuilder.Entity("Data.Models.Client.EFClientMessage", b =>
                {
                    b.HasOne("Data.Models.Client.EFClient", "Client")
                        .WithMany()
                        .HasForeignKey("ClientId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Data.Models.Server.EFServer", "Server")
                        .WithMany()
                        .HasForeignKey("ServerId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Client");

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

            modelBuilder.Entity("Data.Models.Client.Stats.EFACSnapshot", b =>
                {
                    b.HasOne("Data.Models.Client.EFClient", "Client")
                        .WithMany()
                        .HasForeignKey("ClientId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Data.Models.Vector3", "CurrentViewAngle")
                        .WithMany()
                        .HasForeignKey("CurrentViewAngleId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Data.Models.Vector3", "HitDestination")
                        .WithMany()
                        .HasForeignKey("HitDestinationId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Data.Models.Vector3", "HitOrigin")
                        .WithMany()
                        .HasForeignKey("HitOriginId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Data.Models.Vector3", "LastStrainAngle")
                        .WithMany()
                        .HasForeignKey("LastStrainAngleId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Data.Models.Server.EFServer", "Server")
                        .WithMany()
                        .HasForeignKey("ServerId");

                    b.Navigation("Client");

                    b.Navigation("CurrentViewAngle");

                    b.Navigation("HitDestination");

                    b.Navigation("HitOrigin");

                    b.Navigation("LastStrainAngle");

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

            modelBuilder.Entity("Data.Models.Client.Stats.EFClientHitStatistic", b =>
                {
                    b.HasOne("Data.Models.Client.EFClient", "Client")
                        .WithMany()
                        .HasForeignKey("ClientId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Data.Models.Client.Stats.Reference.EFHitLocation", "HitLocation")
                        .WithMany()
                        .HasForeignKey("HitLocationId");

                    b.HasOne("Data.Models.Client.Stats.Reference.EFMeansOfDeath", "MeansOfDeath")
                        .WithMany()
                        .HasForeignKey("MeansOfDeathId");

                    b.HasOne("Data.Models.Server.EFServer", "Server")
                        .WithMany()
                        .HasForeignKey("ServerId");

                    b.HasOne("Data.Models.Client.Stats.Reference.EFWeaponAttachmentCombo", "WeaponAttachmentCombo")
                        .WithMany()
                        .HasForeignKey("WeaponAttachmentComboId");

                    b.HasOne("Data.Models.Client.Stats.Reference.EFWeapon", "Weapon")
                        .WithMany()
                        .HasForeignKey("WeaponId");

                    b.Navigation("Client");

                    b.Navigation("HitLocation");

                    b.Navigation("MeansOfDeath");

                    b.Navigation("Server");

                    b.Navigation("Weapon");

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

            modelBuilder.Entity("Data.Models.Client.Stats.EFClientRankingHistory", b =>
                {
                    b.HasOne("Data.Models.Client.EFClient", "Client")
                        .WithMany()
                        .HasForeignKey("ClientId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Data.Models.Server.EFServer", "Server")
                        .WithMany()
                        .HasForeignKey("ServerId");

                    b.Navigation("Client");

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

            modelBuilder.Entity("Data.Models.Client.Stats.EFClientRatingHistory", b =>
                {
                    b.HasOne("Data.Models.Client.EFClient", "Client")
                        .WithMany()
                        .HasForeignKey("ClientId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

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

            modelBuilder.Entity("Data.Models.Client.Stats.EFClientStatistics", b =>
                {
                    b.HasOne("Data.Models.Client.EFClient", "Client")
                        .WithMany()
                        .HasForeignKey("ClientId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Data.Models.Server.EFServer", "Server")
                        .WithMany()
                        .HasForeignKey("ServerId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Client");

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

            modelBuilder.Entity("Data.Models.Client.Stats.EFHitLocationCount", b =>
                {
                    b.HasOne("Data.Models.Client.EFClient", "Client")
                        .WithMany()
                        .HasForeignKey("EFClientStatisticsClientId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Data.Models.Server.EFServer", "Server")
                        .WithMany()
                        .HasForeignKey("EFClientStatisticsServerId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Data.Models.Client.Stats.EFClientStatistics", null)
                        .WithMany("HitLocations")
                        .HasForeignKey("EFClientStatisticsClientId", "EFClientStatisticsServerId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Client");

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

            modelBuilder.Entity("Data.Models.Client.Stats.EFRating", b =>
                {
                    b.HasOne("Data.Models.Client.Stats.EFClientRatingHistory", "RatingHistory")
                        .WithMany("Ratings")
                        .HasForeignKey("RatingHistoryId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Data.Models.Server.EFServer", "Server")
                        .WithMany()
                        .HasForeignKey("ServerId");

                    b.Navigation("RatingHistory");

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

            modelBuilder.Entity("Data.Models.Client.Stats.Reference.EFWeaponAttachmentCombo", b =>
                {
                    b.HasOne("Data.Models.Client.Stats.Reference.EFWeaponAttachment", "Attachment1")
                        .WithMany()
                        .HasForeignKey("Attachment1Id")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Data.Models.Client.Stats.Reference.EFWeaponAttachment", "Attachment2")
                        .WithMany()
                        .HasForeignKey("Attachment2Id");

                    b.HasOne("Data.Models.Client.Stats.Reference.EFWeaponAttachment", "Attachment3")
                        .WithMany()
                        .HasForeignKey("Attachment3Id");

                    b.Navigation("Attachment1");

                    b.Navigation("Attachment2");

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

            modelBuilder.Entity("Data.Models.EFAlias", b =>
                {
                    b.HasOne("Data.Models.EFAliasLink", "Link")
                        .WithMany("Children")
                        .HasForeignKey("LinkId")
                        .OnDelete(DeleteBehavior.Restrict)
                        .IsRequired();

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

            modelBuilder.Entity("Data.Models.EFMeta", b =>
                {
                    b.HasOne("Data.Models.Client.EFClient", "Client")
                        .WithMany("Meta")
                        .HasForeignKey("ClientId");

                    b.HasOne("Data.Models.EFMeta", "LinkedMeta")
                        .WithMany()
                        .HasForeignKey("LinkedMetaId")
                        .OnDelete(DeleteBehavior.SetNull);

                    b.Navigation("Client");

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

            modelBuilder.Entity("Data.Models.EFPenalty", b =>
                {
                    b.HasOne("Data.Models.EFAliasLink", "Link")
                        .WithMany("ReceivedPenalties")
                        .HasForeignKey("LinkId");

                    b.HasOne("Data.Models.Client.EFClient", "Offender")
                        .WithMany("ReceivedPenalties")
                        .HasForeignKey("OffenderId")
                        .OnDelete(DeleteBehavior.Restrict)
                        .IsRequired();

                    b.HasOne("Data.Models.Client.EFClient", "Punisher")
                        .WithMany("AdministeredPenalties")
                        .HasForeignKey("PunisherId")
                        .OnDelete(DeleteBehavior.Restrict)
                        .IsRequired();

                    b.Navigation("Link");

                    b.Navigation("Offender");

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

            modelBuilder.Entity("Data.Models.EFPenaltyIdentifier", b =>
                {
                    b.HasOne("Data.Models.EFPenalty", "Penalty")
                        .WithMany()
                        .HasForeignKey("PenaltyId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

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

            modelBuilder.Entity("Data.Models.Misc.EFInboxMessage", b =>
                {
                    b.HasOne("Data.Models.Client.EFClient", "DestinationClient")
                        .WithMany()
                        .HasForeignKey("DestinationClientId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Data.Models.Server.EFServer", "Server")
                        .WithMany()
                        .HasForeignKey("ServerId");

                    b.HasOne("Data.Models.Client.EFClient", "SourceClient")
                        .WithMany()
                        .HasForeignKey("SourceClientId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("DestinationClient");

                    b.Navigation("Server");

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

            modelBuilder.Entity("Data.Models.Server.EFServerSnapshot", b =>
                {
                    b.HasOne("Data.Models.Client.Stats.Reference.EFMap", "Map")
                        .WithMany()
                        .HasForeignKey("MapId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("Data.Models.Server.EFServer", "Server")
                        .WithMany()
                        .HasForeignKey("ServerId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Map");

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

            modelBuilder.Entity("Data.Models.Server.EFServerStatistics", b =>
                {
                    b.HasOne("Data.Models.Server.EFServer", "Server")
                        .WithMany()
                        .HasForeignKey("ServerId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

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

            modelBuilder.Entity("Data.Models.Client.EFClient", b =>
                {
                    b.Navigation("AdministeredPenalties");

                    b.Navigation("Meta");

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

            modelBuilder.Entity("Data.Models.Client.Stats.EFACSnapshot", b =>
                {
                    b.Navigation("PredictedViewAngles");
                });

            modelBuilder.Entity("Data.Models.Client.Stats.EFClientRatingHistory", b =>
                {
                    b.Navigation("Ratings");
                });

            modelBuilder.Entity("Data.Models.Client.Stats.EFClientStatistics", b =>
                {
                    b.Navigation("HitLocations");
                });

            modelBuilder.Entity("Data.Models.EFAliasLink", b =>
                {
                    b.Navigation("Children");

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