package xyz.wbsite.module.conf.mpr;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

import xyz.wbsite.module.conf.ent.Mapping;
import xyz.wbsite.module.conf.req.MappingCreateRequest;
import xyz.wbsite.module.conf.req.MappingDeleteRequest;
import xyz.wbsite.module.conf.req.MappingFindRequest;
import xyz.wbsite.module.conf.req.MappingGetRequest;
import xyz.wbsite.module.conf.req.MappingUpdateRequest;
import xyz.wbsite.frame.auth.Token;

/**
 * MAPPING - 映射
 *
 * @author wangbing
 * @date 2020-03-18
 */
@Mapper
public interface MappingMapper {

    /**
     * 插入
     *
     * @param request 请求对象
     * @param token   令牌
     * @return 返回数量
     */
    long insert(@Param("request") Mapping request, @Param("token") Token token);

    /**
    * 批量插入
    *
    * @param request 请求对象
    * @param token   令牌
    * @return 返回数量
    */
    long insertBatch(@Param("list") List<Mapping> request, @Param("token") Token token);

    /**
     * 逻辑删除
     *
     * @param request 请求对象
     * @param token   令牌
     * @return 返回数量
     */
    long delete(@Param("request") MappingDeleteRequest request, @Param("token") Token token);

    /**
     * 更新
     *
     * @param request 请求对象
     * @param token   令牌
     * @return 返回数量
     */
    long update(@Param("request") MappingUpdateRequest request, @Param("token") Token token);

    /**
     * 查询
     *
     * @param request 请求对象
     * @param token   令牌
     * @return 返回对象
     */
    List<Mapping> find(@Param("request") MappingFindRequest request, @Param("token") Token token);

    /**
     * 获得对象
     *
     * @param request 请求对象
     * @param token   令牌
     * @return 返回对象
     */
    Mapping get(@Param("request") MappingGetRequest request, @Param("token") Token token);
}
