package com.njcn.gather.script.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.gather.script.pojo.param.PqScriptParam;
import com.njcn.gather.script.pojo.po.PqScript;

import java.util.List;
import java.util.Map;

/**
 * @author caozehui
 * @date 2024-11-18
 */
public interface IPqScriptService extends IService<PqScript> {

    /**
     * 分页查询检测脚本
     *
     * @param param 查询参数
     * @return
     */
    Page<PqScript> listPqScript(PqScriptParam.QueryParam param);

    /**
     * 根据检测脚本id获取检测脚本
     *
     * @param id 检测脚本id
     * @return 检测脚本
     */
    PqScript getPqScriptById(String id);

    /**
     * 新增检测脚本
     *
     * @param param 检测脚本
     * @return 成功返回ScriptId, 失败返回null
     */
    String addPqScript(PqScriptParam param);

    /**
     * 删除检测脚本
     *
     * @param param 检测脚本id
     * @return 成功返回true, 失败返回false
     */
    boolean updatePqScript(PqScriptParam.UpdateParam param);

    /**
     * 批量删除检测脚本
     *
     * @param ids 检测脚本id列表
     * @return 成功返回true, 失败返回false
     */
    boolean deletePqScript(List<String> ids);

    /**
     * 将脚本升级为模板
     *
     * @param id 脚本id
     * @return 成功返回true, 失败返回false
     */
    boolean upgradeToTemplate(String id);

    /**
     * 获取指定模式下所有检测脚本
     *
     * @param patternId 模式id
     * @return 检测脚本列表
     */
    List<PqScript> listAllPqScript(String patternId);

    /**
     * 根据脚本名称查询脚本
     *
     * @param name 脚本名称
     * @return 脚本列表
     */
    PqScript getPqScriptByName(String name);
}
