GetOrCreateProgressAsync now persists the new row itself and catches DbUpdateException on unique-constraint violations — concurrent /info calls no longer throw 500s. BattlePassService no longer calls SaveChangesAsync after the get-or-create. FormatWireDate uses a named JstOffset constant instead of an inline TimeSpan.FromHours(9). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.0 KiB
2.0 KiB