From fe0a2d25c4dc9ee9af0c457b42cb67b0cae5d63d Mon Sep 17 00:00:00 2001 From: BtbN Date: Mon, 3 Jun 2019 19:42:35 +0200 Subject: [PATCH] Fixup schema --- ClanServer/ClanServerContext.cs | 12 ------------ ClanServer/Controllers/Core/Cardmng.cs | 4 +++- ClanServer/Controllers/L44/Gameend.cs | 6 +++++- ClanServer/Controllers/L44/Gametop.cs | 19 +++++++++---------- ClanServer/Models/Card.cs | 2 +- ClanServer/Models/JubeatClanProfileData.cs | 4 +++- ClanServer/Models/JubeatClanSettings.cs | 3 +++ ClanServer/Models/JubeatProfile.cs | 5 +++++ ClanServer/Models/JubeatScore.cs | 1 + 9 files changed, 30 insertions(+), 26 deletions(-) diff --git a/ClanServer/ClanServerContext.cs b/ClanServer/ClanServerContext.cs index b67e2a3..767a376 100644 --- a/ClanServer/ClanServerContext.cs +++ b/ClanServer/ClanServerContext.cs @@ -49,17 +49,5 @@ namespace ClanServer public DbSet JubeatClanProfileData { get; set; } public DbSet JubeatProfiles { get; set; } public DbSet JubeatScores { get; set; } - - public async Task FindCardAsync(Expression> selector) - { - Card card = await Cards.SingleOrDefaultAsync(selector); - - if (card != null) - { - await Entry(card).Reference(c => c.Player).LoadAsync(); - } - - return card; - } } } diff --git a/ClanServer/Controllers/Core/Cardmng.cs b/ClanServer/Controllers/Core/Cardmng.cs index d053588..727733c 100644 --- a/ClanServer/Controllers/Core/Cardmng.cs +++ b/ClanServer/Controllers/Core/Cardmng.cs @@ -62,7 +62,9 @@ namespace ClanServer.Controllers.Core string pass = cardmng.Attribute("pass").Value; byte[] refId = cardmng.Attribute("refid").Value.ToBytesFromHex(); - var card = await ctx.FindCardAsync(c => c.RefId.SequenceEqual(refId)); + Card card = await ctx.Cards + .Include(c => c.Player) + .SingleOrDefaultAsync(c => c.RefId.SequenceEqual(refId)); int status; if (card != null && card.Player != null && card.Player.Passwd == pass) diff --git a/ClanServer/Controllers/L44/Gameend.cs b/ClanServer/Controllers/L44/Gameend.cs index 4f056bb..8f7243f 100644 --- a/ClanServer/Controllers/L44/Gameend.cs +++ b/ClanServer/Controllers/L44/Gameend.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Threading.Tasks; using System.Xml.Linq; using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; using eAmuseCore.KBinXML; @@ -33,7 +34,10 @@ namespace ClanServer.Controllers.L44 byte[] refId = playerE.Element("refid").Value.ToBytesFromHex(); - Card card = await ctx.FindCardAsync(c => c.RefId.SequenceEqual(refId)); + Card card = await ctx.Cards + .Include(c => c.Player.JubeatProfile) + .SingleOrDefaultAsync(c => c.RefId.SequenceEqual(refId)); + if (card == null) return NotFound(); diff --git a/ClanServer/Controllers/L44/Gametop.cs b/ClanServer/Controllers/L44/Gametop.cs index 1d19185..b4389fa 100644 --- a/ClanServer/Controllers/L44/Gametop.cs +++ b/ClanServer/Controllers/L44/Gametop.cs @@ -32,13 +32,14 @@ namespace ClanServer.Controllers.L44 byte[] refId = player.Element("refid").Value.ToBytesFromHex(); string name = player.Element("name").Value; - Card card = await ctx.FindCardAsync(c => c.RefId.SequenceEqual(refId)); + Card card = await ctx.Cards + .Include(c => c.Player.JubeatProfile.ClanData) + .Include(c => c.Player.JubeatProfile.ClanSettings) + .SingleOrDefaultAsync(c => c.RefId.SequenceEqual(refId)); if (card == null || card.Player == null) return NotFound(); - await ctx.Entry(card.Player).Reference(p => p.JubeatProfile).LoadAsync(); - if (card.Player.JubeatProfile == null) card.Player.JubeatProfile = new JubeatProfile(); @@ -65,14 +66,12 @@ namespace ClanServer.Controllers.L44 byte[] refId = player.Element("refid").Value.ToBytesFromHex(); - Card card = await ctx.FindCardAsync(c => c.RefId.SequenceEqual(refId)); + Card card = await ctx.Cards + .Include(c => c.Player.JubeatProfile.ClanData) + .Include(c => c.Player.JubeatProfile.ClanSettings) + .SingleOrDefaultAsync(c => c.RefId.SequenceEqual(refId)); - if (card == null || card.Player == null) - return NotFound(); - - await ctx.Entry(card.Player).Reference(p => p.JubeatProfile).LoadAsync(); - - if (card.Player.JubeatProfile == null) + if (card == null || card.Player == null || card.Player.JubeatProfile == null) return NotFound(); data.Document = new XDocument(new XElement("response", new XElement("gametop", diff --git a/ClanServer/Models/Card.cs b/ClanServer/Models/Card.cs index 7ee5510..4f2bdb5 100644 --- a/ClanServer/Models/Card.cs +++ b/ClanServer/Models/Card.cs @@ -11,8 +11,8 @@ namespace ClanServer.Models { public int ID { get; set; } - [Required] public Player Player { get; set; } + public int PlayerID { get; set; } [Required] [MaxLength(8), MinLength(8)] diff --git a/ClanServer/Models/JubeatClanProfileData.cs b/ClanServer/Models/JubeatClanProfileData.cs index e30f048..50e4371 100644 --- a/ClanServer/Models/JubeatClanProfileData.cs +++ b/ClanServer/Models/JubeatClanProfileData.cs @@ -9,8 +9,10 @@ namespace ClanServer.Models { public int ID { get; set; } + public JubeatProfile Profile { get; set; } + public int ProfileID { get; set; } - [Range(0, 4)] + [Range(1, 4)] public byte Team { get; set; } public int Street { get; set; } diff --git a/ClanServer/Models/JubeatClanSettings.cs b/ClanServer/Models/JubeatClanSettings.cs index f0e46b5..25bfcfb 100644 --- a/ClanServer/Models/JubeatClanSettings.cs +++ b/ClanServer/Models/JubeatClanSettings.cs @@ -9,6 +9,9 @@ namespace ClanServer.Models { public int ID { get; set; } + public JubeatProfile Profile { get; set; } + public int ProfileID { get; set; } + public sbyte ExpertOption { get; set; } public sbyte Sort { get; set; } diff --git a/ClanServer/Models/JubeatProfile.cs b/ClanServer/Models/JubeatProfile.cs index b9f18dc..b431da3 100644 --- a/ClanServer/Models/JubeatProfile.cs +++ b/ClanServer/Models/JubeatProfile.cs @@ -9,6 +9,9 @@ namespace ClanServer.Models { public int ID { get; set; } + public Player Player { get; set; } + public int PlayerID { get; set; } + [Required] public int JID { get; set; } @@ -18,5 +21,7 @@ namespace ClanServer.Models public JubeatClanProfileData ClanData { get; set; } public JubeatClanSettings ClanSettings { get; set; } + + public ICollection Scores { get; set; } } } diff --git a/ClanServer/Models/JubeatScore.cs b/ClanServer/Models/JubeatScore.cs index c179fd1..dc8a502 100644 --- a/ClanServer/Models/JubeatScore.cs +++ b/ClanServer/Models/JubeatScore.cs @@ -10,6 +10,7 @@ namespace ClanServer.Models public int ID { get; set; } [Required] + public JubeatProfile Profile { get; set; } public int ProfileID { get; set; } public long Timestamp { get; set; }