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

namespace Data.Migrations.MySql
{
    [DbContext(typeof(MySqlDatabaseContext))]
    [Migration("20210629022028_AddHitLocationReferenceToEFACSnapshot")]
    partial class AddHitLocationReferenceToEFACSnapshot
    {
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("ProductVersion", "3.1.10")
                .HasAnnotation("Relational:MaxIdentifierLength", 64);

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

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

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

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

                    b.HasKey("ACSnapshotVector3Id");

                    b.HasIndex("SnapshotId");

                    b.HasIndex("Vector3Id");

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

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

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

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

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

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

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

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

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

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

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

                    b.Property<string>("Password")
                        .HasColumnType("longtext CHARACTER SET utf8mb4");

                    b.Property<string>("PasswordSalt")
                        .HasColumnType("longtext CHARACTER SET utf8mb4");

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

                    b.HasKey("ClientId");

                    b.HasIndex("AliasLinkId");

                    b.HasIndex("CurrentAliasId");

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                    b.Property<string>("WeaponReference")
                        .HasColumnType("longtext CHARACTER SET utf8mb4");

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

                    b.HasKey("KillId");

                    b.HasIndex("AttackerId");

                    b.HasIndex("DeathOriginVector3Id");

                    b.HasIndex("KillOriginVector3Id");

                    b.HasIndex("ServerId");

                    b.HasIndex("VictimId");

                    b.HasIndex("ViewAnglesVector3Id");

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

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

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

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

                    b.Property<string>("Message")
                        .HasColumnType("longtext CHARACTER SET utf8mb4");

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

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

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

                    b.HasKey("MessageId");

                    b.HasIndex("ClientId");

                    b.HasIndex("ServerId");

                    b.HasIndex("TimeSent");

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

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

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

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

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

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

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

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

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

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

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

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

                    b.Property<string>("HitLocationReference")
                        .HasColumnType("longtext CHARACTER SET utf8mb4");

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                    b.Property<string>("WeaponReference")
                        .HasColumnType("longtext CHARACTER SET utf8mb4");

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

                    b.HasKey("SnapshotId");

                    b.HasIndex("ClientId");

                    b.HasIndex("CurrentViewAngleId");

                    b.HasIndex("HitDestinationId");

                    b.HasIndex("HitOriginId");

                    b.HasIndex("LastStrainAngleId");

                    b.HasIndex("ServerId");

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                    b.HasKey("ClientHitStatisticId");

                    b.HasIndex("ClientId");

                    b.HasIndex("HitLocationId");

                    b.HasIndex("MeansOfDeathId");

                    b.HasIndex("ServerId");

                    b.HasIndex("WeaponAttachmentComboId");

                    b.HasIndex("WeaponId");

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

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

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

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

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

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

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

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

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

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

                    b.HasKey("ClientRankingHistoryId");

                    b.HasIndex("ClientId");

                    b.HasIndex("Ranking");

                    b.HasIndex("ServerId");

                    b.HasIndex("UpdatedDateTime");

                    b.HasIndex("ZScore");

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

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

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

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

                    b.HasKey("RatingHistoryId");

                    b.HasIndex("ClientId");

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                    b.HasIndex("ServerId");

                    b.HasIndex("ZScore");

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

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

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

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

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

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

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

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

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

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

                    b.HasKey("HitLocationCountId");

                    b.HasIndex("EFClientStatisticsServerId");

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

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

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

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

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

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

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

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

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

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

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

                    b.HasKey("RatingId");

                    b.HasIndex("RatingHistoryId");

                    b.HasIndex("ServerId");

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

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

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

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

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

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

                    b.Property<string>("Name")
                        .IsRequired()
                        .HasColumnType("varchar(255) CHARACTER SET utf8mb4");

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

                    b.HasKey("HitLocationId");

                    b.HasIndex("Name");

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

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

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

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

                    b.Property<string>("Name")
                        .IsRequired()
                        .HasColumnType("longtext CHARACTER SET utf8mb4");

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

                    b.HasKey("MapId");

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

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

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

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

                    b.Property<string>("Name")
                        .IsRequired()
                        .HasColumnType("longtext CHARACTER SET utf8mb4");

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

                    b.HasKey("MeansOfDeathId");

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

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

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

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

                    b.Property<string>("Name")
                        .IsRequired()
                        .HasColumnType("varchar(255) CHARACTER SET utf8mb4");

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

                    b.HasKey("WeaponId");

                    b.HasIndex("Name");

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

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

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

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

                    b.Property<string>("Name")
                        .IsRequired()
                        .HasColumnType("longtext CHARACTER SET utf8mb4");

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

                    b.HasKey("WeaponAttachmentId");

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

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

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

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

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

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

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

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

                    b.HasKey("WeaponAttachmentComboId");

                    b.HasIndex("Attachment1Id");

                    b.HasIndex("Attachment2Id");

                    b.HasIndex("Attachment3Id");

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

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

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

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

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

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

                    b.Property<string>("Name")
                        .IsRequired()
                        .HasColumnType("varchar(24) CHARACTER SET utf8mb4")
                        .HasMaxLength(24);

                    b.Property<string>("SearchableName")
                        .HasColumnType("varchar(24) CHARACTER SET utf8mb4")
                        .HasMaxLength(24);

                    b.HasKey("AliasId");

                    b.HasIndex("IPAddress");

                    b.HasIndex("LinkId");

                    b.HasIndex("Name");

                    b.HasIndex("SearchableName");

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

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

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

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

                    b.HasKey("AliasLinkId");

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

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

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

                    b.Property<string>("Comment")
                        .HasColumnType("varchar(128) CHARACTER SET utf8mb4")
                        .HasMaxLength(128);

                    b.Property<string>("CurrentValue")
                        .HasColumnType("longtext CHARACTER SET utf8mb4");

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

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

                    b.Property<string>("PreviousValue")
                        .HasColumnType("longtext CHARACTER SET utf8mb4");

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

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

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

                    b.HasKey("ChangeHistoryId");

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

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

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

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

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

                    b.Property<string>("Extra")
                        .HasColumnType("longtext CHARACTER SET utf8mb4");

                    b.Property<string>("Key")
                        .IsRequired()
                        .HasColumnType("varchar(32) CHARACTER SET utf8mb4")
                        .HasMaxLength(32);

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

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

                    b.Property<string>("Value")
                        .IsRequired()
                        .HasColumnType("longtext CHARACTER SET utf8mb4");

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

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

                    b.Property<string>("AutomatedOffense")
                        .HasColumnType("longtext CHARACTER SET utf8mb4");

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

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

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

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

                    b.Property<string>("Offense")
                        .IsRequired()
                        .HasColumnType("longtext CHARACTER SET utf8mb4");

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

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

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

                    b.HasKey("PenaltyId");

                    b.HasIndex("LinkId");

                    b.HasIndex("OffenderId");

                    b.HasIndex("PunisherId");

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

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

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

                    b.Property<string>("EndPoint")
                        .HasColumnType("longtext CHARACTER SET utf8mb4");

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

                    b.Property<string>("HostName")
                        .HasColumnType("longtext CHARACTER SET utf8mb4");

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

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

                    b.HasKey("ServerId");

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

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

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

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

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

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

                    b.HasKey("StatisticId");

                    b.HasIndex("ServerId");

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

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

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

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

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

                    b.HasKey("Vector3Id");

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            modelBuilder.Entity("Data.Models.Server.EFServerStatistics", b =>
                {
                    b.HasOne("Data.Models.Server.EFServer", "Server")
                        .WithMany()
                        .HasForeignKey("ServerId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });
#pragma warning restore 612, 618
        }
    }
}