package cn.iocoder.yudao.module.llm.dal.mysql.dataset;

import java.util.*;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.llm.dal.dataobject.dataset.DatasetDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.llm.controller.admin.dataset.vo.*;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

/**
 * 数据集 Mapper
 *
 * @author 华大大模型
 */
@Mapper
public interface DatasetMapper extends BaseMapperX<DatasetDO> {

    default PageResult<DatasetDO> selectPage(DatasetPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<DatasetDO>()
                .likeIfPresent(DatasetDO::getDatasetName, reqVO.getDatasetName())
                .eqIfPresent(DatasetDO::getDatasetCategory, reqVO.getDatasetCategory())
                .eqIfPresent(DatasetDO::getType, reqVO.getType())
                .eqIfPresent(DatasetDO::getStatus, reqVO.getStatus())
                .eqIfPresent(DatasetDO::getDatasetIntro, reqVO.getDatasetIntro())
                .eqIfPresent(DatasetDO::getDatasetFile, reqVO.getDatasetFile())
                .eqIfPresent(DatasetDO::getDatasetType, reqVO.getDatasetType())
                .eqIfPresent(DatasetDO::getDatasetFileUrl, reqVO.getDatasetFileUrl())
                .betweenIfPresent(DatasetDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(DatasetDO::getId));
    }

    @Update("update llm_dataset set annotate_progress = #{formattedRatio} where id = #{datasetId}")
    void updateProcess(@Param("formattedRatio") Integer formattedRatio, @Param("datasetId") Long datasetId);
}
