From b03929174a6869b84c1f43e5f2215a983eed4a5a Mon Sep 17 00:00:00 2001 From: root Date: Thu, 7 May 2026 11:16:13 +0000 Subject: [PATCH] fix: move PlayerAttendanceStats out of interface scope The record was nested inside ISessionStore, making it ISessionStore.PlayerAttendanceStats. C# does not infer nested types in return signatures; callers and implementors failed with CS0246 / CS0738. Moving it to namespace scope resolves the build. --- src/GmRelay.Web/Services/ISessionStore.cs | 26 +++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/GmRelay.Web/Services/ISessionStore.cs b/src/GmRelay.Web/Services/ISessionStore.cs index 07e6999..2033608 100644 --- a/src/GmRelay.Web/Services/ISessionStore.cs +++ b/src/GmRelay.Web/Services/ISessionStore.cs @@ -2,6 +2,19 @@ using GmRelay.Shared.Domain; namespace GmRelay.Web.Services; +public sealed record PlayerAttendanceStats( + Guid PlayerId, + string DisplayName, + string? TelegramUsername, + long TotalSessions, + long ConfirmedCount, + long DeclinedCount, + long NoResponseCount, + long WaitlistedCount, + long CancellationAffectedCount, + decimal AttendanceRate +); + public interface ISessionStore { Task> GetGroupsForGmAsync(long gmId); @@ -28,17 +41,4 @@ public interface ISessionStore Task> GetSessionParticipantsAsync(Guid sessionId); Task RemovePlayerFromSessionAsync(Guid sessionId, Guid groupId, Guid participantId); Task> GetGroupAttendanceStatsAsync(Guid groupId); - -public sealed record PlayerAttendanceStats( - Guid PlayerId, - string DisplayName, - string? TelegramUsername, - long TotalSessions, - long ConfirmedCount, - long DeclinedCount, - long NoResponseCount, - long WaitlistedCount, - long CancellationAffectedCount, - decimal AttendanceRate -); }