2 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
3f46369022 removed api key from drone yml whoopsie, issued new one and secreted
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2022-02-03 09:07:15 -05:00
4 changed files with 23 additions and 27 deletions

View File

@@ -1,4 +1,5 @@
kind: pipeline kind: pipeline
type: docker
name: default name: default
steps: steps:
@@ -15,12 +16,22 @@ 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
settings: settings:
api_key: 7337ccbb62d765fedea5d8a5c0f35ada9f451363 api_key:
from_secret: gitea-api-key
base_url: https://git.orfl.xyz base_url: https://git.orfl.xyz
files: files:
- TOOHUCardAPI/dist/* - TOOHUCardAPI/dist/*

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