package com.sohu.cache.dao;
import com.sohu.cache.entity.InstanceInfo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* 基于instance的dao操作
* <p/>
* User: lingguo
* Date: 14-6-3
* Time: 下午3:58
*/
public interface InstanceDao {
/**
* 通过type查询实例列表
*
* @param type
* @return
*/
public List<InstanceInfo> getInstListByType(@Param("type") int type);
/**
* 查询appId下的所有instance
*
* @param appId
* @return
*/
public List<InstanceInfo> getInstListByAppId(@Param("appId") long appId);
/**
* 通过host和port查询一个实例信息
*
* @param ip
* @param port
* @return
*/
public InstanceInfo getInstByIpAndPort(@Param("ip") String ip, @Param("port") int port);
/**
* 通过host和port查询一个实例信息
*
* @param ip
* @param port
* @return
*/
public InstanceInfo getAllInstByIpAndPort(@Param("ip") String ip, @Param("port") int port);
/**
* 通过所有实例列表(包括:0:节点异常,1:正常启用)
*
* @return
*/
public List<InstanceInfo> getAllInsts();
/**
* 通过host和port查询一个实例信息
*
* @param ip
* @param port
* @return
*/
public int getCountByIpAndPort(@Param("ip") String ip, @Param("port") int port);
/**
* 保存一个实例
*
* @param instanceInfo
*/
public void saveInstance(InstanceInfo instanceInfo);
/**
* 根据ip和type查询实例数量
*
* @param ip
* @param type
* @return
*/
public int getInstanceTypeCount(@Param("ip") String ip, @Param("type") int type);
public InstanceInfo getInstanceInfoById(@Param("id") long id);
public int getMemoryByHost(String host);
public int update(InstanceInfo instanceInfo);
/**
* 获取一台机器的所有实例
* @param ip
* @return
*/
public List<InstanceInfo> getInstListByIp(@Param("ip") String ip);
/**
* 机器实例数map
* @return
*/
public List<Map<String, Object>> getMachineInstanceCountMap();
}