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

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.prompttemplates.PromptTemplatesDO;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.*;
import org.apache.ibatis.annotations.Param;

/**
 * Prompt 模板表，用于记录每个模板的信息 Mapper
 *
 * @author 华大大模型
 */
@Mapper
public interface PromptTemplatesMapper extends BaseMapperX<PromptTemplatesDO> {

    default PageResult<PromptTemplatesDO> selectPage(PromptTemplatesPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<PromptTemplatesDO>()
                .likeIfPresent(PromptTemplatesDO::getName, reqVO.getName())
                .eqIfPresent(PromptTemplatesDO::getTemplateCategory, reqVO.getTemplateCategory())
                .eqIfPresent(PromptTemplatesDO::getTemplateFramework, reqVO.getTemplateFramework())
                .eqIfPresent(PromptTemplatesDO::getTemplateText, reqVO.getTemplateText())
                .eqIfPresent(PromptTemplatesDO::getVariableIdentifier, reqVO.getVariableIdentifier())
                .eqIfPresent(PromptTemplatesDO::getTemplateType, reqVO.getTemplateType())
                .eqIfPresent(PromptTemplatesDO::getCreator, reqVO.getCreator())
                .betweenIfPresent(PromptTemplatesDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(PromptTemplatesDO::getId));
    }

    /**
     * 根据 标签id 获取 模版
     *
     * @param labelId 标签id
     * @return 模版
     */
    List<PromptTemplatesDO> getPromptTemplateByLabelId (@Param("labelId") Long labelId);

    /**
     * 根据 应用id 获取 模版
     *
     * @param applicationId 应用id
     * @return 模版
     */
    List<PromptTemplatesDO> getPromptTemplateByAppId (@Param("applicationId") Long applicationId);
}
