package com.liangjian.dataplatform.member.service;

import com.liangjian.dataplatform.member.entity.vo.datanodes.*;

import java.util.List;

/**
 * @Author: 黄子奇
 * @Date: 2019/8/27 11:19
 *
 * 反向工程的接口，用于反向工程调用获取元数据信息的接口
 */
public interface IMetaReverseService {

    /**
     * 获取数据源下所有的schema
     * @param metaDataSource
     * @return
     * @throws Exception
     */
    List<DataNode> getSchema(MetaDataSource metaDataSource) throws Exception;

    /**
     * 构建获取Schema的表、视图、存储过程的虚节点
     * @param metaSchema
     * @return
     */
    List<DataNode> getChildren(MetaSchema metaSchema);

    /**
     * 获取Schema下的表
     * @param metaTable
     * @return
     */
    List<DataNode> getTables(MetaTable metaTable);

    /**
     * 获取Schema下的视图
     * @param metaView
     * @return
     */
    List<DataNode> getViews(MetaView metaView);

    /**
     * 获取Schema下的存储过程
     * @param metaProcedure
     * @return
     */
    List<DataNode> getProduces(MetaProcedure metaProcedure);

    /**
     * 获取表、视图下的字段信息
     * @param metaDataSource
     * @param params 读取参数，有可能是一个，也有可能是两个
     * @return
     */
    List<DataNode> getColumns(MetaDataSource metaDataSource, String[] params);

}
