Files
SVSimServer/SVSim.Database/Services/Replay/ReplayHistoryReader.cs
2026-06-10 07:48:18 -04:00

28 lines
1.1 KiB
C#

using Microsoft.EntityFrameworkCore;
namespace SVSim.Database.Services.Replay;
public sealed class ReplayHistoryReader : IReplayHistoryReader
{
private readonly SVSimDbContext _db;
public ReplayHistoryReader(SVSimDbContext db) => _db = db;
public async Task<IReadOnlyList<ReplayHistoryEntry>> GetRecentAsync(long viewerId, int take, CancellationToken ct)
{
return await _db.ViewerBattleHistories
.AsNoTracking()
.Where(h => h.ViewerId == viewerId)
.OrderByDescending(h => h.CreateTime)
.Take(take)
.Select(h => new ReplayHistoryEntry(
h.BattleId, h.BattleType, h.DeckFormat, h.TwoPickType, h.IsLimitTurn,
h.SelfClassId, h.SelfSubClassId, h.SelfCharaId, h.SelfRotationId,
h.OpponentClassId, h.OpponentSubClassId, h.OpponentCharaId,
h.OpponentName, h.OpponentCountryCode,
h.OpponentEmblemId, h.OpponentDegreeId, h.OpponentRotationId,
h.IsWin, h.BattleStartTime, h.CreateTime))
.ToListAsync(ct);
}
}