All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.schoolwow.quickdao.module.database.ddl.kit.DatabaseDefinition Maven / Gradle / Ivy

There is a newer version: 5.3.1
Show newest version
package cn.schoolwow.quickdao.module.database.ddl.kit;

import cn.schoolwow.quickdao.domain.database.ddl.IndexField;
import cn.schoolwow.quickdao.domain.entity.Entity;
import cn.schoolwow.quickdao.domain.entity.Property;
import cn.schoolwow.quickdao.domain.entity.PropertyOption;

import java.util.List;

/**
 * 数据定义语言
 */
public interface DatabaseDefinition {
    /**
     * 表是否存在
     *
     * @param clazz 实体类
     */
    boolean hasTable(Class clazz);

    /**
     * 表是否存在
     *
     * @param tableName 表名
     */
    boolean hasTable(String tableName);

    /**
     * 列是否存在
     *
     * @param clazz 实体类
     * @param columnName 列名
     */
    boolean hasColumn(Class clazz, String columnName);

    /**
     * 列是否存在
     *
     * @param tableName  表名
     * @param columnName 列名
     */
    boolean hasColumn(String tableName, String columnName);

    /**
     * 获取数据库所有表名
     */
    List getTableNameList();

    /**
     * 获取数据库表列表
     */
    List getDatabaseEntityList();

    /**
     * 获取数据库表列表
     *
     * @param tableName 表名
     */
    Entity getDatabaseEntity(String tableName);

    /**
     * 获取表字段列表
     *
     * @param clazz 实体类
     */
    List getPropertyList(Class clazz);

    /**
     * 获取表字段列表
     *
     * @param tableName 表名
     */
    List getPropertyList(String tableName);

    /**
     * 获取表字段
     *
     * @param clazz      实体类
     * @param columnName 字段名称
     */
    Property getProperty(Class clazz, String columnName);

    /**
     * 获取表指定字段
     *
     * @param tableName  表名
     * @param columnName 字段名称
     */
    Property getProperty(String tableName, String columnName);

    /**
     * 建表
     */
    void create(Class clazz);

    /**
     * 建表
     */
    void create(Entity entity);

    /**
     * 重命名表
     */
    void renameTable(String oldTableName, String newTableName);

    /**
     * 删表
     */
    void dropTable(Class clazz);

    /**
     * 删表
     */
    void dropTable(String tableName);

    /**
     * 重建表
     */
    void rebuild(Class clazz);

    /**
     * 重建表
     */
    void rebuild(String tableName);

    /**
     * 新增列
     *
     * @param tableName 表名
     * @param propertyOption  字段属性
     * @return 新增列
     */
    Property createColumn(String tableName, PropertyOption propertyOption);

    /**
     * 重命名列
     * @param tableName 表名
     * @param oldTableColumn 旧表名称
     * @param newTableColumn 新表名称
     */
    void renameTableColumn(String tableName, String oldTableColumn, String newTableColumn);

    /**
     * 修改列
     * @param tableName 表名
     * @param propertyOption 列信息
     */
    void alterColumn(String tableName, PropertyOption propertyOption);

    /**
     * 删除列
     *
     * @param tableName  表名
     * @param columnName 列名
     */
    Property dropColumn(String tableName, String columnName);

    /**
     * 索引是否存在
     *
     * @param tableName 表名
     * @param indexName 索引名称
     */
    boolean hasIndex(String tableName, String indexName);

    /**
     * 约束否存在
     *
     * @param tableName      表名
     * @param constraintName 约束名称
     */
    boolean hasConstraint(String tableName, String constraintName);

    /**
     * 获取索引列表
     *
     * @param tableName 表名
     */
    List getIndexFieldList(String tableName);

    /**
     * 获取指定索引
     *
     * @param tableName 表名
     */
    IndexField getIndexField(String tableName, String indexName);

    /**
     * 新增索引
     *
     * @param indexField 索引信息
     */
    void createIndex(IndexField indexField);

    /**
     * 删除索引
     *
     * @param tableName 表名
     * @param indexName 索引名称
     */
    void dropIndex(String tableName, String indexName);

    /**
     * 创建外键约束
     *
     * @param tableName 表名
     * @param propertyOption 外键信息
     */
    void createForeignKey(String tableName, PropertyOption propertyOption);

    /**
     * 是否开启外键约束检查
     */
    void enableForeignConstraintCheck(boolean enable);

    /**
     * 备份表
     *
     * @param tableName 需要备份的表
     * @param backupTableName 创建的备份表名称
     */
    void backupTable(String tableName, String backupTableName);

    /**
     * 删除数据库表信息缓存
     * @param tableNames 需要删除的数据库表列表,为空表示全部删除
     *
     */
    void deleteDatabaseEntityCache(String... tableNames);

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy