namespace Application.Abstractions.YouTube; /// /// 채널별 라이브 방송 상태 저장소 (Redis 기반) /// PubSub 알림 → videos.list 확인 후 상태 저장 /// 알림 없으면 = 라이브 아님 (할당량 절약) /// public interface IYouTubeLiveStateStore { /// 라이브 상태 저장 (PubSub 알림 처리 시) Task SetLiveAsync(string channelId, YouTubeLiveStreamInfo liveInfo); /// 라이브 종료 시 상태 제거 Task ClearLiveAsync(string channelId); /// 채널의 현재 라이브 상태 조회 (null = 라이브 아님) Task GetLiveAsync(string channelId); /// 현재 라이브 중인 모든 채널 조회 Task> GetAllLiveAsync(); /// /// 기존 라이브 엔트리의 ViewerCount / ViewerCountUpdatedAt 만 부분 갱신. /// 엔트리가 없으면 no-op (PubSub 이벤트보다 poller 가 먼저 돌아도 충돌 방지). /// Task UpdateViewerCountAsync(string channelId, int viewerCount, DateTime updatedAt); }