update values for snap and offset
fix some issues from .NET Core 3.0 upgrade
This commit is contained in:
parent
c4e0b0272c
commit
068e943fd3
@ -17,7 +17,7 @@ namespace LiveRadar.Web.Controllers
|
|||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[Route("Radar/{serverId}")]
|
[Route("Radar/{serverId}")]
|
||||||
public IActionResult Index(long? serverId = null)
|
public IActionResult Index([FromQuery] long? serverId = null)
|
||||||
{
|
{
|
||||||
ViewBag.IsFluid = true;
|
ViewBag.IsFluid = true;
|
||||||
ViewBag.Title = Utilities.CurrentLocalization.LocalizationIndex["WEBFRONT_RADAR_TITLE"];
|
ViewBag.Title = Utilities.CurrentLocalization.LocalizationIndex["WEBFRONT_RADAR_TITLE"];
|
||||||
|
@ -303,12 +303,12 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
function updateRadarData() {
|
function updateRadarData() {
|
||||||
$.getJSON('@Url.Action("Data", "Radar", null)', function (_radarItem) {
|
$.getJSON('@Url.Action("Data", "Radar", new { serverId = ViewBag.ActiveServerId })', function (_radarItem) {
|
||||||
newRadarData = _radarItem;
|
newRadarData = _radarItem;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
$.getJSON('@Url.Action("Map", "Radar", null)', function (_map) {
|
$.getJSON('@Url.Action("Map", "Radar", new { serverId = ViewBag.ActiveServerId })', function (_map) {
|
||||||
stateInfo.mapInfo = _map
|
stateInfo.mapInfo = _map
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -458,7 +458,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
$.getJSON('@Url.Action("Map", "Radar", null)', function (_map) {
|
$.getJSON('@Url.Action("Map", "Radar", new { serverId = ViewBag.ActiveServerId })', function (_map) {
|
||||||
stateInfo.mapInfo = _map;
|
stateInfo.mapInfo = _map;
|
||||||
updateRadarData();
|
updateRadarData();
|
||||||
setInterval(updateRadarData, stateInfo.updateFrequency);
|
setInterval(updateRadarData, stateInfo.updateFrequency);
|
||||||
|
@ -125,32 +125,32 @@ namespace IW4MAdmin.Plugins.Stats.Cheat
|
|||||||
//var marginOfError = Thresholds.GetMarginOfError(sessionSnapHits);
|
//var marginOfError = Thresholds.GetMarginOfError(sessionSnapHits);
|
||||||
//var marginOfErrorLifetime = Thresholds.GetMarginOfError(ClientStats.SnapHitCount);
|
//var marginOfErrorLifetime = Thresholds.GetMarginOfError(ClientStats.SnapHitCount);
|
||||||
|
|
||||||
if (sessionSnapHits >= Thresholds.LowSampleMinKills &&
|
if (sessionSnapHits >= Thresholds.MediumSampleMinKills &&
|
||||||
sessionAverageSnapAmount >= Thresholds.SnapFlagValue/* + marginOfError*/)
|
sessionAverageSnapAmount >= Thresholds.SnapFlagValue/* + marginOfError*/)
|
||||||
{
|
{
|
||||||
results.Add(new DetectionPenaltyResult()
|
results.Add(new DetectionPenaltyResult()
|
||||||
{
|
{
|
||||||
ClientPenalty = EFPenalty.PenaltyType.Flag,
|
ClientPenalty = EFPenalty.PenaltyType.Flag,
|
||||||
Value = sessionAverageSnapAmount,
|
Value = sessionAverageSnapAmount,
|
||||||
HitCount = ClientStats.SnapHitCount,
|
HitCount = sessionSnapHits,
|
||||||
Type = DetectionType.Snap
|
Type = DetectionType.Snap
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sessionSnapHits >= Thresholds.LowSampleMinKills &&
|
if (sessionSnapHits >= Thresholds.MediumSampleMinKills &&
|
||||||
sessionAverageSnapAmount >= Thresholds.SnapBanValue/* + marginOfError*/)
|
sessionAverageSnapAmount >= Thresholds.SnapBanValue/* + marginOfError*/)
|
||||||
{
|
{
|
||||||
results.Add(new DetectionPenaltyResult()
|
results.Add(new DetectionPenaltyResult()
|
||||||
{
|
{
|
||||||
ClientPenalty = EFPenalty.PenaltyType.Ban,
|
ClientPenalty = EFPenalty.PenaltyType.Ban,
|
||||||
Value = sessionAverageSnapAmount,
|
Value = sessionAverageSnapAmount,
|
||||||
HitCount = ClientStats.SnapHitCount,
|
HitCount = sessionSnapHits,
|
||||||
Type = DetectionType.Snap
|
Type = DetectionType.Snap
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// lifetime
|
// lifetime
|
||||||
if (ClientStats.SnapHitCount >= Thresholds.MediumSampleMinKills &&
|
if (ClientStats.SnapHitCount >= Thresholds.MediumSampleMinKills * 2 &&
|
||||||
ClientStats.AverageSnapValue >= Thresholds.SnapFlagValue/* + marginOfErrorLifetime*/)
|
ClientStats.AverageSnapValue >= Thresholds.SnapFlagValue/* + marginOfErrorLifetime*/)
|
||||||
{
|
{
|
||||||
results.Add(new DetectionPenaltyResult()
|
results.Add(new DetectionPenaltyResult()
|
||||||
@ -162,7 +162,7 @@ namespace IW4MAdmin.Plugins.Stats.Cheat
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ClientStats.SnapHitCount >= Thresholds.MediumSampleMinKills &&
|
if (ClientStats.SnapHitCount >= Thresholds.MediumSampleMinKills * 2 &&
|
||||||
ClientStats.AverageSnapValue >= Thresholds.SnapBanValue/* + marginOfErrorLifetime*/)
|
ClientStats.AverageSnapValue >= Thresholds.SnapBanValue/* + marginOfErrorLifetime*/)
|
||||||
{
|
{
|
||||||
results.Add(new DetectionPenaltyResult()
|
results.Add(new DetectionPenaltyResult()
|
||||||
@ -183,7 +183,6 @@ namespace IW4MAdmin.Plugins.Stats.Cheat
|
|||||||
int angleOffsetIndex = totalUsableAngleCount / 2;
|
int angleOffsetIndex = totalUsableAngleCount / 2;
|
||||||
if (hit.AnglesList.Count == 5)
|
if (hit.AnglesList.Count == 5)
|
||||||
{
|
{
|
||||||
|
|
||||||
double realAgainstPredict = Vector3.ViewAngleDistance(hit.AnglesList[angleOffsetIndex - 1], hit.AnglesList[angleOffsetIndex + 1], hit.ViewAngles);
|
double realAgainstPredict = Vector3.ViewAngleDistance(hit.AnglesList[angleOffsetIndex - 1], hit.AnglesList[angleOffsetIndex + 1], hit.ViewAngles);
|
||||||
|
|
||||||
// LIFETIME
|
// LIFETIME
|
||||||
@ -201,15 +200,15 @@ namespace IW4MAdmin.Plugins.Stats.Cheat
|
|||||||
if (weightedLifetimeAverage > Thresholds.MaxOffset(totalHits) &&
|
if (weightedLifetimeAverage > Thresholds.MaxOffset(totalHits) &&
|
||||||
hitLoc.HitCount > 100)
|
hitLoc.HitCount > 100)
|
||||||
{
|
{
|
||||||
Log.WriteDebug("*** Reached Max Lifetime Average for Angle Difference ***");
|
//Log.WriteDebug("*** Reached Max Lifetime Average for Angle Difference ***");
|
||||||
Log.WriteDebug($"Lifetime Average = {newAverage}");
|
//Log.WriteDebug($"Lifetime Average = {newAverage}");
|
||||||
Log.WriteDebug($"Bone = {hitLoc.Location}");
|
//Log.WriteDebug($"Bone = {hitLoc.Location}");
|
||||||
Log.WriteDebug($"HitCount = {hitLoc.HitCount}");
|
//Log.WriteDebug($"HitCount = {hitLoc.HitCount}");
|
||||||
Log.WriteDebug($"ID = {hit.AttackerId}");
|
//Log.WriteDebug($"ID = {hit.AttackerId}");
|
||||||
|
|
||||||
results.Add(new DetectionPenaltyResult()
|
results.Add(new DetectionPenaltyResult()
|
||||||
{
|
{
|
||||||
ClientPenalty = EFPenalty.PenaltyType.Flag,
|
ClientPenalty = EFPenalty.PenaltyType.Ban,
|
||||||
Value = hitLoc.HitOffsetAverage,
|
Value = hitLoc.HitOffsetAverage,
|
||||||
HitCount = hitLoc.HitCount,
|
HitCount = hitLoc.HitCount,
|
||||||
Type = DetectionType.Offset
|
Type = DetectionType.Offset
|
||||||
@ -236,7 +235,7 @@ namespace IW4MAdmin.Plugins.Stats.Cheat
|
|||||||
|
|
||||||
results.Add(new DetectionPenaltyResult()
|
results.Add(new DetectionPenaltyResult()
|
||||||
{
|
{
|
||||||
ClientPenalty = EFPenalty.PenaltyType.Flag,
|
ClientPenalty = EFPenalty.PenaltyType.Ban,
|
||||||
Value = weightedSessionAverage,
|
Value = weightedSessionAverage,
|
||||||
HitCount = HitCount,
|
HitCount = HitCount,
|
||||||
Type = DetectionType.Offset,
|
Type = DetectionType.Offset,
|
||||||
|
@ -48,13 +48,13 @@ namespace IW4MAdmin.Plugins.Stats.Cheat
|
|||||||
public const int HighSampleMinKills = 100;
|
public const int HighSampleMinKills = 100;
|
||||||
public const double KillTimeThreshold = 0.2;
|
public const double KillTimeThreshold = 0.2;
|
||||||
public const int LowSampleMinKillsRecoil = 5;
|
public const int LowSampleMinKillsRecoil = 5;
|
||||||
public const double SnapFlagValue = 6.12;
|
public const double SnapFlagValue = 5.5;
|
||||||
public const double SnapBanValue = 9.67;
|
public const double SnapBanValue = 8.7;
|
||||||
|
|
||||||
public const double MaxStrainBan = 0.9;
|
public const double MaxStrainBan = 0.9;
|
||||||
|
|
||||||
private const double _offsetMeanLog = -2.727273;
|
private const double _offsetMeanLog = -2.3243889;
|
||||||
private const double _offsetSdLog = 0.458325;
|
private const double _offsetSdLog = 0.5851351;
|
||||||
|
|
||||||
public static double MaxOffset(int sampleSize) => Math.Exp(Math.Max(_offsetMeanLog + (_offsetMeanLog / Math.Sqrt(sampleSize)), _offsetMeanLog - (_offsetMeanLog / Math.Sqrt(sampleSize))) + 4 * (_offsetSdLog));
|
public static double MaxOffset(int sampleSize) => Math.Exp(Math.Max(_offsetMeanLog + (_offsetMeanLog / Math.Sqrt(sampleSize)), _offsetMeanLog - (_offsetMeanLog / Math.Sqrt(sampleSize))) + 4 * (_offsetSdLog));
|
||||||
public const double MaxStrainFlag = 0.36;
|
public const double MaxStrainFlag = 0.36;
|
||||||
|
@ -843,7 +843,7 @@ namespace IW4MAdmin.Plugins.Stats.Helpers
|
|||||||
Active = true,
|
Active = true,
|
||||||
Newest = true,
|
Newest = true,
|
||||||
ServerId = clientStats.ServerId,
|
ServerId = clientStats.ServerId,
|
||||||
RatingHistoryId = clientHistory.RatingHistoryId,
|
RatingHistory = clientHistory,
|
||||||
ActivityAmount = currentServerTotalPlaytime,
|
ActivityAmount = currentServerTotalPlaytime,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -921,7 +921,7 @@ namespace IW4MAdmin.Plugins.Stats.Helpers
|
|||||||
Performance = performanceAverage,
|
Performance = performanceAverage,
|
||||||
Ranking = overallClientRanking,
|
Ranking = overallClientRanking,
|
||||||
ServerId = null,
|
ServerId = null,
|
||||||
RatingHistoryId = clientHistory.RatingHistoryId,
|
RatingHistory = clientHistory,
|
||||||
ActivityAmount = clientStatsList.Sum(s => s.TimePlayed)
|
ActivityAmount = clientStatsList.Sum(s => s.TimePlayed)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -17,11 +17,13 @@ namespace IW4MAdmin.Plugins.Stats.Models
|
|||||||
[Required]
|
[Required]
|
||||||
public float MaxAngleDistance { get; set; }
|
public float MaxAngleDistance { get; set; }
|
||||||
[Required]
|
[Required]
|
||||||
public int ClientId { get; set; }
|
[Column("EFClientStatisticsClientId")]
|
||||||
[ForeignKey("ClientId"), Column(Order = 0 )]
|
public int EFClientStatisticsClientId { get; set; }
|
||||||
|
[ForeignKey("EFClientStatisticsClientId")]
|
||||||
public EFClient Client { get; set; }
|
public EFClient Client { get; set; }
|
||||||
public long ServerId { get; set; }
|
[Column("EFClientStatisticsServerId")]
|
||||||
[ForeignKey("ServerId"), Column(Order = 1)]
|
public long EFClientStatisticsServerId { get; set; }
|
||||||
|
[ForeignKey("EFClientStatisticsServerId")]
|
||||||
public EFServer Server { get; set; }
|
public EFServer Server { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,12 +13,12 @@ namespace Stats.Models
|
|||||||
|
|
||||||
// fix linking from SQLCe
|
// fix linking from SQLCe
|
||||||
builder.Entity<EFHitLocationCount>()
|
builder.Entity<EFHitLocationCount>()
|
||||||
.Property(c => c.ClientId)
|
.Property(c => c.EFClientStatisticsClientId)
|
||||||
.HasColumnName("EFClientStatistics_ClientId");
|
.HasColumnName("EFClientStatisticsClientId");
|
||||||
|
|
||||||
builder.Entity<EFHitLocationCount>()
|
builder.Entity<EFHitLocationCount>()
|
||||||
.Property(c => c.ServerId)
|
.Property(c => c.EFClientStatisticsServerId)
|
||||||
.HasColumnName("EFClientStatistics_ServerId");
|
.HasColumnName("EFClientStatisticsServerId");
|
||||||
|
|
||||||
builder.Entity<EFRating>()
|
builder.Entity<EFRating>()
|
||||||
.HasIndex(p => new { p.Performance, p.Ranking, p.When });
|
.HasIndex(p => new { p.Performance, p.Ranking, p.When });
|
||||||
|
@ -111,13 +111,6 @@ namespace SharedLibraryCore.Database
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if DEBUG
|
|
||||||
#pragma warning disable CS0612 // Type or member is obsolete
|
|
||||||
// optionsBuilder.UseLoggerFactory(_loggerFactory)
|
|
||||||
#pragma warning restore CS0612 // Type or member is obsolete
|
|
||||||
// .EnableSensitiveDataLogging();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||||
|
910
SharedLibraryCore/Migrations/20191004172550_RenameClientHitLocationCountColumns.Designer.cs
generated
Normal file
910
SharedLibraryCore/Migrations/20191004172550_RenameClientHitLocationCountColumns.Designer.cs
generated
Normal file
@ -0,0 +1,910 @@
|
|||||||
|
// <auto-generated />
|
||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||||
|
using SharedLibraryCore.Database;
|
||||||
|
|
||||||
|
namespace SharedLibraryCore.Migrations
|
||||||
|
{
|
||||||
|
[DbContext(typeof(DatabaseContext))]
|
||||||
|
[Migration("20191004172550_RenameClientHitLocationCountColumns")]
|
||||||
|
partial class RenameClientHitLocationCountColumns
|
||||||
|
{
|
||||||
|
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
#pragma warning disable 612, 618
|
||||||
|
modelBuilder
|
||||||
|
.HasAnnotation("ProductVersion", "3.0.0");
|
||||||
|
|
||||||
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.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<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<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<DateTime>("When")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.HasKey("SnapshotId");
|
||||||
|
|
||||||
|
b.HasIndex("ClientId");
|
||||||
|
|
||||||
|
b.HasIndex("CurrentViewAngleId");
|
||||||
|
|
||||||
|
b.HasIndex("HitDestinationId");
|
||||||
|
|
||||||
|
b.HasIndex("HitOriginId");
|
||||||
|
|
||||||
|
b.HasIndex("LastStrainAngleId");
|
||||||
|
|
||||||
|
b.ToTable("EFACSnapshot");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFACSnapshotVector3", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("ACSnapshotVector3Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.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");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.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<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");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.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<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");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.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");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientStatistics", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("ClientId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<long>("ServerId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("Active")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<double>("AverageRecoilOffset")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
|
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<double>("VisionAverage")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
|
b.HasKey("ClientId", "ServerId");
|
||||||
|
|
||||||
|
b.HasIndex("ServerId");
|
||||||
|
|
||||||
|
b.ToTable("EFClientStatistics");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFHitLocationCount", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("HitLocationCountId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("Active")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("EFClientStatisticsClientId")
|
||||||
|
.HasColumnName("EFClientStatisticsClientId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<long>("EFClientStatisticsServerId")
|
||||||
|
.HasColumnName("EFClientStatisticsServerId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
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");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.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.ToTable("EFRating");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.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<int>("Port")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("ServerId");
|
||||||
|
|
||||||
|
b.ToTable("EFServers");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.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");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SharedLibraryCore.Database.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()
|
||||||
|
.HasColumnType("TEXT")
|
||||||
|
.HasMaxLength(24);
|
||||||
|
|
||||||
|
b.Property<string>("SearchableName")
|
||||||
|
.HasColumnType("TEXT")
|
||||||
|
.HasMaxLength(24);
|
||||||
|
|
||||||
|
b.HasKey("AliasId");
|
||||||
|
|
||||||
|
b.HasIndex("IPAddress");
|
||||||
|
|
||||||
|
b.HasIndex("LinkId");
|
||||||
|
|
||||||
|
b.HasIndex("Name");
|
||||||
|
|
||||||
|
b.HasIndex("SearchableName");
|
||||||
|
|
||||||
|
b.ToTable("EFAlias");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFAliasLink", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("AliasLinkId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("Active")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("AliasLinkId");
|
||||||
|
|
||||||
|
b.ToTable("EFAliasLinks");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFChangeHistory", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("ChangeHistoryId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("Active")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Comment")
|
||||||
|
.HasColumnType("TEXT")
|
||||||
|
.HasMaxLength(128);
|
||||||
|
|
||||||
|
b.Property<string>("CurrentValue")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
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("SharedLibraryCore.Database.Models.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");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SharedLibraryCore.Database.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()
|
||||||
|
.HasColumnType("TEXT")
|
||||||
|
.HasMaxLength(32);
|
||||||
|
|
||||||
|
b.Property<DateTime>("Updated")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Value")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.HasKey("MetaId");
|
||||||
|
|
||||||
|
b.HasIndex("ClientId");
|
||||||
|
|
||||||
|
b.HasIndex("Key");
|
||||||
|
|
||||||
|
b.ToTable("EFMeta");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SharedLibraryCore.Database.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");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SharedLibraryCore.Helpers.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");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFACSnapshot", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("ClientId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("SharedLibraryCore.Helpers.Vector3", "CurrentViewAngle")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("CurrentViewAngleId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("SharedLibraryCore.Helpers.Vector3", "HitDestination")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("HitDestinationId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("SharedLibraryCore.Helpers.Vector3", "HitOrigin")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("HitOriginId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("SharedLibraryCore.Helpers.Vector3", "LastStrainAngle")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("LastStrainAngleId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFACSnapshotVector3", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFACSnapshot", "Snapshot")
|
||||||
|
.WithMany("PredictedViewAngles")
|
||||||
|
.HasForeignKey("SnapshotId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("SharedLibraryCore.Helpers.Vector3", "Vector")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("Vector3Id")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientKill", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Attacker")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("AttackerId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("SharedLibraryCore.Helpers.Vector3", "DeathOrigin")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("DeathOriginVector3Id");
|
||||||
|
|
||||||
|
b.HasOne("SharedLibraryCore.Helpers.Vector3", "KillOrigin")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("KillOriginVector3Id");
|
||||||
|
|
||||||
|
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("ServerId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Victim")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("VictimId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("SharedLibraryCore.Helpers.Vector3", "ViewAngles")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("ViewAnglesVector3Id");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientMessage", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("ClientId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("ServerId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientRatingHistory", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("ClientId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientStatistics", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("ClientId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("ServerId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFHitLocationCount", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("EFClientStatisticsClientId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("EFClientStatisticsServerId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFClientStatistics", null)
|
||||||
|
.WithMany("HitLocations")
|
||||||
|
.HasForeignKey("EFClientStatisticsClientId", "EFClientStatisticsServerId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFRating", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFClientRatingHistory", "RatingHistory")
|
||||||
|
.WithMany("Ratings")
|
||||||
|
.HasForeignKey("RatingHistoryId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("ServerId");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFServerStatistics", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("ServerId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFAlias", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SharedLibraryCore.Database.Models.EFAliasLink", "Link")
|
||||||
|
.WithMany("Children")
|
||||||
|
.HasForeignKey("LinkId")
|
||||||
|
.OnDelete(DeleteBehavior.Restrict)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFClient", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SharedLibraryCore.Database.Models.EFAliasLink", "AliasLink")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("AliasLinkId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("SharedLibraryCore.Database.Models.EFAlias", "CurrentAlias")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("CurrentAliasId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFMeta", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
|
||||||
|
.WithMany("Meta")
|
||||||
|
.HasForeignKey("ClientId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFPenalty", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("SharedLibraryCore.Database.Models.EFAliasLink", "Link")
|
||||||
|
.WithMany("ReceivedPenalties")
|
||||||
|
.HasForeignKey("LinkId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Offender")
|
||||||
|
.WithMany("ReceivedPenalties")
|
||||||
|
.HasForeignKey("OffenderId")
|
||||||
|
.OnDelete(DeleteBehavior.Restrict)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Punisher")
|
||||||
|
.WithMany("AdministeredPenalties")
|
||||||
|
.HasForeignKey("PunisherId")
|
||||||
|
.OnDelete(DeleteBehavior.Restrict)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
#pragma warning restore 612, 618
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,196 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
namespace SharedLibraryCore.Migrations
|
||||||
|
{
|
||||||
|
public partial class RenameClientHitLocationCountColumns : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
if (migrationBuilder.ActiveProvider == "Microsoft.EntityFrameworkCore.Sqlite")
|
||||||
|
{
|
||||||
|
migrationBuilder.Sql(@"PRAGMA foreign_keys = 0;
|
||||||
|
|
||||||
|
CREATE TABLE sqlitestudio_temp_table AS SELECT *
|
||||||
|
FROM EFHitLocationCounts;
|
||||||
|
|
||||||
|
DROP TABLE EFHitLocationCounts;
|
||||||
|
|
||||||
|
CREATE TABLE EFHitLocationCounts (
|
||||||
|
HitLocationCountId INTEGER NOT NULL
|
||||||
|
CONSTRAINT PK_EFHitLocationCounts PRIMARY KEY AUTOINCREMENT,
|
||||||
|
Active INTEGER NOT NULL,
|
||||||
|
EFClientStatisticsClientId INTEGER NOT NULL,
|
||||||
|
HitCount INTEGER NOT NULL,
|
||||||
|
HitOffsetAverage REAL NOT NULL,
|
||||||
|
Location INTEGER NOT NULL,
|
||||||
|
EFClientStatisticsServerId INTEGER NOT NULL,
|
||||||
|
MaxAngleDistance REAL NOT NULL
|
||||||
|
DEFAULT 0,
|
||||||
|
CONSTRAINT FK_EFHitLocationCounts_EFClients_EFClientStatistics_ClientId FOREIGN KEY (
|
||||||
|
EFClientStatisticsClientId
|
||||||
|
)
|
||||||
|
REFERENCES EFClients (ClientId) ON DELETE CASCADE,
|
||||||
|
CONSTRAINT FK_EFHitLocationCounts_EFServers_EFClientStatistics_ServerId FOREIGN KEY (
|
||||||
|
EFClientStatisticsServerId
|
||||||
|
)
|
||||||
|
REFERENCES EFServers (ServerId) ON DELETE CASCADE,
|
||||||
|
CONSTRAINT FK_EFHitLocationCounts_EFClientStatistics_EFClientStatistics_ClientId_EFClientStatistics_ServerId FOREIGN KEY (
|
||||||
|
EFClientStatisticsClientId,
|
||||||
|
EFClientStatisticsServerId
|
||||||
|
)
|
||||||
|
REFERENCES EFClientStatistics (ClientId,
|
||||||
|
ServerId) ON DELETE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO EFHitLocationCounts (
|
||||||
|
HitLocationCountId,
|
||||||
|
Active,
|
||||||
|
EFClientStatisticsClientId,
|
||||||
|
HitCount,
|
||||||
|
HitOffsetAverage,
|
||||||
|
Location,
|
||||||
|
EFClientStatisticsServerId,
|
||||||
|
MaxAngleDistance
|
||||||
|
)
|
||||||
|
SELECT HitLocationCountId,
|
||||||
|
Active,
|
||||||
|
EFClientStatistics_ClientId,
|
||||||
|
HitCount,
|
||||||
|
HitOffsetAverage,
|
||||||
|
Location,
|
||||||
|
EFClientStatistics_ServerId,
|
||||||
|
MaxAngleDistance
|
||||||
|
FROM sqlitestudio_temp_table;
|
||||||
|
|
||||||
|
DROP TABLE sqlitestudio_temp_table;
|
||||||
|
|
||||||
|
CREATE INDEX IX_EFHitLocationCounts_EFClientStatistics_ServerId ON EFHitLocationCounts (
|
||||||
|
EFClientStatisticsServerId
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX IX_EFHitLocationCounts_EFClientStatistics_ClientId_EFClientStatistics_ServerId ON EFHitLocationCounts (
|
||||||
|
EFClientStatisticsClientId,
|
||||||
|
EFClientStatisticsServerId
|
||||||
|
);
|
||||||
|
|
||||||
|
PRAGMA foreign_keys = 1;
|
||||||
|
", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_EFHitLocationCounts_EFClients_EFClientStatistics_ClientId",
|
||||||
|
table: "EFHitLocationCounts");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_EFHitLocationCounts_EFServers_EFClientStatistics_ServerId",
|
||||||
|
table: "EFHitLocationCounts");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_EFHitLocationCounts_EFClientStatistics_EFClientStatistics_ClientId_EFClientStatistics_ServerId",
|
||||||
|
table: "EFHitLocationCounts");
|
||||||
|
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "EFClientStatistics_ServerId",
|
||||||
|
table: "EFHitLocationCounts",
|
||||||
|
newName: "EFClientStatisticsServerId");
|
||||||
|
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "EFClientStatistics_ClientId",
|
||||||
|
table: "EFHitLocationCounts",
|
||||||
|
newName: "EFClientStatisticsClientId");
|
||||||
|
|
||||||
|
migrationBuilder.RenameIndex(
|
||||||
|
name: "IX_EFHitLocationCounts_EFClientStatistics_ClientId_EFClientStatistics_ServerId",
|
||||||
|
table: "EFHitLocationCounts",
|
||||||
|
newName: "IX_EFHitLocationCounts_EFClientStatisticsClientId_EFClientStatisticsServerId");
|
||||||
|
|
||||||
|
migrationBuilder.RenameIndex(
|
||||||
|
name: "IX_EFHitLocationCounts_EFClientStatistics_ServerId",
|
||||||
|
table: "EFHitLocationCounts",
|
||||||
|
newName: "IX_EFHitLocationCounts_EFClientStatisticsServerId");
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_EFHitLocationCounts_EFClients_EFClientStatisticsClientId",
|
||||||
|
table: "EFHitLocationCounts",
|
||||||
|
column: "EFClientStatisticsClientId",
|
||||||
|
principalTable: "EFClients",
|
||||||
|
principalColumn: "ClientId",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_EFHitLocationCounts_EFServers_EFClientStatisticsServerId",
|
||||||
|
table: "EFHitLocationCounts",
|
||||||
|
column: "EFClientStatisticsServerId",
|
||||||
|
principalTable: "EFServers",
|
||||||
|
principalColumn: "ServerId",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_EFHitLocationCounts_EFClientStatistics_EFClientStatisticsClientId_EFClientStatisticsServerId",
|
||||||
|
table: "EFHitLocationCounts",
|
||||||
|
columns: new[] { "EFClientStatisticsClientId", "EFClientStatisticsServerId" },
|
||||||
|
principalTable: "EFClientStatistics",
|
||||||
|
principalColumns: new[] { "ClientId", "ServerId" },
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_EFHitLocationCounts_EFClients_EFClientStatisticsClientId",
|
||||||
|
table: "EFHitLocationCounts");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_EFHitLocationCounts_EFServers_EFClientStatisticsServerId",
|
||||||
|
table: "EFHitLocationCounts");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_EFHitLocationCounts_EFClientStatistics_EFClientStatisticsClientId_EFClientStatisticsServerId",
|
||||||
|
table: "EFHitLocationCounts");
|
||||||
|
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "EFClientStatisticsServerId",
|
||||||
|
table: "EFHitLocationCounts",
|
||||||
|
newName: "EFClientStatistics_ServerId");
|
||||||
|
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "EFClientStatisticsClientId",
|
||||||
|
table: "EFHitLocationCounts",
|
||||||
|
newName: "EFClientStatistics_ClientId");
|
||||||
|
|
||||||
|
migrationBuilder.RenameIndex(
|
||||||
|
name: "IX_EFHitLocationCounts_EFClientStatisticsClientId_EFClientStatisticsServerId",
|
||||||
|
table: "EFHitLocationCounts",
|
||||||
|
newName: "IX_EFHitLocationCounts_EFClientStatistics_ClientId_EFClientStatistics_ServerId");
|
||||||
|
|
||||||
|
migrationBuilder.RenameIndex(
|
||||||
|
name: "IX_EFHitLocationCounts_EFClientStatisticsServerId",
|
||||||
|
table: "EFHitLocationCounts",
|
||||||
|
newName: "IX_EFHitLocationCounts_EFClientStatistics_ServerId");
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_EFHitLocationCounts_EFClients_EFClientStatistics_ClientId",
|
||||||
|
table: "EFHitLocationCounts",
|
||||||
|
column: "EFClientStatistics_ClientId",
|
||||||
|
principalTable: "EFClients",
|
||||||
|
principalColumn: "ClientId",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_EFHitLocationCounts_EFServers_EFClientStatistics_ServerId",
|
||||||
|
table: "EFHitLocationCounts",
|
||||||
|
column: "EFClientStatistics_ServerId",
|
||||||
|
principalTable: "EFServers",
|
||||||
|
principalColumn: "ServerId",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_EFHitLocationCounts_EFClientStatistics_EFClientStatistics_ClientId_EFClientStatistics_ServerId",
|
||||||
|
table: "EFHitLocationCounts",
|
||||||
|
columns: new[] { "EFClientStatistics_ClientId", "EFClientStatistics_ServerId" },
|
||||||
|
principalTable: "EFClientStatistics",
|
||||||
|
principalColumns: new[] { "ClientId", "ServerId" },
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -14,62 +14,88 @@ namespace SharedLibraryCore.Migrations
|
|||||||
{
|
{
|
||||||
#pragma warning disable 612, 618
|
#pragma warning disable 612, 618
|
||||||
modelBuilder
|
modelBuilder
|
||||||
.HasAnnotation("ProductVersion", "2.2.6-servicing-10079");
|
.HasAnnotation("ProductVersion", "3.0.0");
|
||||||
|
|
||||||
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFACSnapshot", b =>
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFACSnapshot", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("SnapshotId")
|
b.Property<int>("SnapshotId")
|
||||||
.ValueGeneratedOnAdd();
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<bool>("Active");
|
b.Property<bool>("Active")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("ClientId");
|
b.Property<int>("ClientId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("CurrentSessionLength");
|
b.Property<int>("CurrentSessionLength")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<double>("SessionAverageSnapValue");
|
b.Property<double>("CurrentStrain")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.Property<double>("CurrentStrain");
|
b.Property<int>("CurrentViewAngleId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("CurrentViewAngleId");
|
b.Property<int>("Deaths")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("Deaths");
|
b.Property<double>("Distance")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.Property<double>("Distance");
|
b.Property<double>("EloRating")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.Property<double>("EloRating");
|
b.Property<int>("HitDestinationId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("HitDestinationId");
|
b.Property<int>("HitLocation")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("HitLocation");
|
b.Property<int>("HitOriginId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("HitOriginId");
|
b.Property<int>("HitType")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("HitType");
|
b.Property<int>("Hits")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("Hits");
|
b.Property<int>("Kills")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("Kills");
|
b.Property<int>("LastStrainAngleId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("LastStrainAngleId");
|
b.Property<double>("RecoilOffset")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.Property<double>("RecoilOffset");
|
b.Property<double>("SessionAngleOffset")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.Property<double>("SessionAngleOffset");
|
b.Property<double>("SessionAverageSnapValue")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.Property<double>("SessionSPM");
|
b.Property<double>("SessionSPM")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.Property<int>("SessionScore");
|
b.Property<int>("SessionScore")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("SessionSnapHits");
|
b.Property<int>("SessionSnapHits")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<double>("StrainAngleBetween");
|
b.Property<double>("StrainAngleBetween")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.Property<int>("TimeSinceLastEvent");
|
b.Property<int>("TimeSinceLastEvent")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("WeaponId");
|
b.Property<int>("WeaponId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<DateTime>("When");
|
b.Property<DateTime>("When")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.HasKey("SnapshotId");
|
b.HasKey("SnapshotId");
|
||||||
|
|
||||||
@ -89,11 +115,14 @@ namespace SharedLibraryCore.Migrations
|
|||||||
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFACSnapshotVector3", b =>
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFACSnapshotVector3", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("ACSnapshotVector3Id")
|
b.Property<int>("ACSnapshotVector3Id")
|
||||||
.ValueGeneratedOnAdd();
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("SnapshotId");
|
b.Property<int>("SnapshotId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("Vector3Id");
|
b.Property<int>("Vector3Id")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.HasKey("ACSnapshotVector3Id");
|
b.HasKey("ACSnapshotVector3Id");
|
||||||
|
|
||||||
@ -107,39 +136,56 @@ namespace SharedLibraryCore.Migrations
|
|||||||
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientKill", b =>
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientKill", b =>
|
||||||
{
|
{
|
||||||
b.Property<long>("KillId")
|
b.Property<long>("KillId")
|
||||||
.ValueGeneratedOnAdd();
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<bool>("Active");
|
b.Property<bool>("Active")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("AttackerId");
|
b.Property<int>("AttackerId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("Damage");
|
b.Property<int>("Damage")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int?>("DeathOriginVector3Id");
|
b.Property<int?>("DeathOriginVector3Id")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("DeathType");
|
b.Property<int>("DeathType")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<double>("Fraction");
|
b.Property<double>("Fraction")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.Property<int>("HitLoc");
|
b.Property<int>("HitLoc")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<bool>("IsKill");
|
b.Property<bool>("IsKill")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int?>("KillOriginVector3Id");
|
b.Property<int?>("KillOriginVector3Id")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("Map");
|
b.Property<int>("Map")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<long>("ServerId");
|
b.Property<long>("ServerId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("VictimId");
|
b.Property<int>("VictimId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int?>("ViewAnglesVector3Id");
|
b.Property<int?>("ViewAnglesVector3Id")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<double>("VisibilityPercentage");
|
b.Property<double>("VisibilityPercentage")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.Property<int>("Weapon");
|
b.Property<int>("Weapon")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<DateTime>("When");
|
b.Property<DateTime>("When")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.HasKey("KillId");
|
b.HasKey("KillId");
|
||||||
|
|
||||||
@ -161,17 +207,23 @@ namespace SharedLibraryCore.Migrations
|
|||||||
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientMessage", b =>
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientMessage", b =>
|
||||||
{
|
{
|
||||||
b.Property<long>("MessageId")
|
b.Property<long>("MessageId")
|
||||||
.ValueGeneratedOnAdd();
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<bool>("Active");
|
b.Property<bool>("Active")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("ClientId");
|
b.Property<int>("ClientId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<string>("Message");
|
b.Property<string>("Message")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<long>("ServerId");
|
b.Property<long>("ServerId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<DateTime>("TimeSent");
|
b.Property<DateTime>("TimeSent")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.HasKey("MessageId");
|
b.HasKey("MessageId");
|
||||||
|
|
||||||
@ -187,11 +239,14 @@ namespace SharedLibraryCore.Migrations
|
|||||||
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientRatingHistory", b =>
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientRatingHistory", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("RatingHistoryId")
|
b.Property<int>("RatingHistoryId")
|
||||||
.ValueGeneratedOnAdd();
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<bool>("Active");
|
b.Property<bool>("Active")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("ClientId");
|
b.Property<int>("ClientId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.HasKey("RatingHistoryId");
|
b.HasKey("RatingHistoryId");
|
||||||
|
|
||||||
@ -202,35 +257,50 @@ namespace SharedLibraryCore.Migrations
|
|||||||
|
|
||||||
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientStatistics", b =>
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientStatistics", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("ClientId");
|
b.Property<int>("ClientId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<long>("ServerId");
|
b.Property<long>("ServerId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<bool>("Active");
|
b.Property<bool>("Active")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<double>("AverageRecoilOffset");
|
b.Property<double>("AverageRecoilOffset")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.Property<double>("AverageSnapValue");
|
b.Property<double>("AverageSnapValue")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.Property<int>("Deaths");
|
b.Property<int>("Deaths")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<double>("EloRating");
|
b.Property<double>("EloRating")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.Property<int>("Kills");
|
b.Property<int>("Kills")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<double>("MaxStrain");
|
b.Property<double>("MaxStrain")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.Property<double>("RollingWeightedKDR");
|
b.Property<double>("RollingWeightedKDR")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.Property<double>("SPM");
|
b.Property<double>("SPM")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.Property<double>("Skill");
|
b.Property<double>("Skill")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.Property<int>("SnapHitCount");
|
b.Property<int>("SnapHitCount")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("TimePlayed");
|
b.Property<int>("TimePlayed")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<double>("VisionAverage");
|
b.Property<double>("VisionAverage")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.HasKey("ClientId", "ServerId");
|
b.HasKey("ClientId", "ServerId");
|
||||||
|
|
||||||
@ -242,29 +312,37 @@ namespace SharedLibraryCore.Migrations
|
|||||||
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFHitLocationCount", b =>
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFHitLocationCount", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("HitLocationCountId")
|
b.Property<int>("HitLocationCountId")
|
||||||
.ValueGeneratedOnAdd();
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<bool>("Active");
|
b.Property<bool>("Active")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("ClientId")
|
b.Property<int>("EFClientStatisticsClientId")
|
||||||
.HasColumnName("EFClientStatistics_ClientId");
|
.HasColumnName("EFClientStatisticsClientId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("HitCount");
|
b.Property<long>("EFClientStatisticsServerId")
|
||||||
|
.HasColumnName("EFClientStatisticsServerId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<float>("HitOffsetAverage");
|
b.Property<int>("HitCount")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("Location");
|
b.Property<float>("HitOffsetAverage")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.Property<float>("MaxAngleDistance");
|
b.Property<int>("Location")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<long>("ServerId")
|
b.Property<float>("MaxAngleDistance")
|
||||||
.HasColumnName("EFClientStatistics_ServerId");
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.HasKey("HitLocationCountId");
|
b.HasKey("HitLocationCountId");
|
||||||
|
|
||||||
b.HasIndex("ServerId");
|
b.HasIndex("EFClientStatisticsServerId");
|
||||||
|
|
||||||
b.HasIndex("ClientId", "ServerId");
|
b.HasIndex("EFClientStatisticsClientId", "EFClientStatisticsServerId");
|
||||||
|
|
||||||
b.ToTable("EFHitLocationCounts");
|
b.ToTable("EFHitLocationCounts");
|
||||||
});
|
});
|
||||||
@ -272,23 +350,32 @@ namespace SharedLibraryCore.Migrations
|
|||||||
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFRating", b =>
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFRating", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("RatingId")
|
b.Property<int>("RatingId")
|
||||||
.ValueGeneratedOnAdd();
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<bool>("Active");
|
b.Property<bool>("Active")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("ActivityAmount");
|
b.Property<int>("ActivityAmount")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<bool>("Newest");
|
b.Property<bool>("Newest")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<double>("Performance");
|
b.Property<double>("Performance")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.Property<int>("Ranking");
|
b.Property<int>("Ranking")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("RatingHistoryId");
|
b.Property<int>("RatingHistoryId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<long?>("ServerId");
|
b.Property<long?>("ServerId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<DateTime>("When");
|
b.Property<DateTime>("When")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.HasKey("RatingId");
|
b.HasKey("RatingId");
|
||||||
|
|
||||||
@ -303,15 +390,20 @@ namespace SharedLibraryCore.Migrations
|
|||||||
|
|
||||||
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFServer", b =>
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFServer", b =>
|
||||||
{
|
{
|
||||||
b.Property<long>("ServerId");
|
b.Property<long>("ServerId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<bool>("Active");
|
b.Property<bool>("Active")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<string>("EndPoint");
|
b.Property<string>("EndPoint")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<int?>("GameName");
|
b.Property<int?>("GameName")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("Port");
|
b.Property<int>("Port")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.HasKey("ServerId");
|
b.HasKey("ServerId");
|
||||||
|
|
||||||
@ -321,15 +413,20 @@ namespace SharedLibraryCore.Migrations
|
|||||||
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFServerStatistics", b =>
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFServerStatistics", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("StatisticId")
|
b.Property<int>("StatisticId")
|
||||||
.ValueGeneratedOnAdd();
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<bool>("Active");
|
b.Property<bool>("Active")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<long>("ServerId");
|
b.Property<long>("ServerId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<long>("TotalKills");
|
b.Property<long>("TotalKills")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<long>("TotalPlayTime");
|
b.Property<long>("TotalPlayTime")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.HasKey("StatisticId");
|
b.HasKey("StatisticId");
|
||||||
|
|
||||||
@ -341,21 +438,28 @@ namespace SharedLibraryCore.Migrations
|
|||||||
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFAlias", b =>
|
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFAlias", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("AliasId")
|
b.Property<int>("AliasId")
|
||||||
.ValueGeneratedOnAdd();
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<bool>("Active");
|
b.Property<bool>("Active")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<DateTime>("DateAdded");
|
b.Property<DateTime>("DateAdded")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<int?>("IPAddress");
|
b.Property<int?>("IPAddress")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("LinkId");
|
b.Property<int>("LinkId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<string>("Name")
|
b.Property<string>("Name")
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT")
|
||||||
.HasMaxLength(24);
|
.HasMaxLength(24);
|
||||||
|
|
||||||
b.Property<string>("SearchableName")
|
b.Property<string>("SearchableName")
|
||||||
|
.HasColumnType("TEXT")
|
||||||
.HasMaxLength(24);
|
.HasMaxLength(24);
|
||||||
|
|
||||||
b.HasKey("AliasId");
|
b.HasKey("AliasId");
|
||||||
@ -374,9 +478,11 @@ namespace SharedLibraryCore.Migrations
|
|||||||
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFAliasLink", b =>
|
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFAliasLink", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("AliasLinkId")
|
b.Property<int>("AliasLinkId")
|
||||||
.ValueGeneratedOnAdd();
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<bool>("Active");
|
b.Property<bool>("Active")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.HasKey("AliasLinkId");
|
b.HasKey("AliasLinkId");
|
||||||
|
|
||||||
@ -386,24 +492,33 @@ namespace SharedLibraryCore.Migrations
|
|||||||
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFChangeHistory", b =>
|
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFChangeHistory", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("ChangeHistoryId")
|
b.Property<int>("ChangeHistoryId")
|
||||||
.ValueGeneratedOnAdd();
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<bool>("Active");
|
b.Property<bool>("Active")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<string>("Comment")
|
b.Property<string>("Comment")
|
||||||
|
.HasColumnType("TEXT")
|
||||||
.HasMaxLength(128);
|
.HasMaxLength(128);
|
||||||
|
|
||||||
b.Property<string>("CurrentValue");
|
b.Property<string>("CurrentValue")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<int>("OriginEntityId");
|
b.Property<int>("OriginEntityId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<string>("PreviousValue");
|
b.Property<string>("PreviousValue")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<int>("TargetEntityId");
|
b.Property<int>("TargetEntityId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<DateTime>("TimeChanged");
|
b.Property<DateTime>("TimeChanged")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<int>("TypeOfChange");
|
b.Property<int>("TypeOfChange")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.HasKey("ChangeHistoryId");
|
b.HasKey("ChangeHistoryId");
|
||||||
|
|
||||||
@ -413,31 +528,44 @@ namespace SharedLibraryCore.Migrations
|
|||||||
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFClient", b =>
|
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFClient", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("ClientId")
|
b.Property<int>("ClientId")
|
||||||
.ValueGeneratedOnAdd();
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<bool>("Active");
|
b.Property<bool>("Active")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("AliasLinkId");
|
b.Property<int>("AliasLinkId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("Connections");
|
b.Property<int>("Connections")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("CurrentAliasId");
|
b.Property<int>("CurrentAliasId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<DateTime>("FirstConnection");
|
b.Property<DateTime>("FirstConnection")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<DateTime>("LastConnection");
|
b.Property<DateTime>("LastConnection")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<int>("Level");
|
b.Property<int>("Level")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<bool>("Masked");
|
b.Property<bool>("Masked")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<long>("NetworkId");
|
b.Property<long>("NetworkId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<string>("Password");
|
b.Property<string>("Password")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<string>("PasswordSalt");
|
b.Property<string>("PasswordSalt")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<int>("TotalConnectionTime");
|
b.Property<int>("TotalConnectionTime")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.HasKey("ClientId");
|
b.HasKey("ClientId");
|
||||||
|
|
||||||
@ -454,24 +582,32 @@ namespace SharedLibraryCore.Migrations
|
|||||||
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFMeta", b =>
|
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFMeta", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("MetaId")
|
b.Property<int>("MetaId")
|
||||||
.ValueGeneratedOnAdd();
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<bool>("Active");
|
b.Property<bool>("Active")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("ClientId");
|
b.Property<int>("ClientId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<DateTime>("Created");
|
b.Property<DateTime>("Created")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<string>("Extra");
|
b.Property<string>("Extra")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<string>("Key")
|
b.Property<string>("Key")
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT")
|
||||||
.HasMaxLength(32);
|
.HasMaxLength(32);
|
||||||
|
|
||||||
b.Property<DateTime>("Updated");
|
b.Property<DateTime>("Updated")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<string>("Value")
|
b.Property<string>("Value")
|
||||||
.IsRequired();
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.HasKey("MetaId");
|
b.HasKey("MetaId");
|
||||||
|
|
||||||
@ -485,28 +621,39 @@ namespace SharedLibraryCore.Migrations
|
|||||||
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFPenalty", b =>
|
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFPenalty", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("PenaltyId")
|
b.Property<int>("PenaltyId")
|
||||||
.ValueGeneratedOnAdd();
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<bool>("Active");
|
b.Property<bool>("Active")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<string>("AutomatedOffense");
|
b.Property<string>("AutomatedOffense")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<DateTime?>("Expires");
|
b.Property<DateTime?>("Expires")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<bool>("IsEvadedOffense");
|
b.Property<bool>("IsEvadedOffense")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("LinkId");
|
b.Property<int>("LinkId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("OffenderId");
|
b.Property<int>("OffenderId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<string>("Offense")
|
b.Property<string>("Offense")
|
||||||
.IsRequired();
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.Property<int>("PunisherId");
|
b.Property<int>("PunisherId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<int>("Type");
|
b.Property<int>("Type")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<DateTime>("When");
|
b.Property<DateTime>("When")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
b.HasKey("PenaltyId");
|
b.HasKey("PenaltyId");
|
||||||
|
|
||||||
@ -522,13 +669,17 @@ namespace SharedLibraryCore.Migrations
|
|||||||
modelBuilder.Entity("SharedLibraryCore.Helpers.Vector3", b =>
|
modelBuilder.Entity("SharedLibraryCore.Helpers.Vector3", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("Vector3Id")
|
b.Property<int>("Vector3Id")
|
||||||
.ValueGeneratedOnAdd();
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
b.Property<float>("X");
|
b.Property<float>("X")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.Property<float>("Y");
|
b.Property<float>("Y")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.Property<float>("Z");
|
b.Property<float>("Z")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
b.HasKey("Vector3Id");
|
b.HasKey("Vector3Id");
|
||||||
|
|
||||||
@ -540,27 +691,32 @@ namespace SharedLibraryCore.Migrations
|
|||||||
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
|
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey("ClientId")
|
.HasForeignKey("ClientId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
b.HasOne("SharedLibraryCore.Helpers.Vector3", "CurrentViewAngle")
|
b.HasOne("SharedLibraryCore.Helpers.Vector3", "CurrentViewAngle")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey("CurrentViewAngleId")
|
.HasForeignKey("CurrentViewAngleId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
b.HasOne("SharedLibraryCore.Helpers.Vector3", "HitDestination")
|
b.HasOne("SharedLibraryCore.Helpers.Vector3", "HitDestination")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey("HitDestinationId")
|
.HasForeignKey("HitDestinationId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
b.HasOne("SharedLibraryCore.Helpers.Vector3", "HitOrigin")
|
b.HasOne("SharedLibraryCore.Helpers.Vector3", "HitOrigin")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey("HitOriginId")
|
.HasForeignKey("HitOriginId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
b.HasOne("SharedLibraryCore.Helpers.Vector3", "LastStrainAngle")
|
b.HasOne("SharedLibraryCore.Helpers.Vector3", "LastStrainAngle")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey("LastStrainAngleId")
|
.HasForeignKey("LastStrainAngleId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFACSnapshotVector3", b =>
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFACSnapshotVector3", b =>
|
||||||
@ -568,12 +724,14 @@ namespace SharedLibraryCore.Migrations
|
|||||||
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFACSnapshot", "Snapshot")
|
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFACSnapshot", "Snapshot")
|
||||||
.WithMany("PredictedViewAngles")
|
.WithMany("PredictedViewAngles")
|
||||||
.HasForeignKey("SnapshotId")
|
.HasForeignKey("SnapshotId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
b.HasOne("SharedLibraryCore.Helpers.Vector3", "Vector")
|
b.HasOne("SharedLibraryCore.Helpers.Vector3", "Vector")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey("Vector3Id")
|
.HasForeignKey("Vector3Id")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientKill", b =>
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientKill", b =>
|
||||||
@ -581,7 +739,8 @@ namespace SharedLibraryCore.Migrations
|
|||||||
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Attacker")
|
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Attacker")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey("AttackerId")
|
.HasForeignKey("AttackerId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
b.HasOne("SharedLibraryCore.Helpers.Vector3", "DeathOrigin")
|
b.HasOne("SharedLibraryCore.Helpers.Vector3", "DeathOrigin")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
@ -594,12 +753,14 @@ namespace SharedLibraryCore.Migrations
|
|||||||
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
|
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey("ServerId")
|
.HasForeignKey("ServerId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Victim")
|
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Victim")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey("VictimId")
|
.HasForeignKey("VictimId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
b.HasOne("SharedLibraryCore.Helpers.Vector3", "ViewAngles")
|
b.HasOne("SharedLibraryCore.Helpers.Vector3", "ViewAngles")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
@ -611,12 +772,14 @@ namespace SharedLibraryCore.Migrations
|
|||||||
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
|
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey("ClientId")
|
.HasForeignKey("ClientId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
|
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey("ServerId")
|
.HasForeignKey("ServerId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientRatingHistory", b =>
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientRatingHistory", b =>
|
||||||
@ -624,7 +787,8 @@ namespace SharedLibraryCore.Migrations
|
|||||||
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
|
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey("ClientId")
|
.HasForeignKey("ClientId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientStatistics", b =>
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientStatistics", b =>
|
||||||
@ -632,30 +796,35 @@ namespace SharedLibraryCore.Migrations
|
|||||||
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
|
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey("ClientId")
|
.HasForeignKey("ClientId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
|
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey("ServerId")
|
.HasForeignKey("ServerId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFHitLocationCount", b =>
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFHitLocationCount", b =>
|
||||||
{
|
{
|
||||||
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
|
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey("ClientId")
|
.HasForeignKey("EFClientStatisticsClientId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
|
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey("ServerId")
|
.HasForeignKey("EFClientStatisticsServerId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFClientStatistics")
|
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFClientStatistics", null)
|
||||||
.WithMany("HitLocations")
|
.WithMany("HitLocations")
|
||||||
.HasForeignKey("ClientId", "ServerId")
|
.HasForeignKey("EFClientStatisticsClientId", "EFClientStatisticsServerId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFRating", b =>
|
modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFRating", b =>
|
||||||
@ -663,7 +832,8 @@ namespace SharedLibraryCore.Migrations
|
|||||||
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFClientRatingHistory", "RatingHistory")
|
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFClientRatingHistory", "RatingHistory")
|
||||||
.WithMany("Ratings")
|
.WithMany("Ratings")
|
||||||
.HasForeignKey("RatingHistoryId")
|
.HasForeignKey("RatingHistoryId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
|
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
@ -675,7 +845,8 @@ namespace SharedLibraryCore.Migrations
|
|||||||
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
|
b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey("ServerId")
|
.HasForeignKey("ServerId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFAlias", b =>
|
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFAlias", b =>
|
||||||
@ -683,7 +854,8 @@ namespace SharedLibraryCore.Migrations
|
|||||||
b.HasOne("SharedLibraryCore.Database.Models.EFAliasLink", "Link")
|
b.HasOne("SharedLibraryCore.Database.Models.EFAliasLink", "Link")
|
||||||
.WithMany("Children")
|
.WithMany("Children")
|
||||||
.HasForeignKey("LinkId")
|
.HasForeignKey("LinkId")
|
||||||
.OnDelete(DeleteBehavior.Restrict);
|
.OnDelete(DeleteBehavior.Restrict)
|
||||||
|
.IsRequired();
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFClient", b =>
|
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFClient", b =>
|
||||||
@ -691,12 +863,14 @@ namespace SharedLibraryCore.Migrations
|
|||||||
b.HasOne("SharedLibraryCore.Database.Models.EFAliasLink", "AliasLink")
|
b.HasOne("SharedLibraryCore.Database.Models.EFAliasLink", "AliasLink")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey("AliasLinkId")
|
.HasForeignKey("AliasLinkId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
b.HasOne("SharedLibraryCore.Database.Models.EFAlias", "CurrentAlias")
|
b.HasOne("SharedLibraryCore.Database.Models.EFAlias", "CurrentAlias")
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey("CurrentAliasId")
|
.HasForeignKey("CurrentAliasId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFMeta", b =>
|
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFMeta", b =>
|
||||||
@ -704,7 +878,8 @@ namespace SharedLibraryCore.Migrations
|
|||||||
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
|
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
|
||||||
.WithMany("Meta")
|
.WithMany("Meta")
|
||||||
.HasForeignKey("ClientId")
|
.HasForeignKey("ClientId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFPenalty", b =>
|
modelBuilder.Entity("SharedLibraryCore.Database.Models.EFPenalty", b =>
|
||||||
@ -712,17 +887,20 @@ namespace SharedLibraryCore.Migrations
|
|||||||
b.HasOne("SharedLibraryCore.Database.Models.EFAliasLink", "Link")
|
b.HasOne("SharedLibraryCore.Database.Models.EFAliasLink", "Link")
|
||||||
.WithMany("ReceivedPenalties")
|
.WithMany("ReceivedPenalties")
|
||||||
.HasForeignKey("LinkId")
|
.HasForeignKey("LinkId")
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Offender")
|
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Offender")
|
||||||
.WithMany("ReceivedPenalties")
|
.WithMany("ReceivedPenalties")
|
||||||
.HasForeignKey("OffenderId")
|
.HasForeignKey("OffenderId")
|
||||||
.OnDelete(DeleteBehavior.Restrict);
|
.OnDelete(DeleteBehavior.Restrict)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Punisher")
|
b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Punisher")
|
||||||
.WithMany("AdministeredPenalties")
|
.WithMany("AdministeredPenalties")
|
||||||
.HasForeignKey("PunisherId")
|
.HasForeignKey("PunisherId")
|
||||||
.OnDelete(DeleteBehavior.Restrict);
|
.OnDelete(DeleteBehavior.Restrict)
|
||||||
|
.IsRequired();
|
||||||
});
|
});
|
||||||
#pragma warning restore 612, 618
|
#pragma warning restore 612, 618
|
||||||
}
|
}
|
||||||
|
@ -290,26 +290,26 @@ namespace SharedLibraryCore.Services
|
|||||||
{
|
{
|
||||||
using (var context = new DatabaseContext(true))
|
using (var context = new DatabaseContext(true))
|
||||||
{
|
{
|
||||||
var iqClient = from client in context.Clients
|
var iqClient = from _c in context.Clients
|
||||||
.Include(c => c.CurrentAlias)
|
.Include(c => c.CurrentAlias)
|
||||||
.Include(c => c.AliasLink.Children)
|
.Include(c => c.AliasLink.Children)
|
||||||
.Include(c => c.Meta)
|
.Include(c => c.Meta)
|
||||||
where client.ClientId == entityID
|
where _c.ClientId == entityID
|
||||||
select new
|
select _c;
|
||||||
{
|
|
||||||
Client = client,
|
var client = await iqClient.FirstOrDefaultAsync();
|
||||||
LinkedAccounts = (from linkedClient in context.Clients
|
|
||||||
where client.AliasLinkId == linkedClient.AliasLinkId
|
var foundClient = new
|
||||||
select new
|
{
|
||||||
{
|
Client = client,
|
||||||
linkedClient.ClientId,
|
LinkedAccounts = await context.Clients.Where(_client => _client.AliasLinkId == client.AliasLinkId)
|
||||||
linkedClient.NetworkId
|
.Select(_linkedClient => new
|
||||||
})
|
{
|
||||||
};
|
_linkedClient.ClientId,
|
||||||
#if DEBUG == true
|
_linkedClient.NetworkId
|
||||||
var clientSql = iqClient.ToSql();
|
})
|
||||||
#endif
|
.ToListAsync()
|
||||||
var foundClient = await iqClient.FirstOrDefaultAsync();
|
};
|
||||||
|
|
||||||
if (foundClient == null)
|
if (foundClient == null)
|
||||||
{
|
{
|
||||||
@ -585,6 +585,7 @@ namespace SharedLibraryCore.Services
|
|||||||
var iqClients = context.Clients
|
var iqClients = context.Clients
|
||||||
.Where(_client => _client.CurrentAlias.IPAddress != null)
|
.Where(_client => _client.CurrentAlias.IPAddress != null)
|
||||||
.Where(_client => _client.FirstConnection >= startOfPeriod)
|
.Where(_client => _client.FirstConnection >= startOfPeriod)
|
||||||
|
.OrderByDescending(_client => _client.FirstConnection)
|
||||||
.Select(_client => new PlayerInfo()
|
.Select(_client => new PlayerInfo()
|
||||||
{
|
{
|
||||||
ClientId = _client.ClientId,
|
ClientId = _client.ClientId,
|
||||||
@ -592,6 +593,7 @@ namespace SharedLibraryCore.Services
|
|||||||
IPAddress = _client.CurrentAlias.IPAddress.ConvertIPtoString(),
|
IPAddress = _client.CurrentAlias.IPAddress.ConvertIPtoString(),
|
||||||
LastConnection = _client.FirstConnection
|
LastConnection = _client.FirstConnection
|
||||||
});
|
});
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
var sql = iqClients.ToSql();
|
var sql = iqClients.ToSql();
|
||||||
#endif
|
#endif
|
||||||
|
@ -25,7 +25,7 @@ namespace SharedLibraryCore
|
|||||||
public static class Utilities
|
public static class Utilities
|
||||||
{
|
{
|
||||||
#if DEBUG == true
|
#if DEBUG == true
|
||||||
public static string OperatingDirectory => $"{Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)}{Path.DirectorySeparatorChar}";
|
public static string OperatingDirectory => $"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}{Path.DirectorySeparatorChar}";
|
||||||
#else
|
#else
|
||||||
public static string OperatingDirectory => $"{Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)}{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}";
|
public static string OperatingDirectory => $"{Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)}{Path.DirectorySeparatorChar}..{Path.DirectorySeparatorChar}";
|
||||||
#endif
|
#endif
|
||||||
@ -850,30 +850,9 @@ namespace SharedLibraryCore
|
|||||||
public static bool ShouldHideLevel(this Permission perm) => perm == Permission.Flagged;
|
public static bool ShouldHideLevel(this Permission perm) => perm == Permission.Flagged;
|
||||||
|
|
||||||
#if DEBUG == true
|
#if DEBUG == true
|
||||||
|
|
||||||
private static readonly TypeInfo QueryCompilerTypeInfo = typeof(QueryCompiler).GetTypeInfo();
|
|
||||||
|
|
||||||
private static readonly FieldInfo QueryCompilerField = typeof(EntityQueryProvider).GetTypeInfo().DeclaredFields.First(x => x.Name == "_queryCompiler");
|
|
||||||
|
|
||||||
private static readonly FieldInfo QueryModelGeneratorField = QueryCompilerTypeInfo.DeclaredFields.First(x => x.Name == "_queryModelGenerator");
|
|
||||||
|
|
||||||
private static readonly FieldInfo DataBaseField = QueryCompilerTypeInfo.DeclaredFields.Single(x => x.Name == "_database");
|
|
||||||
|
|
||||||
private static readonly PropertyInfo DatabaseDependenciesField = typeof(Microsoft.EntityFrameworkCore.Storage.Database).GetTypeInfo().DeclaredProperties.Single(x => x.Name == "Dependencies");
|
|
||||||
|
|
||||||
public static string ToSql<TEntity>(this IQueryable<TEntity> query) where TEntity : class
|
public static string ToSql<TEntity>(this IQueryable<TEntity> query) where TEntity : class
|
||||||
{
|
{
|
||||||
var queryCompiler = (QueryCompiler)QueryCompilerField.GetValue(query.Provider);
|
return "";
|
||||||
var modelGenerator = (QueryModelGenerator)QueryModelGeneratorField.GetValue(queryCompiler);
|
|
||||||
var queryModel = modelGenerator.ParseQuery(query.Expression);
|
|
||||||
var database = (IDatabase)DataBaseField.GetValue(queryCompiler);
|
|
||||||
var databaseDependencies = (DatabaseDependencies)DatabaseDependenciesField.GetValue(database);
|
|
||||||
var queryCompilationContext = databaseDependencies.QueryCompilationContextFactory.Create(false);
|
|
||||||
var modelVisitor = (RelationalQueryModelVisitor)queryCompilationContext.CreateQueryModelVisitor();
|
|
||||||
modelVisitor.CreateQueryExecutor<TEntity>(queryModel);
|
|
||||||
var sql = modelVisitor.Queries.First().ToString();
|
|
||||||
|
|
||||||
return sql;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,6 @@ namespace WebfrontCore
|
|||||||
{
|
{
|
||||||
public class Startup
|
public class Startup
|
||||||
{
|
{
|
||||||
private readonly IWebHostEnvironment _appHost;
|
|
||||||
public static IConfigurationRoot Configuration { get; private set; }
|
public static IConfigurationRoot Configuration { get; private set; }
|
||||||
|
|
||||||
public Startup(IWebHostEnvironment env)
|
public Startup(IWebHostEnvironment env)
|
||||||
@ -22,8 +21,6 @@ namespace WebfrontCore
|
|||||||
.AddEnvironmentVariables();
|
.AddEnvironmentVariables();
|
||||||
|
|
||||||
Configuration = builder.Build();
|
Configuration = builder.Build();
|
||||||
|
|
||||||
_appHost = env;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// This method gets called by the runtime. Use this method to add services to the container.
|
// This method gets called by the runtime. Use this method to add services to the container.
|
||||||
@ -112,6 +109,7 @@ namespace WebfrontCore
|
|||||||
|
|
||||||
app.UseStaticFiles();
|
app.UseStaticFiles();
|
||||||
app.UseAuthentication();
|
app.UseAuthentication();
|
||||||
|
app.UseAuthorization();
|
||||||
app.UseCors("AllowAll");
|
app.UseCors("AllowAll");
|
||||||
|
|
||||||
app.UseRouting();
|
app.UseRouting();
|
||||||
|
Loading…
Reference in New Issue
Block a user