package com.cool.bang.modules.generate.service;

import com.cool.bang.common.base.BaseIService;
import com.cool.bang.common.web.request.PageDomain;
import com.cool.bang.modules.generate.domain.po.TableInfo;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * Database table info service interface
 *
 * @author PeiZhi Guo
 * 2021-3-26 11:31
 */
public interface ITableInfoService extends BaseIService<TableInfo> {

    @Override
    boolean update(TableInfo param);

    /**
     * 分页查询 (查询数据库表信息)
     *
     * Param page
     * Param param
     * Return PageInfo<T>
     */
    PageInfo<TableInfo> dataBaseTablePage(PageDomain page, TableInfo param);

    /**
     * 根据表名查询 (批量)
     *
     * Param tableNames
     * Return list
     */
    List<TableInfo> queryByNames(String[] tableNames);

    /**
     * 根据主键查询表信息
     *
     * Param id
     * Return TableInfo
     */
    TableInfo queryTableById(Long id);

    /**
     * 导入表结构
     *
     * Param List<tableList>
     */
    void importTableStructure(List<TableInfo> list);

    /**
     * 代码生成
     *
     * Param tableName
     * Param url
     * Return StringBuilder
     */
    StringBuilder generateCode(Long tableId);
}
