using OrpaonVision.Core.Results;
using OrpaonVision.Model.Production;
namespace OrpaonVision.Core.Production;
///
/// 运行层级会话仓储接口。
///
public interface IRunLayerSessionRepository
{
///
/// 创建层级会话。
///
/// 层级会话模型。
/// 取消令牌。
/// 创建结果。
Task> CreateAsync(RunLayerSessionModel layerSession, CancellationToken cancellationToken = default);
///
/// 更新层级会话。
///
/// 层级会话模型。
/// 取消令牌。
/// 更新结果。
Task> UpdateAsync(RunLayerSessionModel layerSession, CancellationToken cancellationToken = default);
///
/// 根据ID获取层级会话。
///
/// 层级会话ID。
/// 取消令牌。
/// 层级会话模型。
Task> GetByIdAsync(Guid layerSessionId, CancellationToken cancellationToken = default);
///
/// 根据产品会话ID获取层级会话列表。
///
/// 产品会话ID。
/// 取消令牌。
/// 层级会话列表。
Task>> GetBySessionIdAsync(Guid sessionId, CancellationToken cancellationToken = default);
///
/// 根据状态获取层级会话列表。
///
/// 状态。
/// 取消令牌。
/// 层级会话列表。
Task>> GetByStatusAsync(RunLayerSessionStatus status, CancellationToken cancellationToken = default);
///
/// 分页查询层级会话。
///
/// 页索引。
/// 页大小。
/// 产品类型编码(可选)。
/// 状态(可选)。
/// 开始时间(可选)。
/// 结束时间(可选)。
/// 取消令牌。
/// 分页结果。
Task>> GetPagedAsync(
int pageIndex,
int pageSize,
string? productTypeCode = null,
RunLayerSessionStatus? status = null,
DateTime? startTime = null,
DateTime? endTime = null,
CancellationToken cancellationToken = default);
///
/// 删除层级会话。
///
/// 层级会话ID。
/// 取消令牌。
/// 删除结果。
Task> DeleteAsync(Guid layerSessionId, CancellationToken cancellationToken = default);
///
/// 批量删除层级会话。
///
/// 产品会话ID列表。
/// 取消令牌。
/// 删除结果。
Task> DeleteBySessionIdsAsync(List sessionIds, CancellationToken cancellationToken = default);
}