Update ranking handling to store all entries and only return top for each user, update drone config to push to dockerhub
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2022-07-24 19:27:28 -04:00
parent 3f46369022
commit 2d57930701
4 changed files with 21 additions and 26 deletions

View File

@@ -1,4 +1,5 @@
kind: pipeline kind: pipeline
type: docker
name: default name: default
steps: steps:
@@ -15,7 +16,16 @@ steps:
- dotnet publish TOOHUCardAPI.csproj -c Release -o publish - dotnet publish TOOHUCardAPI.csproj -c Release -o publish
- tar -czvf dist/TOOHUCardAPI.tar.gz 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 - name: gitea_release
image: plugins/gitea-release image: plugins/gitea-release

View File

@@ -58,12 +58,12 @@ namespace TOOHUCardAPI.Controllers
}; };
if (parsedRankType == RankType.All || parsedRankType == RankType.Single) 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) 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); return Ok(response);
} }

View File

@@ -32,7 +32,7 @@ namespace TOOHUCardAPI.Data.Repositories
public async Task<RankEntry> GetRankEntry(long steamid, RankType rankType) public async Task<RankEntry> 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<RankEntry> InsertRankEntry(RankEntry entry) public async Task<RankEntry> InsertRankEntry(RankEntry entry)

View File

@@ -57,9 +57,14 @@ namespace TOOHUCardAPI.Data.Services
await _storeService.AwardPoints(steamid, bonus, $"reached rank index {index}"); await _storeService.AwardPoints(steamid, bonus, $"reached rank index {index}");
} }
public async Task<List<RankEntryDTO>> GetRankEntries(RankType rankType) public async Task<List<RankEntryDTO>> GetRankEntries(RankType rankType, bool onlyTop = false)
{ {
var rankEntries = await _rankRepository.GetRankEntries(rankType); 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()); _logger.LogInformation("Got rank entries for {RankType}", rankType.ToString());
return rankEntries.Select(entry => entry.ToRankEntryDTO()).ToList(); return rankEntries.Select(entry => entry.ToRankEntryDTO()).ToList();
} }
@@ -81,27 +86,7 @@ namespace TOOHUCardAPI.Data.Services
TowersUsed = towersUsed, TowersUsed = towersUsed,
UpdateTime = DateTime.Now 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<RankEntry> allEntries = (await _rankRepository.GetRankEntries(toUpload.RankType)).ToList(); List<RankEntry> allEntries = (await _rankRepository.GetRankEntries(toUpload.RankType)).ToList();
await _userService.UpdateUserAccountDetails(entry.SteamId, entry.UserId, entry.Username); await _userService.UpdateUserAccountDetails(entry.SteamId, entry.UserId, entry.Username);
await _userService.UpdateUserMaxWave(entry.SteamId, entry.Wave, toUpload.RankType); await _userService.UpdateUserMaxWave(entry.SteamId, entry.Wave, toUpload.RankType);