namespace Application.Abstractions.YouTube;

/// <summary>
/// YouTube 채널 정보 캐시 (Redis)
/// Admin에서 채널 View → YouTube API 조회 시 자동 캐시
/// Frontend에서 채널 목록 조회 시 캐시만 읽음 (API 호출 0)
/// </summary>
public interface IYouTubeChannelCache
{
    /// <summary>채널 정보 캐시 저장 (TTL: 24시간)</summary>
    Task SetAsync(YouTubeChannelInfo info);

    /// <summary>채널 정보 캐시 조회 (null = 캐시 없음)</summary>
    Task<YouTubeChannelInfo?> GetAsync(string channelId);

    /// <summary>여러 채널 정보 일괄 조회</summary>
    Task<Dictionary<string, YouTubeChannelInfo>> GetManyAsync(IEnumerable<string> channelIds);

    /// <summary>채널 정보 캐시 삭제</summary>
    Task RemoveAsync(string channelId);
}