package com.ozs.mdm.service;

import com.alibaba.fastjson.JSONObject;
import com.ozs.mdm.dto.*;
import com.ozs.mdm.util.R;

import java.util.List;

public interface InterfaceDataSourcesService {


    /**
     * 数据中心接口数据源管理查询列表（分页）
     * @param methodNama
     * @param status
     * @param projectName
     * @param sort
     * @param order
     * @param page
     * @param pageSize
     * @return
     * @throws Exception
     */
    R<List<MdmInfoDataSourceInterfaceDTO>> listInterfaceDataSources(String methodNama, String status,String projectName, String sort, String order,
                                                                 Integer page, Integer pageSize) throws Exception;

    /**
     * 数据中心接口数据源管理单条数据源信息查看
     * @param interfaceId
     * @return
     * @throws Exception
     */
    MdmInfoDataSourceInterfaceVO getInterfaceDataSourcesById(String interfaceId) throws Exception;

    /**
     * 数据中心接口数据源管理单条数据源信息新增
     * @param mdmInfoDataSourceInterfaceVO
     * @throws Exception
     */
    R<String>  addInterfaceDataSources(MdmInfoDataSourceInterfaceVO mdmInfoDataSourceInterfaceVO)throws Exception;

    /**
     * 数据中心接口数据源管理单条数据源信息修改
     * @param mdmInfoDataSourceInterfaceVO
     */
    R<String> updateInterfaceDataSourcesById(MdmInfoDataSourceInterfaceVO mdmInfoDataSourceInterfaceVO) throws Exception;

    /**
     * 数据中心接口数据源管理单条数据源信息测试
     * @param interfaceId
     * @return
     * @throws Exception
     */
    MdmInfoDataSourceInterfaceDTO testInterfaceDataSources(String interfaceId) throws Exception;

    /**
     * 数据中心接口数据源管理单条数据源信息删除
     * @param interfaceId
     */
    void deleteInterfaceDataSources(String interfaceId) throws Exception;


    /**
     *
     * @param mdsid
     * @throws Exception
     */
    void updateInterfaceDataSourcesStatus(MdmInfoDataSourceInterfaceDTO mdsid) throws Exception;

    /**
     * 数据中心接口数据源管理单条数据源信息接口请求方式查询
     * @return
     */
    R<List<MdmDimDataSourceInterfaceMethodDTO>> listRequestMode() throws Exception;

    /**
     *  数据中心接口数据源管理单条数据源信息接口状态查询查询
     * @return
     * @throws Exception
     */
    R<List<MdmDimDataSourceInterfaceStatusDTO>> listInterfaceDataSourcesStatus() throws Exception;

    /**
     * 根据interfaceId查询 接口url
     * @param interfaceId
     * @return
     */
    String getInterfaceUrlById(String interfaceId) throws Exception;


    /**
     *
     * @param interfaceId
     * @return
     * @throws Exception
     */
    String getinterfaceMethodById(String interfaceId) throws Exception;

    /**
     *
     * @return
     */
    R<List<MdmInfoDataSourceInterfaceVO>> listInterfaceName() throws Exception;

    /**
     *
     * @param projectId
     * @return
     */
    R<List<MdmInfoDataSourceInterfaceVO>> getInterfaceByProjectId(String projectId) throws Exception;

    /**
     *
     * @param interfaceId
     * @return
     */
    R<List<MdmInfoDataSourceInterfaceParamOutDTO> >getInterfaceOutParamsByInterfaceId(String interfaceId);

    String getCheckCodeById(String interfaceId) throws Exception;

    List<MdmInfoDataSourceInterfaceParamInDTO> getInterfaceInParamsByInterfaceId(String interfaceId);

    Object getParamOutDateValue(JSONObject body, String nodeSite) throws Exception;

    R<List<MdmTreeDTO>> listProjectAndInterfaceTree() throws Exception;
}
