From 6f591af5ae0f1794307492737700832201e1f011 Mon Sep 17 00:00:00 2001 From: littlefoot Date: Sun, 7 Nov 2021 00:24:33 -0400 Subject: [PATCH] more rank stuff, might be ready for use --- .../Controllers/RankDataController.cs | 11 + .../PlayerData/PlayerDataGetResponseObject.cs | 1 + TOOHUCardAPI/DTO/RankData/RankEntryDTO.cs | 5 +- .../JsonConverters/RankEntryDTOConverter.cs | 3 +- TOOHUCardAPI/Data/Models/RankEntry.cs | 1 + .../Data/Repositories/RankRepository.cs | 3 +- TOOHUCardAPI/Data/Services/RankService.cs | 3 + .../2HU API.postman_collection.json | 184 +++ ...unno how to grab it for a user.Designer.cs | 1114 +++++++++++++++++ ...kentry, dunno how to grab it for a user.cs | 24 + .../Migrations/AppDbContextModelSnapshot.cs | 3 + TOOHUCardAPI/Startup.cs | 1 + TOOHUCardAPI/nlog.config | 2 +- 13 files changed, 1350 insertions(+), 5 deletions(-) create mode 100644 TOOHUCardAPI/ExternalDocumentation/2HU API.postman_collection.json create mode 100644 TOOHUCardAPI/Migrations/20211107042237_user id to rankentry, dunno how to grab it for a user.Designer.cs create mode 100644 TOOHUCardAPI/Migrations/20211107042237_user id to rankentry, dunno how to grab it for a user.cs diff --git a/TOOHUCardAPI/Controllers/RankDataController.cs b/TOOHUCardAPI/Controllers/RankDataController.cs index 9624d0c..afaf70b 100644 --- a/TOOHUCardAPI/Controllers/RankDataController.cs +++ b/TOOHUCardAPI/Controllers/RankDataController.cs @@ -5,7 +5,10 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using TOOHUCardAPI.Data; using TOOHUCardAPI.Data.Enums; +using TOOHUCardAPI.Data.JsonConverters; using TOOHUCardAPI.Data.Services; using TOOHUCardAPI.DTO; using TOOHUCardAPI.DTO.RankData; @@ -29,6 +32,14 @@ namespace TOOHUCardAPI.Controllers _userService = userService; } + [EndpointHandler("upload")] + private async Task UploadRankData(string body) + { + RankEntryDTO uploadrequest = JsonConvert.DeserializeObject(body, new RankEntryDTOConverter()); + await _rankService.UploadRankEntry(uploadrequest); + return Ok(new OkResponse()); + } + [HttpGet] public async Task GetRankData(string rank_type) { diff --git a/TOOHUCardAPI/DTO/PlayerData/PlayerDataGetResponseObject.cs b/TOOHUCardAPI/DTO/PlayerData/PlayerDataGetResponseObject.cs index d54ff65..0e2ceda 100644 --- a/TOOHUCardAPI/DTO/PlayerData/PlayerDataGetResponseObject.cs +++ b/TOOHUCardAPI/DTO/PlayerData/PlayerDataGetResponseObject.cs @@ -37,6 +37,7 @@ namespace TOOHUCardAPI.DTO.PlayerData [JsonProperty("power_max_total")] public int PowerMaxTotal { get; set; } [JsonProperty("pet_model")] public string PetModel { get; set; } [JsonProperty("pet_effect")] public string PetEffect { get; set; } + [JsonIgnore] public Dictionary EncodedCardGroups { get; set; } public Dictionary ToDynamicProperties() diff --git a/TOOHUCardAPI/DTO/RankData/RankEntryDTO.cs b/TOOHUCardAPI/DTO/RankData/RankEntryDTO.cs index 36844aa..e7f129a 100644 --- a/TOOHUCardAPI/DTO/RankData/RankEntryDTO.cs +++ b/TOOHUCardAPI/DTO/RankData/RankEntryDTO.cs @@ -1,11 +1,13 @@ using System.Collections.Generic; using System.Linq; +using Newtonsoft.Json; using TOOHUCardAPI.Data.Models; namespace TOOHUCardAPI.DTO.RankData { public class RankEntryDTO { + [JsonProperty("rank_type")] public string RankType { get; set; } public long SteamId { get; set; } public long UserId { get; set; } @@ -13,6 +15,7 @@ namespace TOOHUCardAPI.DTO.RankData public string Version { get; set; } public int Wave { get; set; } public long Damage { get; set; } + [JsonIgnore] public Dictionary Cards { get; set; } } @@ -24,7 +27,7 @@ namespace TOOHUCardAPI.DTO.RankData { RankType = ((char) rankEntry.RankType).ToString(), SteamId = rankEntry.User.SteamId, - UserId = 0, // temporary + UserId = rankEntry.AccountId, Username = rankEntry.Username, Version = rankEntry.Version, Wave = rankEntry.Wave, diff --git a/TOOHUCardAPI/Data/JsonConverters/RankEntryDTOConverter.cs b/TOOHUCardAPI/Data/JsonConverters/RankEntryDTOConverter.cs index 80ee238..043fb3f 100644 --- a/TOOHUCardAPI/Data/JsonConverters/RankEntryDTOConverter.cs +++ b/TOOHUCardAPI/Data/JsonConverters/RankEntryDTOConverter.cs @@ -25,8 +25,7 @@ namespace TOOHUCardAPI.Data.JsonConverters JsonSerializer serializer) { JObject jo = JObject.Load(reader); - RankEntryDTO dto = new RankEntryDTO(); - serializer.Populate(reader, dto); + RankEntryDTO dto = jo.ToObject(); dto.Cards = jo.Properties().Where(prop => prop.Name.Contains("card")) .Select(i => KeyValuePair.Create(i.Name, i.Value)) .ToDictionary(kv => kv.Key, kv => kv.Value.ToObject()); diff --git a/TOOHUCardAPI/Data/Models/RankEntry.cs b/TOOHUCardAPI/Data/Models/RankEntry.cs index cd52182..b938470 100644 --- a/TOOHUCardAPI/Data/Models/RankEntry.cs +++ b/TOOHUCardAPI/Data/Models/RankEntry.cs @@ -13,6 +13,7 @@ namespace TOOHUCardAPI.Data.Models public RankType RankType { get; set; } public string Username { get; set; } public User User { get; set; } + public long AccountId { get; set; } public string Version { get; set; } public int Wave { get; set; } public long Damage { get; set; } diff --git a/TOOHUCardAPI/Data/Repositories/RankRepository.cs b/TOOHUCardAPI/Data/Repositories/RankRepository.cs index 851a559..2c1a547 100644 --- a/TOOHUCardAPI/Data/Repositories/RankRepository.cs +++ b/TOOHUCardAPI/Data/Repositories/RankRepository.cs @@ -22,7 +22,7 @@ namespace TOOHUCardAPI.Data.Repositories private IQueryable AllIncluded() { - return _appDbContext.RankEntries.Include(i => i.TowersUsed); + return _appDbContext.RankEntries.Include(i => i.TowersUsed).Include(i => i.User); } public async Task> GetRankEntries(RankType rankType) @@ -33,6 +33,7 @@ namespace TOOHUCardAPI.Data.Repositories public async Task InsertRankEntry(RankEntry entry) { await _appDbContext.RankEntries.AddAsync(entry); + await _appDbContext.SaveChangesAsync(); } } } \ No newline at end of file diff --git a/TOOHUCardAPI/Data/Services/RankService.cs b/TOOHUCardAPI/Data/Services/RankService.cs index d600d4a..24d79cb 100644 --- a/TOOHUCardAPI/Data/Services/RankService.cs +++ b/TOOHUCardAPI/Data/Services/RankService.cs @@ -25,6 +25,7 @@ namespace TOOHUCardAPI.Data.Services public async Task> GetRankEntries(RankType rankType) { var rankEntries = await _rankRepository.GetRankEntries(rankType); + _logger.LogInformation("Got rank entries for {RankType}", rankType.ToString()); return rankEntries.Select(entry => entry.ToRankEntryDTO()).ToList(); } @@ -40,12 +41,14 @@ namespace TOOHUCardAPI.Data.Services RankType = RankTypeExtensions.ParseRankType(entry.RankType), Username = entry.Username, User = await _userRepository.GetUser(entry.SteamId), + AccountId = entry.UserId, Version = entry.Version, Wave = entry.Wave, Damage = entry.Damage, TowersUsed = towersUsed }; await _rankRepository.InsertRankEntry(toUpload); + _logger.LogInformation("Uploaded a rank entry for {SteamId}", entry.SteamId); } } } \ No newline at end of file diff --git a/TOOHUCardAPI/ExternalDocumentation/2HU API.postman_collection.json b/TOOHUCardAPI/ExternalDocumentation/2HU API.postman_collection.json new file mode 100644 index 0000000..40f2335 --- /dev/null +++ b/TOOHUCardAPI/ExternalDocumentation/2HU API.postman_collection.json @@ -0,0 +1,184 @@ +{ + "info": { + "_postman_id": "ca7d06a8-ff57-4c17-bfb0-b7fd504dcf40", + "name": "2HU API", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "name": "PlayerData", + "item": [ + { + "name": "Get Test User", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"method\": \"get\",\n \"ids\": {\n \"0\": \"123\"\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseURL}}PlayerData", + "host": [ + "{{BaseURL}}PlayerData" + ] + } + }, + "response": [] + }, + { + "name": "Save Test Card Group", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"method\": \"save_card_group\",\n \"steamid\": \"123\",\n \"group_key\": \"1\",\n \"group_data\": \"test\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseURL}}PlayerData", + "host": [ + "{{BaseURL}}PlayerData" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "GameConfig", + "item": [ + { + "name": "Get Gameconfig", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseURL}}GameConfig", + "host": [ + "{{BaseURL}}GameConfig" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "PlayerBaseData", + "item": [ + { + "name": "PlayerBaseData", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseURL}}PlayerBaseData?id=123", + "host": [ + "{{BaseURL}}PlayerBaseData" + ], + "query": [ + { + "key": "id", + "value": "123" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "RankData", + "item": [ + { + "name": "Get", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{BaseURL}}RankData?rank_type=all", + "host": [ + "{{BaseURL}}RankData" + ], + "query": [ + { + "key": "rank_type", + "value": "all" + } + ] + } + }, + "response": [] + }, + { + "name": "Upload", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"method\": \"upload\",\n \"rank_type\": \"S\",\n \"steamid\": \"123\",\n \"userid\": \"12345\",\n \"username\": \"debug\",\n \"version\": \"S8\",\n \"wave\": 5,\n \"damage\": 5,\n \"card1\": \"debug\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BaseURL}}RankData", + "host": [ + "{{BaseURL}}RankData" + ] + } + }, + "response": [] + } + ] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "pm.test(\"Body response code is 0000\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.code).to.eql(\"0000\");", + "});" + ] + } + } + ], + "variable": [ + { + "key": "BaseURL", + "value": "https://192.168.1.103:5001/api/" + } + ] +} \ No newline at end of file diff --git a/TOOHUCardAPI/Migrations/20211107042237_user id to rankentry, dunno how to grab it for a user.Designer.cs b/TOOHUCardAPI/Migrations/20211107042237_user id to rankentry, dunno how to grab it for a user.Designer.cs new file mode 100644 index 0000000..35a5367 --- /dev/null +++ b/TOOHUCardAPI/Migrations/20211107042237_user id to rankentry, dunno how to grab it for a user.Designer.cs @@ -0,0 +1,1114 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using TOOHUCardAPI.Data; + +namespace TOOHUCardAPI.Migrations +{ + [DbContext(typeof(AppDbContext))] + [Migration("20211107042237_user id to rankentry, dunno how to grab it for a user")] + partial class useridtorankentrydunnohowtograbitforauser + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Relational:MaxIdentifierLength", 63) + .HasAnnotation("ProductVersion", "5.0.11") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + modelBuilder.Entity("TOOHUCardAPI.Data.Models.Card", b => + { + b.Property("ItemCode") + .HasColumnType("text"); + + b.Property("CardName") + .HasColumnType("text"); + + b.Property("HasPortrait") + .HasColumnType("boolean"); + + b.Property("HasVoice") + .HasColumnType("boolean"); + + b.Property("Quality") + .HasColumnType("integer"); + + b.HasKey("ItemCode"); + + b.ToTable("Cards"); + + b.HasData( + new + { + ItemCode = "item_0026", + CardName = "rin", + HasPortrait = true, + HasVoice = true, + Quality = 3 + }, + new + { + ItemCode = "item_0043", + CardName = "hatate", + HasPortrait = true, + HasVoice = true, + Quality = 2 + }, + new + { + ItemCode = "item_0014", + CardName = "merlin", + HasPortrait = true, + HasVoice = true, + Quality = 2 + }, + new + { + ItemCode = "item_0007", + CardName = "hanadayousei", + HasPortrait = false, + HasVoice = false, + Quality = 1 + }, + new + { + ItemCode = "item_2002", + CardName = "item_2002", + HasPortrait = false, + HasVoice = false, + Quality = 4 + }, + new + { + ItemCode = "item_0055", + CardName = "suika", + HasPortrait = true, + HasVoice = true, + Quality = 3 + }, + new + { + ItemCode = "item_0002", + CardName = "nazrin", + HasPortrait = true, + HasVoice = true, + Quality = 2 + }, + new + { + ItemCode = "item_0061", + CardName = "keine", + HasPortrait = true, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_0069", + CardName = "toramaru", + HasPortrait = true, + HasVoice = false, + Quality = 2 + }, + new + { + ItemCode = "item_0042", + CardName = "aya", + HasPortrait = true, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_1011", + CardName = "BonusEgg", + HasPortrait = false, + HasVoice = false, + Quality = 1 + }, + new + { + ItemCode = "item_0015", + CardName = "rumia", + HasPortrait = true, + HasVoice = true, + Quality = 2 + }, + new + { + ItemCode = "item_0030", + CardName = "remilia", + HasPortrait = true, + HasVoice = false, + Quality = 4 + }, + new + { + ItemCode = "item_0028", + CardName = "reimu", + HasPortrait = true, + HasVoice = true, + Quality = 4 + }, + new + { + ItemCode = "item_0045", + CardName = "kagerou", + HasPortrait = true, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_0019", + CardName = "marisa", + HasPortrait = true, + HasVoice = true, + Quality = 3 + }, + new + { + ItemCode = "item_0075", + CardName = "clownpiece", + HasPortrait = true, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_0050", + CardName = "nue", + HasPortrait = true, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_0044", + CardName = "momiji", + HasPortrait = true, + HasVoice = true, + Quality = 2 + }, + new + { + ItemCode = "item_0011", + CardName = "letty", + HasPortrait = true, + HasVoice = true, + Quality = 2 + }, + new + { + ItemCode = "item_1003", + CardName = "BonusEgg", + HasPortrait = false, + HasVoice = false, + Quality = 1 + }, + new + { + ItemCode = "item_0022", + CardName = "sakuya", + HasPortrait = true, + HasVoice = true, + Quality = 3 + }, + new + { + ItemCode = "item_0003", + CardName = "minoriko", + HasPortrait = true, + HasVoice = true, + Quality = 2 + }, + new + { + ItemCode = "item_2022", + CardName = "item_2022", + HasPortrait = false, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_2020", + CardName = "item_2020", + HasPortrait = false, + HasVoice = false, + Quality = 4 + }, + new + { + ItemCode = "item_2016", + CardName = "item_2016", + HasPortrait = false, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_2018", + CardName = "item_2018", + HasPortrait = false, + HasVoice = false, + Quality = 2 + }, + new + { + ItemCode = "item_2006", + CardName = "item_2006", + HasPortrait = false, + HasVoice = false, + Quality = 2 + }, + new + { + ItemCode = "item_2019", + CardName = "item_2019", + HasPortrait = false, + HasVoice = false, + Quality = 2 + }, + new + { + ItemCode = "item_2015", + CardName = "item_2015", + HasPortrait = false, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_2014", + CardName = "item_2014", + HasPortrait = false, + HasVoice = false, + Quality = 4 + }, + new + { + ItemCode = "item_0009", + CardName = "cirno", + HasPortrait = true, + HasVoice = false, + Quality = 2 + }, + new + { + ItemCode = "item_0038", + CardName = "chen", + HasPortrait = true, + HasVoice = false, + Quality = 2 + }, + new + { + ItemCode = "item_0074", + CardName = "hecatia", + HasPortrait = true, + HasVoice = false, + Quality = 4 + }, + new + { + ItemCode = "item_0080", + CardName = "shinki", + HasPortrait = true, + HasVoice = false, + Quality = 4 + }, + new + { + ItemCode = "item_0051", + CardName = "byakuren", + HasPortrait = true, + HasVoice = false, + Quality = 4 + }, + new + { + ItemCode = "item_1012", + CardName = "BonusEgg", + HasPortrait = false, + HasVoice = false, + Quality = 2 + }, + new + { + ItemCode = "item_0029", + CardName = "daiyousei", + HasPortrait = true, + HasVoice = true, + Quality = 4 + }, + new + { + ItemCode = "item_0073", + CardName = "junko", + HasPortrait = true, + HasVoice = false, + Quality = 4 + }, + new + { + ItemCode = "item_0063", + CardName = "kisume", + HasPortrait = true, + HasVoice = false, + Quality = 2 + }, + new + { + ItemCode = "item_2007", + CardName = "item_2007", + HasPortrait = false, + HasVoice = false, + Quality = 2 + }, + new + { + ItemCode = "item_0025", + CardName = "youmu", + HasPortrait = true, + HasVoice = true, + Quality = 3 + }, + new + { + ItemCode = "item_0004", + CardName = "mugiyousei", + HasPortrait = false, + HasVoice = false, + Quality = 1 + }, + new + { + ItemCode = "item_0096", + CardName = "seiga", + HasPortrait = true, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_0034", + CardName = "meirin", + HasPortrait = true, + HasVoice = false, + Quality = 2 + }, + new + { + ItemCode = "item_2011", + CardName = "item_2011", + HasPortrait = false, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_2010", + CardName = "item_2010", + HasPortrait = false, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_2008", + CardName = "item_2008", + HasPortrait = false, + HasVoice = false, + Quality = 2 + }, + new + { + ItemCode = "item_0036", + CardName = "yukari", + HasPortrait = true, + HasVoice = false, + Quality = 4 + }, + new + { + ItemCode = "item_0018", + CardName = "mystia", + HasPortrait = true, + HasVoice = true, + Quality = 2 + }, + new + { + ItemCode = "item_2009", + CardName = "item_2009", + HasPortrait = false, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_0046", + CardName = "sanae", + HasPortrait = true, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_2017", + CardName = "item_2017", + HasPortrait = false, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_2005", + CardName = "item_2005", + HasPortrait = false, + HasVoice = false, + Quality = 2 + }, + new + { + ItemCode = "item_0052", + CardName = "miko", + HasPortrait = true, + HasVoice = true, + Quality = 4 + }, + new + { + ItemCode = "item_0023", + CardName = "reisen", + HasPortrait = true, + HasVoice = true, + Quality = 3 + }, + new + { + ItemCode = "item_0049", + CardName = "minamitsu", + HasPortrait = true, + HasVoice = true, + Quality = 3 + }, + new + { + ItemCode = "item_2004", + CardName = "item_2004", + HasPortrait = false, + HasVoice = false, + Quality = 2 + }, + new + { + ItemCode = "item_2003", + CardName = "item_2003", + HasPortrait = false, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_0056", + CardName = "star", + HasPortrait = true, + HasVoice = true, + Quality = 2 + }, + new + { + ItemCode = "item_0006", + CardName = "hourainingyou", + HasPortrait = false, + HasVoice = false, + Quality = 1 + }, + new + { + ItemCode = "item_0057", + CardName = "sunny", + HasPortrait = true, + HasVoice = true, + Quality = 2 + }, + new + { + ItemCode = "item_0095", + CardName = "futo", + HasPortrait = true, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_2001", + CardName = "item_2001", + HasPortrait = false, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_1013", + CardName = "BonusEgg", + HasPortrait = false, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_0097", + CardName = "yoshika", + HasPortrait = true, + HasVoice = false, + Quality = 2 + }, + new + { + ItemCode = "item_0027", + CardName = "utsuho", + HasPortrait = true, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_0068", + CardName = "komachi", + HasPortrait = true, + HasVoice = false, + Quality = 4 + }, + new + { + ItemCode = "item_0047", + CardName = "kanako", + HasPortrait = true, + HasVoice = true, + Quality = 4 + }, + new + { + ItemCode = "item_0058", + CardName = "luna", + HasPortrait = true, + HasVoice = true, + Quality = 2 + }, + new + { + ItemCode = "item_2013", + CardName = "item_2013", + HasPortrait = false, + HasVoice = false, + Quality = 4 + }, + new + { + ItemCode = "item_0024", + CardName = "yuyuko", + HasPortrait = true, + HasVoice = true, + Quality = 3 + }, + new + { + ItemCode = "item_0093", + CardName = "kyouko", + HasPortrait = true, + HasVoice = true, + Quality = 2 + }, + new + { + ItemCode = "item_0005", + CardName = "shanghainingyou", + HasPortrait = false, + HasVoice = false, + Quality = 1 + }, + new + { + ItemCode = "item_1006", + CardName = "BonusEgg", + HasPortrait = false, + HasVoice = false, + Quality = 4 + }, + new + { + ItemCode = "item_0064", + CardName = "shikieiki", + HasPortrait = true, + HasVoice = false, + Quality = 4 + }, + new + { + ItemCode = "item_0092", + CardName = "medicine", + HasPortrait = true, + HasVoice = true, + Quality = 2 + }, + new + { + ItemCode = "item_0017", + CardName = "iku", + HasPortrait = true, + HasVoice = false, + Quality = 2 + }, + new + { + ItemCode = "item_0013", + CardName = "lunasa", + HasPortrait = true, + HasVoice = true, + Quality = 2 + }, + new + { + ItemCode = "item_0091", + CardName = "hina", + HasPortrait = true, + HasVoice = false, + Quality = 2 + }, + new + { + ItemCode = "item_1004", + CardName = "BonusEgg", + HasPortrait = false, + HasVoice = false, + Quality = 2 + }, + new + { + ItemCode = "item_0040", + CardName = "mokou", + HasPortrait = true, + HasVoice = true, + Quality = 3 + }, + new + { + ItemCode = "item_0088", + CardName = "sizuha", + HasPortrait = true, + HasVoice = true, + Quality = 2 + }, + new + { + ItemCode = "item_2012", + CardName = "item_2012", + HasPortrait = false, + HasVoice = false, + Quality = 4 + }, + new + { + ItemCode = "item_0010", + CardName = "kogasa", + HasPortrait = true, + HasVoice = true, + Quality = 2 + }, + new + { + ItemCode = "item_0062", + CardName = "inaba", + HasPortrait = true, + HasVoice = false, + Quality = 2 + }, + new + { + ItemCode = "item_0001", + CardName = "lily", + HasPortrait = true, + HasVoice = false, + Quality = 2 + }, + new + { + ItemCode = "item_1005", + CardName = "BonusEgg", + HasPortrait = false, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_0060", + CardName = "wriggle", + HasPortrait = true, + HasVoice = false, + Quality = 2 + }, + new + { + ItemCode = "item_0059", + CardName = "alice", + HasPortrait = true, + HasVoice = true, + Quality = 3 + }, + new + { + ItemCode = "item_0054", + CardName = "yuugi", + HasPortrait = true, + HasVoice = true, + Quality = 3 + }, + new + { + ItemCode = "item_0032", + CardName = "flandre", + HasPortrait = true, + HasVoice = true, + Quality = 4 + }, + new + { + ItemCode = "item_0033", + CardName = "koakuma", + HasPortrait = true, + HasVoice = true, + Quality = 2 + }, + new + { + ItemCode = "item_0041", + CardName = "kaguya", + HasPortrait = true, + HasVoice = true, + Quality = 3 + }, + new + { + ItemCode = "item_0039", + CardName = "eirin", + HasPortrait = true, + HasVoice = true, + Quality = 4 + }, + new + { + ItemCode = "item_0037", + CardName = "ran", + HasPortrait = true, + HasVoice = true, + Quality = 3 + }, + new + { + ItemCode = "item_0035", + CardName = "yuuka", + HasPortrait = true, + HasVoice = true, + Quality = 4 + }, + new + { + ItemCode = "item_0048", + CardName = "suwako", + HasPortrait = true, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_0016", + CardName = "satori", + HasPortrait = true, + HasVoice = true, + Quality = 2 + }, + new + { + ItemCode = "item_0053", + CardName = "kokoro", + HasPortrait = true, + HasVoice = true, + Quality = 3 + }, + new + { + ItemCode = "item_0008", + CardName = "maidyousei", + HasPortrait = false, + HasVoice = false, + Quality = 1 + }, + new + { + ItemCode = "item_0012", + CardName = "lyrica", + HasPortrait = true, + HasVoice = true, + Quality = 2 + }, + new + { + ItemCode = "item_0031", + CardName = "koishi", + HasPortrait = true, + HasVoice = true, + Quality = 4 + }, + new + { + ItemCode = "item_0094", + CardName = "soga", + HasPortrait = true, + HasVoice = true, + Quality = 3 + }, + new + { + ItemCode = "item_0021", + CardName = "patchouli", + HasPortrait = true, + HasVoice = true, + Quality = 3 + }, + new + { + ItemCode = "item_0020", + CardName = "tenshi", + HasPortrait = true, + HasVoice = false, + Quality = 3 + }, + new + { + ItemCode = "item_1014", + CardName = "BonusEgg", + HasPortrait = false, + HasVoice = false, + Quality = 4 + }); + }); + + modelBuilder.Entity("TOOHUCardAPI.Data.Models.CardLevel", b => + { + b.Property("UserSteamId") + .HasColumnType("bigint"); + + b.Property("CardItemCode") + .HasColumnType("text"); + + b.Property("Level") + .HasColumnType("integer"); + + b.HasKey("UserSteamId", "CardItemCode"); + + b.HasIndex("CardItemCode"); + + b.ToTable("CardLevel"); + }); + + modelBuilder.Entity("TOOHUCardAPI.Data.Models.EncodedCardGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("EncodedString") + .HasColumnType("text"); + + b.Property("GroupKey") + .HasColumnType("text"); + + b.Property("UserSteamId") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("UserSteamId"); + + b.ToTable("EncodedCardGroup"); + }); + + modelBuilder.Entity("TOOHUCardAPI.Data.Models.RankEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("AccountId") + .HasColumnType("bigint"); + + b.Property("Damage") + .HasColumnType("bigint"); + + b.Property("RankType") + .HasColumnType("integer"); + + b.Property("UserSteamId") + .HasColumnType("bigint"); + + b.Property("Username") + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("text"); + + b.Property("Wave") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("UserSteamId"); + + b.ToTable("RankEntries"); + }); + + modelBuilder.Entity("TOOHUCardAPI.Data.Models.RankTowerEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("EncodedData") + .HasColumnType("text"); + + b.Property("RankEntryId") + .HasColumnType("integer"); + + b.Property("TowerKey") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("RankEntryId"); + + b.ToTable("RankTowerEntry"); + }); + + modelBuilder.Entity("TOOHUCardAPI.Data.Models.User", b => + { + b.Property("SteamId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("Ban") + .HasColumnType("boolean"); + + b.Property("EndTime") + .HasColumnType("timestamp without time zone"); + + b.Property("KeySaveDate") + .HasColumnType("timestamp without time zone"); + + b.Property("KeyTotal") + .HasColumnType("integer"); + + b.Property("KeyUseCount") + .HasColumnType("integer"); + + b.Property("LastDailyLoginBonus") + .HasColumnType("timestamp without time zone"); + + b.Property("LastFirstWin") + .HasColumnType("timestamp without time zone"); + + b.Property("MaxTeamWave") + .HasColumnType("integer"); + + b.Property("MaxWave") + .HasColumnType("integer"); + + b.Property("PetEffect") + .HasColumnType("text"); + + b.Property("PetLevel") + .HasColumnType("integer"); + + b.Property("PetModel") + .HasColumnType("text"); + + b.Property("Point") + .HasColumnType("integer"); + + b.Property("PowerMaxTotal") + .HasColumnType("integer"); + + b.Property("Vip") + .HasColumnType("boolean"); + + b.HasKey("SteamId"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("TOOHUCardAPI.Data.Models.CardLevel", b => + { + b.HasOne("TOOHUCardAPI.Data.Models.Card", "Card") + .WithMany() + .HasForeignKey("CardItemCode") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TOOHUCardAPI.Data.Models.User", null) + .WithMany("CardLevels") + .HasForeignKey("UserSteamId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Card"); + }); + + modelBuilder.Entity("TOOHUCardAPI.Data.Models.EncodedCardGroup", b => + { + b.HasOne("TOOHUCardAPI.Data.Models.User", null) + .WithMany("EncodedCardGroups") + .HasForeignKey("UserSteamId"); + }); + + modelBuilder.Entity("TOOHUCardAPI.Data.Models.RankEntry", b => + { + b.HasOne("TOOHUCardAPI.Data.Models.User", "User") + .WithMany() + .HasForeignKey("UserSteamId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TOOHUCardAPI.Data.Models.RankTowerEntry", b => + { + b.HasOne("TOOHUCardAPI.Data.Models.RankEntry", null) + .WithMany("TowersUsed") + .HasForeignKey("RankEntryId"); + }); + + modelBuilder.Entity("TOOHUCardAPI.Data.Models.RankEntry", b => + { + b.Navigation("TowersUsed"); + }); + + modelBuilder.Entity("TOOHUCardAPI.Data.Models.User", b => + { + b.Navigation("CardLevels"); + + b.Navigation("EncodedCardGroups"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/TOOHUCardAPI/Migrations/20211107042237_user id to rankentry, dunno how to grab it for a user.cs b/TOOHUCardAPI/Migrations/20211107042237_user id to rankentry, dunno how to grab it for a user.cs new file mode 100644 index 0000000..cf633b6 --- /dev/null +++ b/TOOHUCardAPI/Migrations/20211107042237_user id to rankentry, dunno how to grab it for a user.cs @@ -0,0 +1,24 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace TOOHUCardAPI.Migrations +{ + public partial class useridtorankentrydunnohowtograbitforauser : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "AccountId", + table: "RankEntries", + type: "bigint", + nullable: false, + defaultValue: 0L); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "AccountId", + table: "RankEntries"); + } + } +} diff --git a/TOOHUCardAPI/Migrations/AppDbContextModelSnapshot.cs b/TOOHUCardAPI/Migrations/AppDbContextModelSnapshot.cs index 15db454..67613ee 100644 --- a/TOOHUCardAPI/Migrations/AppDbContextModelSnapshot.cs +++ b/TOOHUCardAPI/Migrations/AppDbContextModelSnapshot.cs @@ -947,6 +947,9 @@ namespace TOOHUCardAPI.Migrations .HasColumnType("integer") .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + b.Property("AccountId") + .HasColumnType("bigint"); + b.Property("Damage") .HasColumnType("bigint"); diff --git a/TOOHUCardAPI/Startup.cs b/TOOHUCardAPI/Startup.cs index f40e569..1462f6c 100644 --- a/TOOHUCardAPI/Startup.cs +++ b/TOOHUCardAPI/Startup.cs @@ -56,6 +56,7 @@ namespace TOOHUCardAPI services.AddLogging(opt => { opt.ClearProviders(); + opt.AddConfiguration(Configuration.GetSection("Logging")); opt.AddNLog(); }); diff --git a/TOOHUCardAPI/nlog.config b/TOOHUCardAPI/nlog.config index 4bc6850..b548e1a 100644 --- a/TOOHUCardAPI/nlog.config +++ b/TOOHUCardAPI/nlog.config @@ -4,7 +4,7 @@ autoReload="true" internalLogToConsole="true" throwConfigExceptions="true" - internalLogLevel="Trace" > + internalLogLevel="Warn" >