using System.Collections.Generic;
using System.Threading.Tasks;
using MDL.Models;
namespace DAL.Interfaces
{
///
/// 面单PDF缓存的数据访问接口
///
public interface ILabelPdfCacheRepository
{
///
/// 根据中性面单单号获取缓存记录
///
/// 中性面单单号
/// 缓存记录实体
Task GetByWaybillNumberAsync(string waybillNumber);
///
/// 创建缓存记录
///
/// 缓存实体
/// 创建的记录ID
Task CreateAsync(LabelPdfCache entity);
///
/// 更新缓存记录
///
/// 缓存实体
/// 更新是否成功
Task UpdateAsync(LabelPdfCache entity);
///
/// 标记缓存为失效状态
///
/// 中性面单单号
/// 操作是否成功
Task InvalidateCacheAsync(string waybillNumber);
///
/// 获取待处理的缓存任务列表
///
/// 最大重试次数
/// 最大返回数量
/// 待处理的缓存任务列表
Task> GetPendingTasksAsync(int maxRetryCount, int limit);
///
/// 获取订单表中新的有标签订单(缓存表中不存在的)
///
/// 最大返回数量
/// 新订单的面单号列表
Task> GetNewOrdersWithLabelsAsync(int limit);
///
/// 获取需要重新处理的失效缓存列表
///
/// 最大返回数量
/// 失效的缓存记录列表
Task> GetInvalidCachesAsync(int limit);
///
/// 异步更新条码信息
///
/// 中性面单单号
/// 条码号
/// 条码类型
/// 识别置信度
/// 更新是否成功
Task UpdateBarcodeInfoAsync(string waybillNumber, string barcodeNumber, byte barcodeType, int confidence);
}
}