1 Commits

Author SHA1 Message Date
2d57930701 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
2022-07-24 19:27:28 -04:00
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);