package cn.fateverse.query.service;

import cn.fateverse.common.core.result.page.TableDataInfo;
import cn.fateverse.query.entity.dto.MockParam;
import cn.fateverse.query.entity.dto.PortalDto;
import cn.fateverse.query.entity.query.PortalQuery;
import cn.fateverse.query.entity.vo.PortalIdWrapper;
import cn.fateverse.query.entity.vo.PortalVo;
import cn.fateverse.query.entity.vo.SimplePortalVo;

/**
 * @author Clay
 * @date 2024/4/15 10:26
 */
public interface PortalService {

    /**
     * 根据id查询
     *
     * @param portalId id
     * @return 结果
     */
    PortalVo searchById(Long portalId);

    /**
     * 根据id查询详情
     *
     * @param portalId id
     * @return 结果
     */
    PortalVo searchDetailById(Long portalId);

    /**
     * 查询接口列表
     *
     * @param query 查询条件
     * @return 查询表格结果
     */
    TableDataInfo<SimplePortalVo> searchList(PortalQuery query);

    /**
     * 模拟执行
     *
     * @param mockParam 执行数据
     * @return 执行结果
     */
    Object mockExecute(MockParam mockParam);


    /**
     * 获取到模拟数据
     *
     * @param mockParam
     * @return
     */
    Object mockData(MockParam mockParam);

    /**
     * 保存接口信息
     *
     * @param portalDto 接口信息
     * @return 保存完成后接口id和数据适配器id
     */
    PortalIdWrapper save(PortalDto portalDto);

    /**
     * 修改接口信息
     *
     * @param portalDto 接口信息
     * @return 修改完成后接口id和数据适配器id
     */
    PortalIdWrapper edit(PortalDto portalDto);

    /**
     * 取消发布
     *
     * @param portalId 接口id
     */
    void cancel(Long portalId);

    /**
     * 删除接口信息
     *
     * @param portalId 接口id
     */
    void delete(Long portalId);

}
