using CellularManagement.Domain.Entities.Device;
using CellularManagement.Domain.Repositories.Base;
namespace CellularManagement.Domain.Repositories.Device;
///
/// 蜂窝设备运行时状态仓储接口
/// 组合命令和查询仓储接口
///
public interface ICellularDeviceRuntimeRepository : IBaseRepository
{
///
/// 添加设备运行时状态
///
Task AddRuntimeAsync(CellularDeviceRuntime runtime, CancellationToken cancellationToken = default);
///
/// 更新设备运行时状态
///
void UpdateRuntime(CellularDeviceRuntime runtime);
///
/// 删除设备运行时状态
///
Task DeleteRuntimeAsync(string id, CancellationToken cancellationToken = default);
///
/// 获取所有设备运行时状态
///
Task> GetAllRuntimesAsync(CancellationToken cancellationToken = default);
///
/// 根据ID获取设备运行时状态
///
Task GetRuntimeByIdAsync(string id, CancellationToken cancellationToken = default);
///
/// 根据设备编号获取运行时状态
///
Task GetRuntimeByDeviceCodeAsync(string deviceCode, CancellationToken cancellationToken = default);
///
/// 根据设备编号获取运行时状态(包含设备信息)
///
Task GetRuntimeByDeviceCodeWithDeviceAsync(string deviceCode, CancellationToken cancellationToken = default);
///
/// 根据运行编码获取运行时状态
///
Task GetRuntimeByRuntimeCodeAsync(string runtimeCode, CancellationToken cancellationToken = default);
///
/// 获取正在运行的设备运行时状态
///
Task> GetRunningRuntimesAsync(CancellationToken cancellationToken = default);
///
/// 根据运行时状态获取设备运行时状态
///
Task> GetRuntimesByStatusAsync(DeviceRuntimeStatus runtimeStatus, CancellationToken cancellationToken = default);
///
/// 根据网络栈配置编号获取运行时状态
///
Task> GetRuntimesByNetworkStackCodeAsync(string networkStackCode, CancellationToken cancellationToken = default);
///
/// 搜索设备运行时状态
///
Task> SearchRuntimesAsync(
string? keyword,
CancellationToken cancellationToken = default);
///
/// 搜索设备运行时状态(分页)
///
Task<(int TotalCount, IList Items)> SearchRuntimesAsync(
string? keyword,
int pageNumber,
int pageSize,
CancellationToken cancellationToken = default);
///
/// 检查设备运行时状态是否存在
///
Task ExistsAsync(string id, CancellationToken cancellationToken = default);
///
/// 检查设备编号是否有运行时状态
///
Task DeviceCodeExistsAsync(string deviceCode, CancellationToken cancellationToken = default);
///
/// 检查运行编码是否存在
///
Task RuntimeCodeExistsAsync(string runtimeCode, CancellationToken cancellationToken = default);
///
/// 获取运行时状态总数
///
Task GetRuntimeCountAsync(CancellationToken cancellationToken = default);
///
/// 根据设备编号删除运行时状态
///
Task DeleteRuntimeByDeviceCodeAsync(string deviceCode, CancellationToken cancellationToken = default);
}