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.

145 lines
5.1 KiB

2 months ago
using CellularManagement.Domain.Entities;
namespace CellularManagement.Domain.Repositories;
/// <summary>
/// 设备命令仓储接口
/// 负责设备实体的写入操作
/// </summary>
public interface IDeviceCommandRepository : ICommandRepository<Device>
{
/// <summary>
/// 创建设备
/// </summary>
/// <param name="device">设备实体</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>创建后的设备实体</returns>
Task<Device> CreateAsync(Device device, CancellationToken cancellationToken = default);
/// <summary>
/// 批量创建设备
/// </summary>
/// <param name="devices">设备实体集合</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>创建后的设备实体集合</returns>
Task<IEnumerable<Device>> CreateRangeAsync(IEnumerable<Device> devices, CancellationToken cancellationToken = default);
/// <summary>
/// 更新设备
/// </summary>
/// <param name="device">设备实体</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>是否更新成功</returns>
Task<bool> UpdateAsync(Device device, CancellationToken cancellationToken = default);
/// <summary>
/// 批量更新设备
/// </summary>
/// <param name="devices">设备实体集合</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>是否更新成功</returns>
Task<bool> UpdateRangeAsync(IEnumerable<Device> devices, CancellationToken cancellationToken = default);
/// <summary>
/// 删除设备
/// </summary>
/// <param name="deviceId">设备ID</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>是否删除成功</returns>
Task<bool> DeleteAsync(string deviceId, CancellationToken cancellationToken = default);
/// <summary>
/// 批量删除设备
/// </summary>
/// <param name="deviceIds">设备ID集合</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>删除的设备数量</returns>
Task<int> DeleteRangeAsync(IEnumerable<string> deviceIds, CancellationToken cancellationToken = default);
/// <summary>
/// 启用设备
/// </summary>
/// <param name="deviceId">设备ID</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>是否启用成功</returns>
Task<bool> EnableAsync(string deviceId, CancellationToken cancellationToken = default);
/// <summary>
/// 禁用设备
/// </summary>
/// <param name="deviceId">设备ID</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>是否禁用成功</returns>
Task<bool> DisableAsync(string deviceId, CancellationToken cancellationToken = default);
/// <summary>
/// 批量启用设备
/// </summary>
/// <param name="deviceIds">设备ID集合</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>启用的设备数量</returns>
Task<int> EnableRangeAsync(IEnumerable<string> deviceIds, CancellationToken cancellationToken = default);
/// <summary>
/// 批量禁用设备
/// </summary>
/// <param name="deviceIds">设备ID集合</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>禁用的设备数量</returns>
Task<int> DisableRangeAsync(IEnumerable<string> deviceIds, CancellationToken cancellationToken = default);
}
/// <summary>
/// 设备查询仓储接口
/// 负责设备实体的读取操作
/// </summary>
public interface IDeviceQueryRepository
{
/// <summary>
/// 根据序列号获取设备
/// </summary>
Task<Device?> GetBySerialNumberAsync(string serialNumber, CancellationToken cancellationToken = default);
/// <summary>
/// 检查序列号是否存在
/// </summary>
Task<bool> ExistsBySerialNumberAsync(string serialNumber, string? excludeDeviceId = null, CancellationToken cancellationToken = default);
/// <summary>
/// 分页查询设备列表
/// </summary>
Task<(int TotalCount, IEnumerable<Device> Items)> GetPagedAsync(
int pageNumber,
int pageSize,
string? searchTerm = null,
bool? isDisabled = null,
CancellationToken cancellationToken = default);
/// <summary>
/// 获取所有启用的设备
/// </summary>
Task<IEnumerable<Device>> GetEnabledDevicesAsync(CancellationToken cancellationToken = default);
/// <summary>
/// 获取所有禁用的设备
/// </summary>
Task<IEnumerable<Device>> GetDisabledDevicesAsync(CancellationToken cancellationToken = default);
/// <summary>
/// 根据IP地址获取设备
/// </summary>
Task<Device?> GetByIPAddressAsync(string ipAddress, CancellationToken cancellationToken = default);
/// <summary>
/// 根据IP地址获取设备
/// </summary>
Task<Device?> GetByIdAsync(string id, CancellationToken cancellationToken = default);
}
/// <summary>
/// 设备仓储接口
/// 组合命令和查询仓储接口
/// </summary>
public interface IDeviceRepository : IDeviceCommandRepository, IDeviceQueryRepository
{
}