using Data.Models.Client; using Data.Models.Client.Stats; using Data.Models.Client.Stats.Reference; using Data.Models.Server; using Microsoft.EntityFrameworkCore; namespace Data.Models.Configuration { public class StatsModelConfiguration { public static void Configure(ModelBuilder builder) { builder.Entity(entity => { entity.HasKey(cs => new {cs.ClientId, cs.ServerId}); entity.HasIndex(cs => new {cs.ClientId, cs.TimePlayed, PerformancePercentile = cs.ZScore}); entity.HasIndex(cs => new {PerformancePercentile = cs.ZScore}); entity.ToTable("EFClientStatistics"); }); // fix linking from SQLCe builder.Entity(entity => { entity.Property(c => c.EFClientStatisticsClientId) .HasColumnName("EFClientStatisticsClientId"); entity.Property(c => c.EFClientStatisticsServerId) .HasColumnName("EFClientStatisticsServerId"); entity.ToTable("EFHitLocationCounts"); }); builder.Entity(entity => { entity.HasIndex(p => new {p.Performance, p.Ranking, p.When}); entity.HasIndex(p => new {p.When, p.ServerId, p.Performance, p.ActivityAmount}); entity.ToTable(nameof(EFRating)); }); builder.Entity(entity => { entity.HasIndex(p => p.TimeSent); entity.ToTable("EFClientMessages"); }); builder.Entity(entity => { entity.ToTable(nameof(EFClientStatistics)); }); builder.Entity(entity => { entity.ToTable(nameof(EFRating)); }); builder.Entity(entity => { entity.ToTable(nameof(EFClientRatingHistory)); }); builder.Entity(entity => { entity.ToTable("EFHitLocationCounts"); }); builder.Entity(entity => { entity.ToTable("EFServerStatistics"); }); builder.Entity(entity => { entity.ToTable("EFServers"); }); builder.Entity(entity => { entity.ToTable("EFClientKills"); }); builder.Entity().ToTable(nameof(Vector3)); builder.Entity().ToTable(nameof(EFACSnapshot)); builder.Entity().ToTable(nameof(EFACSnapshotVector3)); builder.Entity(entity => { entity.HasIndex(loc => loc.Name); entity.ToTable("EFHitLocations"); }); builder.Entity(entity => { entity.HasIndex(weapon => weapon.Name); entity.ToTable("EFWeapons"); }); builder.Entity(entity => { entity.ToTable("EFMaps"); }); builder.Entity(entity => { entity.ToTable("EFClientHitStatistics"); }); builder.Entity(entity => { entity.ToTable("EFWeaponAttachments"); }); builder.Entity(entity => { entity.ToTable("EFWeaponAttachmentCombos"); }); builder.Entity(entity => { entity.ToTable("EFMeansOfDeath"); }); builder.Entity(entity => { entity.ToTable(nameof(EFClientRankingHistory)); entity.HasIndex(ranking => ranking.Ranking); entity.HasIndex(ranking => ranking.ZScore); entity.HasIndex(ranking => ranking.UpdatedDateTime); }); } } }