using Seq.Api.Model.Events;

namespace Dpz.Core.Service.RepositoryService;

public interface IAppLogEntryService
{
    /// <summary>
    /// 获取日志
    /// </summary>
    /// <param name="filter"></param>
    /// <param name="startAtId"></param>
    /// <param name="afterId"></param>
    /// <param name="pageSize"></param>
    /// <returns></returns>
    Task<ResultSetPart?> GetPageAsync(
        string? filter = null,
        string? startAtId = null,
        string? afterId = null,
        int pageSize = 20
    );

    /// <summary>
    /// 获取最新访问次数
    /// <param name="days">null is today</param>
    /// <param name="cancellationToken">取消令牌</param>
    /// </summary>
    /// <returns></returns>
    Task<List<AccessSummary>> GetLatestAccessNumberAsync(
        int? days = null,
        CancellationToken cancellationToken = default
    );

    /// <summary>
    /// 获取访问日志统计信息
    /// </summary>
    /// <param name="days">统计最近天数</param>
    /// <param name="top">排行数量</param>
    /// <param name="cancellationToken">取消令牌</param>
    /// <returns></returns>
    Task<AccessLogStatistics> GetAccessStatisticsAsync(
        int days = 7,
        int top = 10,
        CancellationToken cancellationToken = default
    );
}
评论加载中...