feat(replay): add BattleContextStore for start->finish handoff

Bridges the start-time -> finish-time gap. /finish carries neither
battle_id nor opponent identity; this store holds both for the finish
handler to compose a ViewerBattleHistory row.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
gamer147
2026-06-10 07:38:37 -04:00
parent 0bb0f46abc
commit 869f9ce13d
4 changed files with 121 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
namespace SVSim.Database.Services.Replay;
/// <summary>
/// Per-viewer battle context captured at start time (do_matching/start) and consumed
/// at finish time. Lives in <see cref="IBattleContextStore"/> for the duration of a
/// single battle. See docs/superpowers/specs/2026-06-10-replay-info-design.md.
/// </summary>
public sealed record BattleContext(
long BattleId,
int BattleType,
int DeckFormat,
int TwoPickType,
int SelfClassId,
int SelfSubClassId,
int SelfCharaId,
string SelfRotationId,
int OpponentViewerId,
string OpponentName,
int OpponentClassId,
int OpponentSubClassId,
int OpponentCharaId,
string OpponentCountryCode,
long OpponentEmblemId,
long OpponentDegreeId,
string OpponentRotationId,
DateTime BattleStartTime);