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
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

View File

@@ -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);
}

View File

@@ -32,7 +32,7 @@ namespace TOOHUCardAPI.Data.Repositories
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)

View File

@@ -57,9 +57,14 @@ namespace TOOHUCardAPI.Data.Services
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);
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);
}
List<RankEntry> 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);