using WIDESEAWCS_Model.Models;
namespace WIDESEAWCS_ITaskInfoRepository
{
///
/// 机械手状态仓储接口
///
///
/// 定义机械手状态的数据库访问操作。
/// 复杂对象(RobotCrane、CurrentTask、数组等)在调用方使用强类型,
/// 在此接口层面以 Dt_RobotState 实体为操作单位。
///
public interface IRobotStateRepository
{
///
/// 根据 IP 地址获取机械手状态
///
/// 设备 IP 地址
/// 状态实体,不存在则返回 null
Dt_RobotState? GetByIp(string ipAddress);
///
/// 获取或创建机械手状态
///
/// 设备 IP 地址
/// 机器人设备信息,用于初始化新状态
/// 状态实体
Dt_RobotState GetOrCreate(string ipAddress, RobotCraneDevice robotCrane);
///
/// 安全更新机械手状态(乐观锁)
///
/// 设备 IP 地址
/// 新状态实体(RowVersion 会被更新)
/// 期望的行版本号(更新前的版本)
/// 是否更新成功;false 表示版本冲突或记录不存在
bool TryUpdate(string ipAddress, Dt_RobotState newState, byte[] expectedRowVersion);
///
/// 将 Dt_RobotState 实体转换为 RobotSocketState 内存对象
///
/// 数据库实体
/// 内存状态对象
RobotSocketState ToSocketState(Dt_RobotState entity);
///
/// 将 RobotSocketState 内存对象转换为 Dt_RobotState 实体
///
/// 内存状态对象
/// 数据库实体
Dt_RobotState ToEntity(RobotSocketState state);
}
}