You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
3.4 KiB

using CellularManagement.Domain.Entities.Logging;
using CellularManagement.Domain.Repositories.Base;
using X1.Domain.Entities.Logging;
namespace CellularManagement.Domain.Repositories.Logging;
/// <summary>
/// 协议日志仓储接口
/// </summary>
public interface IProtocolLogRepository : IBaseRepository<ProtocolLog>
{
/// <summary>
/// 根据设备代码获取协议日志
/// </summary>
/// <param name="deviceCode">设备代码</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>协议日志列表</returns>
Task<IEnumerable<ProtocolLog>> GetByDeviceCodeAsync(string deviceCode, CancellationToken cancellationToken = default);
/// <summary>
/// 根据运行时代码获取协议日志
/// </summary>
/// <param name="runtimeCode">运行时代码</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>协议日志列表</returns>
Task<IEnumerable<ProtocolLog>> GetByRuntimeCodeAsync(string runtimeCode, CancellationToken cancellationToken = default);
/// <summary>
/// 根据设备代码和运行时代码获取协议日志
/// </summary>
/// <param name="deviceCode">设备代码</param>
/// <param name="runtimeCode">运行时代码</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>协议日志列表</returns>
Task<IEnumerable<ProtocolLog>> GetByDeviceAndRuntimeCodeAsync(string deviceCode, string runtimeCode, CancellationToken cancellationToken = default);
/// <summary>
/// 根据时间范围获取协议日志
/// </summary>
/// <param name="startTimestamp">开始时间戳</param>
/// <param name="endTimestamp">结束时间戳</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>协议日志列表</returns>
Task<IEnumerable<ProtocolLog>> GetByTimeRangeAsync(long startTimestamp, long endTimestamp, CancellationToken cancellationToken = default);
/// <summary>
/// 根据协议层类型获取协议日志
/// </summary>
/// <param name="layerType">协议层类型</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>协议日志列表</returns>
Task<IEnumerable<ProtocolLog>> GetByLayerTypeAsync(ProtocolLayer layerType, CancellationToken cancellationToken = default);
/// <summary>
/// 根据设备代码和运行时状态获取协议日志(高性能查询)
/// </summary>
/// <param name="deviceCode">设备代码</param>
/// <param name="runtimeCodes">运行时代码集合</param>
/// <param name="startTimestamp">开始时间戳</param>
/// <param name="endTimestamp">结束时间戳</param>
/// <param name="layerType">协议层类型</param>
/// <param name="runtimeStatuses">运行时状态过滤(可选,支持多个状态)</param>
/// <param name="orderByDescending">是否按时间戳降序排序</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>协议日志列表</returns>
Task<IEnumerable<ProtocolLog>> GetByDeviceWithFiltersAsync(
string? deviceCode,
IEnumerable<string>? runtimeCodes = null,
long? startTimestamp = null,
long? endTimestamp = null,
string? layerType = null,
IEnumerable<int>? runtimeStatuses = null,
bool orderByDescending = true,
CancellationToken cancellationToken = default);
}