package com.vetti.hotake.mapper;

import com.vetti.hotake.domain.HotakeSecurityTrustedDevices;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 可信设备Mapper接口
 *
 * @author vetti
 * @date 2026-02-02
 */
public interface HotakeSecurityTrustedDevicesMapper
{
    /**
     * 查询可信设备
     *
     * @param id 可信设备主键
     * @return 可信设备
     */
    public HotakeSecurityTrustedDevices selectHotakeSecurityTrustedDevicesById(Long id);

    /**
     * 根据用户ID和设备ID查询可信设备
     *
     * @param userId 用户ID
     * @param deviceId 设备ID
     * @return 可信设备
     */
    public HotakeSecurityTrustedDevices selectByUserIdAndDeviceId(@Param("userId") Long userId, @Param("deviceId") String deviceId);

    /**
     * 查询可信设备列表
     *
     * @param hotakeSecurityTrustedDevices 可信设备
     * @return 可信设备集合
     */
    public List<HotakeSecurityTrustedDevices> selectHotakeSecurityTrustedDevicesList(HotakeSecurityTrustedDevices hotakeSecurityTrustedDevices);

    /**
     * 查询用户的可信设备列表
     *
     * @param userId 用户ID
     * @return 可信设备集合
     */
    public List<HotakeSecurityTrustedDevices> selectTrustedDevicesByUserId(Long userId);

    /**
     * 新增可信设备
     *
     * @param hotakeSecurityTrustedDevices 可信设备
     * @return 结果
     */
    public int insertHotakeSecurityTrustedDevices(HotakeSecurityTrustedDevices hotakeSecurityTrustedDevices);

    /**
     * 修改可信设备
     *
     * @param hotakeSecurityTrustedDevices 可信设备
     * @return 结果
     */
    public int updateHotakeSecurityTrustedDevices(HotakeSecurityTrustedDevices hotakeSecurityTrustedDevices);

    /**
     * 删除可信设备
     *
     * @param id 可信设备主键
     * @return 结果
     */
    public int deleteHotakeSecurityTrustedDevicesById(Long id);

    /**
     * 批量删除可信设备
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteHotakeSecurityTrustedDevicesByIds(Long[] ids);

    /**
     * 移除用户的可信设备
     *
     * @param id 设备记录ID
     * @param userId 用户ID
     * @return 结果
     */
    public int removeTrustedDevice(@Param("id") Long id, @Param("userId") Long userId);

    /**
     * 清理过期的可信设备
     *
     * @return 结果
     */
    public int cleanExpiredTrustedDevices();
}
