Skip to content

Commit

Permalink
Merge pull request #566 from osu-tournament-rating/hotfix/osutrack-data
Browse files Browse the repository at this point in the history
Use `FirstOrDefault()` instead of `First()`
  • Loading branch information
hburn7 authored Dec 19, 2024
2 parents e16efe5 + f8b94a7 commit dde4970
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions DataWorkerService/Services/Implementations/PlayersService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public class PlayersService(
IPlayersRepository playersRepository,
IOsuClient osuClient,
OtrContext context
) : IPlayersService
) : IPlayersService
{
public async Task SetAllOutdatedOsuApiAsync(PlayerFetchPlatformConfiguration config)
{
Expand Down Expand Up @@ -111,7 +111,8 @@ public async Task UpdateFromOsuApiAsync(Player player)
// Update any ruleset variant data
foreach (UserStatisticsVariant variant in result.Statistics.Variants.Where(v => v.IsRanked))
{
PlayerOsuRulesetData? variantData = player.RulesetData.FirstOrDefault(rd => rd.Ruleset == variant.Ruleset);
PlayerOsuRulesetData? variantData =
player.RulesetData.FirstOrDefault(rd => rd.Ruleset == variant.Ruleset);

if (variantData is null)
{
Expand Down Expand Up @@ -156,19 +157,22 @@ public async Task UpdateOutdatedFromOsuTrackApiAsync(PlayerFetchPlatformConfigur
public async Task UpdateFromOsuTrackApiAsync(Player player)
{
logger.LogDebug(
"Preparing to update Player osu! API data [Id: {Id} | osu! Id: {OsuId} | Last Update: {LastUpdate:u}]",
"Preparing to update osu!track data for player [Id: {Id} | osu! Id: {OsuId} | Last Update: {LastUpdate:u}]",
player.Id,
player.OsuId,
player.OsuLastFetch
);

foreach (Ruleset r in Enum.GetValues<Ruleset>().Where(r => r.IsFetchable()))
{
var result = (await osuClient.GetUserStatsHistoryAsync(player.OsuId, r) ?? Array.Empty<UserStatUpdate>()).ToList();
var result = (await osuClient.GetUserStatsHistoryAsync(player.OsuId, r) ?? [])
.ToList();

if (result.Count == 0)
{
logger.LogTrace("Failed to fetch Player osu!track API data. Result has no elements. [Id: {Id} | Ruleset: {Ruleset}]", player.Id, r);
logger.LogTrace(
"Failed to fetch Player osu!track API data. Result has no elements. [Id: {Id} | Ruleset: {Ruleset}]",
player.Id, r);
}

PlayerOsuRulesetData? rulesetData = player.RulesetData.FirstOrDefault(x => x.Ruleset == r);
Expand All @@ -183,7 +187,7 @@ public async Task UpdateFromOsuTrackApiAsync(Player player)
.Min(pms => pms?.Match.StartTime);

UserStatUpdate? statUpdate = earliestMatchDate is not null
? result.OrderBy(s => Math.Abs((s.Timestamp - earliestMatchDate.Value).Ticks)).First()
? result.OrderBy(s => Math.Abs((s.Timestamp - earliestMatchDate.Value).Ticks)).FirstOrDefault()
: result.FirstOrDefault();

if (statUpdate is null)
Expand Down

0 comments on commit dde4970

Please sign in to comment.