package com.starry.generator.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.starry.generator.entity.GenTableEntity;
import com.starry.generator.entity.vo.GenTableVo;
import java.util.List;
import java.util.Map;

/**
 * @author admin
 * @since 2022/7/14
 */
public interface GenTableService extends IService<GenTableEntity> {

    /**
     * 查询数据库列表
     *
     * @param genTableEntity
     *            业务信息
     * @return 数据库表集合
     */
    /* List<GenTableEntity> selectDbTableList(GenTableEntity genTableEntity); */

    IPage<GenTableEntity> selectDbTableList(GenTableEntity genTableEntity);

    /**
     * 查询据库列表
     *
     * @param tableNames
     *            表名称组
     * @return 数据库表集合
     */
    List<GenTableEntity> selectDbTableListByNames(String[] tableNames);

    /**
     * 导入表结构
     *
     * @param tableList
     *            导入表列表
     */
    void importGenTable(List<GenTableEntity> tableList);

    /**
     * 查询业务列表
     *
     * @param genTableEntity
     *            业务信息
     * @return 业务集合
     */
    IPage<GenTableEntity> selectGenTableList(GenTableVo genTableEntity);

    /**
     * 预览代码
     *
     * @param tableId
     *            表编号
     * @return 预览数据列表
     */
    Map<String, String> previewCode(Long tableId);

    /**
     * 生成代码（下载方式）
     *
     * @param tableName
     *            表名称
     * @return 数据
     */
    byte[] downloadCode(String tableName);

    /**
     * 批量生成代码（下载方式）
     *
     * @param tableNames
     *            表数组
     * @return 数据
     */
    byte[] downloadCode(String[] tableNames);

    /**
     * 删除业务信息
     *
     * @param tableIds
     *            需要删除的表数据ID
     */
    void deleteGenTableByIds(Long[] tableIds);
}
