package com.kexue.skills.mapper;

import com.kexue.skills.entity.ModelPrice;
import com.kexue.skills.entity.dto.ModelPriceDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * (ModelPrice)表数据库访问层
 * 大模型Token价格表
 *
 * @author 王志维
 * @since 2026-03-26 10:15:00
 */
@Mapper
public interface ModelPriceMapper {
    /**
     * 分页查询
     *
     * @param queryDto 筛选条件
     * @return 查询结果
     */
    List<ModelPrice> getPageList(ModelPriceDto queryDto);

    /**
     * 查询列表
     *
     * @param queryDto 筛选条件
     * @return 查询结果
     */
    List<ModelPrice> getList(ModelPriceDto queryDto);

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    ModelPrice queryById(Long id);

    /**
     * 通过模型名称查询数据
     *
     * @param modelName 模型名称
     * @return 实例对象列表
     */
    List<ModelPrice> queryByModelName(String modelName);

    /**
     * 根据模型名称、输出模式和token数量查询价格规则
     *
     * @param modelName 模型名称
     * @param outputMode 输出模式
     * @param tokens token数量
     * @return 实例对象
     */
    ModelPrice queryByModelNameAndOutputModeAndTokens(@Param("modelName") String modelName, @Param("outputMode") String outputMode, @Param("tokens") Long tokens);

    /**
     * 新增数据
     *
     * @param modelPrice 实例对象
     * @return 影响行数
     */
    int insert(ModelPrice modelPrice);

    /**
     * 更新数据
     *
     * @param modelPrice 实例对象
     * @return 影响行数
     */
    int update(ModelPrice modelPrice);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 影响行数
     */
    int deleteById(Long id);

}
