package cn.iocoder.yudao.module.llm.service.prompttemplatesbackup;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplatesbackup.vo.*;
import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplatesbackup.PromptTemplatesBackupDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;

/**
 * Prompt模板备份 Service 接口
 *
 * @author 华大大模型
 */
public interface PromptTemplatesBackupService {

    /**
     * 创建Prompt模板备份
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createPromptTemplatesBackup(@Valid PromptTemplatesBackupSaveReqVO createReqVO);

    /**
     * 更新Prompt模板备份
     *
     * @param updateReqVO 更新信息
     */
    void updatePromptTemplatesBackup(@Valid PromptTemplatesBackupSaveReqVO updateReqVO);

    /**
     * 删除Prompt模板备份
     *
     * @param id 编号
     */
    void deletePromptTemplatesBackup(Long id);

    /**
     * 获得Prompt模板备份
     *
     * @param id 编号
     * @return Prompt模板备份
     */
    PromptTemplatesBackupRespVO getPromptTemplatesBackup(Long id);

    /**
     * 获得Prompt模板备份分页
     *
     * @param pageReqVO 分页查询
     * @return Prompt模板备份分页
     */
    PageResult<PromptTemplatesBackupRespVO> getPromptTemplatesBackupPage(PromptTemplatesBackupPageReqVO pageReqVO);

    void isBackup(Long srcId);

    PromptTemplatesBackupDO getPromptTemplatesBackupBySrcId(Long srcId);

    void unbackupPromptTemplates(PromptTemplatesBackupSaveReqVO updateReqVO);

    /**
     * 根据 标签id 获取 模版备份
     *
     * @param labelId 标签id
     * @return 模版备份
     */
    Map<Long, String> getPromptTemplateBackByLabelId (Long labelId);

    /**
     * 根据 应用id 获取 模版备份
     *
     * @param applicationId 应用id
     * @return 模版备份
     */
    Map<Long, String> getPromptTemplateBackByAppId (Long applicationId);
}
