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

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