3 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
593293a69a probably didnt need the volume
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2022-02-03 01:26:16 -05:00
4 changed files with 28 additions and 40 deletions

View File

@@ -1,36 +1,39 @@
kind: pipeline kind: pipeline
type: docker
name: default name: default
steps: steps:
- name: build - name: build
image: mcr.microsoft.com/dotnet/sdk:5.0 image: mcr.microsoft.com/dotnet/sdk:5.0
volumes:
- name: dist
path: /dist
commands: commands:
- cd TOOHUCardAPI - cd TOOHUCardAPI
- dotnet restore TOOHUCardAPI.csproj - dotnet restore TOOHUCardAPI.csproj
- mkdir build - mkdir build
- mkdir publish - mkdir publish
- mkdir dist
- dotnet build TOOHUCardAPI.csproj -c Release -o build - dotnet build TOOHUCardAPI.csproj -c Release -o build
- 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
volumes:
- name: dist
path: /dist
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:
- /dist/* - TOOHUCardAPI/dist/*
when: when:
event: tag event: tag
volumes:
- name: dist
temp: {}

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