From 2d579307018026f558a3031bda2e8ba3a314ed93 Mon Sep 17 00:00:00 2001 From: littlefoot Date: Sun, 24 Jul 2022 19:27:28 -0400 Subject: [PATCH] Update ranking handling to store all entries and only return top for each user, update drone config to push to dockerhub --- .drone.yml | 12 +++++++- .../Controllers/RankDataController.cs | 4 +-- .../Data/Repositories/RankRepository.cs | 2 +- TOOHUCardAPI/Data/Services/RankService.cs | 29 +++++-------------- 4 files changed, 21 insertions(+), 26 deletions(-) diff --git a/.drone.yml b/.drone.yml index ab76d44..3b03779 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,4 +1,5 @@ kind: pipeline +type: docker name: default steps: @@ -15,7 +16,16 @@ steps: - dotnet publish TOOHUCardAPI.csproj -c Release -o publish - tar -czvf dist/TOOHUCardAPI.tar.gz publish/* - +- name: docker_release_api + image: plugins/docker + settings: + repo: littlefoot123/2huapi + tags: latest + username: + from_secret: docker-username + password: + from_secret: docker-password + dockerfile: TOOHUCardAPI/Dockerfile - name: gitea_release image: plugins/gitea-release diff --git a/TOOHUCardAPI/Controllers/RankDataController.cs b/TOOHUCardAPI/Controllers/RankDataController.cs index 9e51482..266cdfc 100644 --- a/TOOHUCardAPI/Controllers/RankDataController.cs +++ b/TOOHUCardAPI/Controllers/RankDataController.cs @@ -58,12 +58,12 @@ namespace TOOHUCardAPI.Controllers }; if (parsedRankType == RankType.All || parsedRankType == RankType.Single) { - response.Body.FFAEntries = await _rankService.GetRankEntries(RankType.Single); + response.Body.FFAEntries = await _rankService.GetRankEntries(RankType.Single, true); } if (parsedRankType == RankType.Team || parsedRankType == RankType.All) { - response.Body.TeamEntries = await _rankService.GetRankEntries(RankType.Team); + response.Body.TeamEntries = await _rankService.GetRankEntries(RankType.Team, true); } return Ok(response); } diff --git a/TOOHUCardAPI/Data/Repositories/RankRepository.cs b/TOOHUCardAPI/Data/Repositories/RankRepository.cs index c883347..ca56489 100644 --- a/TOOHUCardAPI/Data/Repositories/RankRepository.cs +++ b/TOOHUCardAPI/Data/Repositories/RankRepository.cs @@ -32,7 +32,7 @@ namespace TOOHUCardAPI.Data.Repositories public async Task GetRankEntry(long steamid, RankType rankType) { - return await AllIncluded().Where(i => i.User.SteamId == steamid && i.RankType == rankType).FirstOrDefaultAsync(); + return await AllIncluded().Where(i => i.User.SteamId == steamid && i.RankType == rankType).OrderByDescending(i => i.Wave).FirstOrDefaultAsync(); } public async Task InsertRankEntry(RankEntry entry) diff --git a/TOOHUCardAPI/Data/Services/RankService.cs b/TOOHUCardAPI/Data/Services/RankService.cs index 1fa1027..d382a5f 100644 --- a/TOOHUCardAPI/Data/Services/RankService.cs +++ b/TOOHUCardAPI/Data/Services/RankService.cs @@ -57,9 +57,14 @@ namespace TOOHUCardAPI.Data.Services await _storeService.AwardPoints(steamid, bonus, $"reached rank index {index}"); } - public async Task> GetRankEntries(RankType rankType) + public async Task> GetRankEntries(RankType rankType, bool onlyTop = false) { var rankEntries = await _rankRepository.GetRankEntries(rankType); + if (onlyTop) + { + rankEntries = rankEntries.GroupBy(i => i.User) + .Select(i => i.OrderByDescending(e => e.Wave).FirstOrDefault()); + } _logger.LogInformation("Got rank entries for {RankType}", rankType.ToString()); return rankEntries.Select(entry => entry.ToRankEntryDTO()).ToList(); } @@ -81,27 +86,7 @@ namespace TOOHUCardAPI.Data.Services TowersUsed = towersUsed, UpdateTime = DateTime.Now }; - var previousEntry = await _rankRepository.GetRankEntry(toUpload.User.SteamId, toUpload.RankType); - bool shouldPushNew = true; - if (previousEntry != null) - { - if (previousEntry.Wave < toUpload.Wave) - { - await ResetRank(toUpload.User.SteamId, toUpload.RankType); - } - else if (previousEntry.Wave == toUpload.Wave && previousEntry.Damage < toUpload.Damage) - { - await ResetRank(toUpload.User.SteamId, toUpload.RankType); - } - else - { - shouldPushNew = false; - } - } - if (shouldPushNew) - { - toUpload = await _rankRepository.InsertRankEntry(toUpload); - } + toUpload = await _rankRepository.InsertRankEntry(toUpload); List allEntries = (await _rankRepository.GetRankEntries(toUpload.RankType)).ToList(); await _userService.UpdateUserAccountDetails(entry.SteamId, entry.UserId, entry.Username); await _userService.UpdateUserMaxWave(entry.SteamId, entry.Wave, toUpload.RankType);