namespace Dpz.Core.Service.RepositoryService;

/// <summary>
/// 黑名单服务
/// </summary>
public interface IBlockService
{
    /// <summary>
    /// 保存黑名单记录(新增或更新)
    /// </summary>
    /// <param name="block">黑名单记录</param>
    Task SaveBlockAsync(Block block);

    /// <summary>
    /// 增加指定请求方法 + 请求路径的访问次数
    /// </summary>
    /// <param name="method">请求方法(如 GET、POST)</param>
    /// <param name="requestPath">请求地址</param>
    Task IncrementCountAsync(string method, string requestPath);

    /// <summary>
    /// 获取黑名单列表
    /// </summary>
    /// <param name="minAccess">最少访问次数,为 null 时返回全部</param>
    /// <returns>黑名单记录列表</returns>
    Task<List<VmBlock>> GetBlocksAsync(int? minAccess = null);

    /// <summary>
    /// 删除黑名单记录
    /// </summary>
    /// <param name="id">黑名单记录 Id</param>
    /// <param name="cancellationToken">取消令牌</param>
    Task DeleteAsync(string id, CancellationToken cancellationToken = default);
}
评论加载中...