package com.microservices.zone.resource.mapper;

import com.microservices.zone.resource.domain.ZoneResourceToType;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * 资源与资源类型关联表 数据层
 *
 * @author otto
 */
@Mapper
public interface ZoneResourceToTypeMapper {
    /**
     * 通过资源Id删除资源和资源类型关联
     *
     * @param resourceId 资源Id
     * @return 结果
     */
    public int deleteResourceToTypeByResourceId(Long resourceId);

    /**
     * 通过资源Id和类型Id删除资源和资源类型关联
     *
     * @param resourceId 资源Id
     * @param typeId     类型Id
     * @return 结果
     */
    public int deleteResourceToTypeByResourceIdAndTypeId(@Param("resourceId") Long resourceId, @Param("typeId") Long typeId);

    /**
     * 通过资源类型Id查询资源数量
     *
     * @param typeId 资源类型Id
     * @return 结果
     */
    public int countResourceToTypeByTypeId(Long typeId);

    /**
     * 通过资源类型Id查询资源和资源类型关联列表
     *
     * @param typeId 资源类型Id
     * @return 结果
     */
    public List<ZoneResourceToType> selectResourceToTypeListByTypeId(Long typeId);

    /**
     * 通过资源Id查询资源和资源类型关联列表
     *
     * @param resourceId 资源Id
     * @return 结果
     */
    public List<ZoneResourceToType> selectResourceToTypeListByResourceId(Long resourceId);

    /**
     * 批量新增资源和资源类别关联
     *
     * @param zoneResourceToListList 资源和资源类别关联列表
     * @return 结果
     */
    public int batchResourceToType(List<ZoneResourceToType> zoneResourceToListList);

    /**
     * 新增资源和资源类别关联
     *
     * @param resourceId 资源Id
     * @param typeId     类别Id
     * @return 结果
     */
    public int insertResourceToType(@Param("resourceId") Long resourceId, @Param("typeId") Long typeId);

    /**
     * 批量删除资源和资源类别关联
     *
     * @param typeId      资源类型Id
     * @param resourceIds 需要删除的资源Id
     * @return 结果
     */
    public int deleteResourceToTypes(@Param("typeId") Long typeId, @Param("resourceIds") Long[] resourceIds);

    /**
     * 批量删除资源和资源类别关联
     *
     * @param resourceId 资源Id
     * @param typeIds    资源类型Id列表
     * @return 结果
     */
    public int deleteResourceToTypesByResourceIdAndTypeIds(@Param("resourceId") Long resourceId, @Param("typeIds") Long[] typeIds);
}
