using Dpz.Core.Public.ViewModel.Response.Steam;

namespace Dpz.Core.Service.RepositoryService;

/// <summary>
/// Steam 游戏查询,游戏库同步由 Dpz.Core.Service.Mediator 的 Steam 模块负责
/// </summary>
public interface ISteamGameService
{
    /// <summary>
    /// 获取游戏库
    /// </summary>
    /// <param name="cancellationToken">传播通知操作应取消的通知令牌</param>
    /// <returns>游戏库,包含每个游戏的完整成就</returns>
    Task<List<SteamGameResponse>> GetGamesAsync(CancellationToken cancellationToken = default);

    /// <summary>
    /// 获取游戏库摘要,只包含列表展示所需的字段
    /// </summary>
    /// <param name="cancellationToken">传播通知操作应取消的通知令牌</param>
    /// <returns>游戏库摘要,包含成就数量与最近解锁的成就</returns>
    Task<List<SteamGameSummaryResponse>> GetGameSummariesAsync(
        CancellationToken cancellationToken = default
    );

    /// <summary>
    /// 获取游戏详情
    /// </summary>
    /// <param name="id">游戏ID</param>
    /// <param name="cancellationToken">传播通知操作应取消的通知令牌</param>
    /// <returns>游戏详情,不存在返回null</returns>
    Task<SteamGameResponse?> GetGameAsync(int id, CancellationToken cancellationToken = default);

    /// <summary>
    /// 清除游戏缓存
    /// </summary>
    /// <param name="cancellationToken">传播通知操作应取消的通知令牌</param>
    Task ClearCacheAsync(CancellationToken cancellationToken = default);
}
评论加载中...