feat(issue-#155): rename plugin module to meta (#156)

* feat(issue-#155): rename  module plugin to meta

* feat: remove unused md file

* refactor: rename plugin module to meta

* fix: trigger document error

* fix: code checkstyle
This commit is contained in:
vran 2022-05-08 22:47:47 +08:00 committed by GitHub
parent f2c4de5bb1
commit bab82d43df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
93 changed files with 201 additions and 182 deletions

View File

@ -1,5 +1,5 @@
rootProject.name = 'api'
include 'plugin'
include 'meta'
include 'common'
include 'dao'
include 'core'

View File

@ -20,7 +20,7 @@ bootBuildImage {
dependencies {
implementation project(":common")
implementation project(":plugin")
implementation project(":meta")
implementation project(":core")
implementation project(":dao")

View File

@ -1 +1 @@
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>databasir</title><script defer="defer" type="module" src="/js/chunk-vendors.9effab81.js"></script><script defer="defer" type="module" src="/js/app.4e60282a.js"></script><link href="/css/chunk-vendors.81898547.css" rel="stylesheet"><link href="/css/app.15b40a89.css" rel="stylesheet"><script defer="defer" src="/js/chunk-vendors-legacy.fb0c8458.js" nomodule></script><script defer="defer" src="/js/app-legacy.6ebc1336.js" nomodule></script></head><body><noscript><strong>We're sorry but databasir doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>databasir</title><script defer="defer" type="module" src="/js/chunk-vendors.9effab81.js"></script><script defer="defer" type="module" src="/js/app.032828f8.js"></script><link href="/css/chunk-vendors.81898547.css" rel="stylesheet"><link href="/css/app.15b40a89.css" rel="stylesheet"><script defer="defer" src="/js/chunk-vendors-legacy.fb0c8458.js" nomodule></script><script defer="defer" src="/js/app-legacy.cc3cc5e0.js" nomodule></script></head><body><noscript><strong>We're sorry but databasir doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -55,7 +55,6 @@ subprojects {
implementation "com.alibaba:easyexcel:${easyExcelVersion}"
implementation "org.freemarker:freemarker:${freemarkerVersion}"
implementation "commons-io:commons-io:${commonsIoVersion}"
}
test {

View File

@ -7,7 +7,7 @@ dependencies {
// internal module
implementation project(":common")
implementation project(":dao")
implementation project(":plugin")
implementation project(":meta")
// spring boot
implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'

View File

@ -7,6 +7,8 @@ import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.ReportingPolicy;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.stream.Collectors;
@ -62,6 +64,10 @@ public interface DocumentPojoConverter {
Integer tableDocumentId,
TriggerMeta meta);
default LocalDateTime toLocalDateTime(String dateTime) {
return LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}
default List<TableForeignKeyDocumentPojo> toForeignKeyPojo(Integer docId,
Integer tableMetaId,
List<ForeignKeyMeta> foreignKeys) {

@ -1 +1 @@
Subproject commit 4901a5746647317cf82820b6817c9b6d4554ed35
Subproject commit 215f052d23d0afac35de443675a8828aca94476f

View File

@ -0,0 +1,50 @@
package com.databasir.core;
import com.databasir.core.meta.data.DatabaseMeta;
import com.databasir.core.meta.provider.MetaProviders;
import com.databasir.core.meta.provider.condition.Condition;
import com.databasir.core.render.Render;
import com.databasir.core.render.RenderConfig;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.Connection;
import java.util.Optional;
@RequiredArgsConstructor
@Getter
public class Databasir {
private final DatabasirConfig config;
public Optional<DatabaseMeta> get(Connection connection, String databaseName, String schemaName) {
Condition condition = Condition.builder()
.databaseName(databaseName)
.schemaName(schemaName)
.ignoreTableNameRegex(config.getIgnoreTableNameRegex())
.ignoreTableColumnNameRegex(config.getIgnoreTableColumnNameRegex())
.build();
return MetaProviders
.of(connection)
.select(connection, condition);
}
public void renderAsMarkdown(DatabaseMeta meta, OutputStream out) throws IOException {
renderAsMarkdown(new RenderConfig(), meta, out);
}
public void renderAsMarkdown(RenderConfig config, DatabaseMeta meta, OutputStream stream) throws IOException {
Render.markdownRender(config).rendering(meta, stream);
}
public static Databasir of() {
return of(new DatabasirConfig());
}
public static Databasir of(DatabasirConfig config) {
return new Databasir(config);
}
}

View File

@ -1,6 +1,5 @@
package com.databasir.core;
import com.databasir.core.meta.repository.*;
import lombok.Getter;
import lombok.Setter;
@ -11,18 +10,6 @@ import java.util.HashSet;
@Setter
public class DatabasirConfig {
private IndexMetaRepository indexMetaRepository;
private TriggerMetaRepository triggerMetaRepository;
private ColumnMetaRepository columnMetaRepository;
private ForeignKeyMetaRepository foreignKeyMetaRepository;
private TableMetaRepository tableMetaRepository;
private DatabaseMetaRepository databaseMetaRepository;
private Collection<String> ignoreTableNameRegex = new HashSet<>();
private Collection<String> ignoreTableColumnNameRegex = new HashSet<>();

View File

@ -1,12 +1,12 @@
package com.databasir.core.meta.repository;
package com.databasir.core.meta.provider;
import com.databasir.core.meta.data.ColumnMeta;
import com.databasir.core.meta.repository.condition.TableCondition;
import com.databasir.core.meta.provider.condition.TableCondition;
import java.sql.Connection;
import java.util.List;
public interface ColumnMetaRepository {
public interface ColumnMetaProvider {
List<ColumnMeta> selectColumns(Connection connection, TableCondition condition);

View File

@ -1,12 +1,12 @@
package com.databasir.core.meta.repository;
package com.databasir.core.meta.provider;
import com.databasir.core.meta.data.DatabaseMeta;
import com.databasir.core.meta.repository.condition.Condition;
import com.databasir.core.meta.provider.condition.Condition;
import java.sql.Connection;
import java.util.Optional;
public interface DatabaseMetaRepository {
public interface DatabaseMetaProvider {
Optional<DatabaseMeta> select(Connection connection, Condition condition);

View File

@ -1,12 +1,12 @@
package com.databasir.core.meta.repository;
package com.databasir.core.meta.provider;
import com.databasir.core.meta.data.ForeignKeyMeta;
import com.databasir.core.meta.repository.condition.TableCondition;
import com.databasir.core.meta.provider.condition.TableCondition;
import java.sql.Connection;
import java.util.List;
public interface ForeignKeyMetaRepository {
public interface ForeignKeyMetaProvider {
List<ForeignKeyMeta> selectForeignKeys(Connection connection, TableCondition condition);

View File

@ -1,12 +1,12 @@
package com.databasir.core.meta.repository;
package com.databasir.core.meta.provider;
import com.databasir.core.meta.data.IndexMeta;
import com.databasir.core.meta.repository.condition.TableCondition;
import com.databasir.core.meta.provider.condition.TableCondition;
import java.sql.Connection;
import java.util.List;
public interface IndexMetaRepository {
public interface IndexMetaProvider {
List<IndexMeta> selectIndexes(Connection connection, TableCondition condition);
}

View File

@ -0,0 +1,60 @@
package com.databasir.core.meta.provider;
import com.databasir.core.meta.provider.jdbc.*;
import com.databasir.core.meta.provider.mysql.MysqlTableTriggerMetaProvider;
import lombok.extern.slf4j.Slf4j;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
@Slf4j
public class MetaProviders {
public static DatabaseMetaProvider jdbc() {
var columnMetaProvider = new JdbcColumnMetaProvider();
var foreignKeyMetaProvider = new JdbcForeignKeyMetaProvider();
var indexMetaProvider = new JdbcIndexMetaProvider();
var triggerMetaProvider = new JdbcTriggerMetaProvider();
var tableMetaProvider = new JdbcTableMetaProvider(
columnMetaProvider,
indexMetaProvider,
triggerMetaProvider,
foreignKeyMetaProvider
);
return new JdbcDatabaseMetaProvider(tableMetaProvider);
}
public static DatabaseMetaProvider of(Connection connection) {
String url;
try {
DatabaseMetaData metaData = connection.getMetaData();
url = metaData.getURL();
} catch (SQLException e) {
log.warn("failed to get connect url, {}, fallback to jdbc provider", e.getMessage());
return jdbc();
}
if (url.contains(":sqlserver:")) {
return jdbc();
}
if (url.contains(":mysql:")) {
return mysql();
}
return jdbc();
}
private static DatabaseMetaProvider mysql() {
var columnMetaProvider = new JdbcColumnMetaProvider();
var foreignKeyMetaProvider = new JdbcForeignKeyMetaProvider();
var indexMetaProvider = new JdbcIndexMetaProvider();
var triggerMetaProvider = new MysqlTableTriggerMetaProvider();
var tableMetaProvider = new JdbcTableMetaProvider(
columnMetaProvider,
indexMetaProvider,
triggerMetaProvider,
foreignKeyMetaProvider
);
return new JdbcDatabaseMetaProvider(tableMetaProvider);
}
}

View File

@ -1,12 +1,12 @@
package com.databasir.core.meta.repository;
package com.databasir.core.meta.provider;
import com.databasir.core.meta.data.TableMeta;
import com.databasir.core.meta.repository.condition.Condition;
import com.databasir.core.meta.provider.condition.Condition;
import java.sql.Connection;
import java.util.List;
public interface TableMetaRepository {
public interface TableMetaProvider {
List<TableMeta> selectTables(Connection connection, Condition condition);

View File

@ -1,12 +1,12 @@
package com.databasir.core.meta.repository;
package com.databasir.core.meta.provider;
import com.databasir.core.meta.data.TriggerMeta;
import com.databasir.core.meta.repository.condition.TableCondition;
import com.databasir.core.meta.provider.condition.TableCondition;
import java.sql.Connection;
import java.util.List;
public interface TriggerMetaRepository {
public interface TriggerMetaProvider {
List<TriggerMeta> selectTriggers(Connection connection, TableCondition condition);

View File

@ -1,4 +1,4 @@
package com.databasir.core.meta.repository.condition;
package com.databasir.core.meta.provider.condition;
import lombok.Builder;
import lombok.Getter;

View File

@ -1,4 +1,4 @@
package com.databasir.core.meta.repository.condition;
package com.databasir.core.meta.provider.condition;
import lombok.Getter;
import lombok.NonNull;

View File

@ -1,8 +1,8 @@
package com.databasir.core.meta.repository.impl.jdbc;
package com.databasir.core.meta.provider.jdbc;
import com.databasir.core.meta.data.ColumnMeta;
import com.databasir.core.meta.repository.ColumnMetaRepository;
import com.databasir.core.meta.repository.condition.TableCondition;
import com.databasir.core.meta.provider.ColumnMetaProvider;
import com.databasir.core.meta.provider.condition.TableCondition;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -15,7 +15,7 @@ import java.util.List;
@Slf4j
@RequiredArgsConstructor
public class JdbcColumnMetaRepository implements ColumnMetaRepository {
public class JdbcColumnMetaProvider implements ColumnMetaProvider {
@Override
public List<ColumnMeta> selectColumns(Connection connection, TableCondition tableCondition) {

View File

@ -1,10 +1,10 @@
package com.databasir.core.meta.repository.impl.jdbc;
package com.databasir.core.meta.provider.jdbc;
import com.databasir.core.meta.data.DatabaseMeta;
import com.databasir.core.meta.data.TableMeta;
import com.databasir.core.meta.repository.DatabaseMetaRepository;
import com.databasir.core.meta.repository.TableMetaRepository;
import com.databasir.core.meta.repository.condition.Condition;
import com.databasir.core.meta.provider.DatabaseMetaProvider;
import com.databasir.core.meta.provider.TableMetaProvider;
import com.databasir.core.meta.provider.condition.Condition;
import lombok.RequiredArgsConstructor;
import java.sql.Connection;
@ -16,9 +16,9 @@ import java.util.Objects;
import java.util.Optional;
@RequiredArgsConstructor
public class JdbcDatabaseMetaRepository implements DatabaseMetaRepository {
public class JdbcDatabaseMetaProvider implements DatabaseMetaProvider {
private final TableMetaRepository tableMetaRepository;
private final TableMetaProvider tableMetaProvider;
@Override
public Optional<DatabaseMeta> select(Connection connection, Condition condition) {
@ -28,7 +28,7 @@ public class JdbcDatabaseMetaRepository implements DatabaseMetaRepository {
while (catalogs.next()) {
String catalogName = catalogs.getString("TABLE_CAT");
if (Objects.equals(condition.getDatabaseName(), catalogName)) {
List<TableMeta> tableDocs = tableMetaRepository.selectTables(connection, condition);
List<TableMeta> tableDocs = tableMetaProvider.selectTables(connection, condition);
DatabaseMeta meta = DatabaseMeta.builder()
.productName(metaData.getDatabaseProductName())
.productVersion(metaData.getDatabaseProductVersion())
@ -44,7 +44,7 @@ public class JdbcDatabaseMetaRepository implements DatabaseMetaRepository {
while (schemas.next()) {
String schemaName = schemas.getString("TABLE_SCHEM");
if (Objects.equals(condition.getSchemaName(), schemaName)) {
List<TableMeta> tableDocs = tableMetaRepository.selectTables(connection, condition);
List<TableMeta> tableDocs = tableMetaProvider.selectTables(connection, condition);
DatabaseMeta meta = DatabaseMeta.builder()
.productName(metaData.getDatabaseProductName())
.productVersion(metaData.getDatabaseProductVersion())

View File

@ -1,8 +1,8 @@
package com.databasir.core.meta.repository.impl.jdbc;
package com.databasir.core.meta.provider.jdbc;
import com.databasir.core.meta.data.ForeignKeyMeta;
import com.databasir.core.meta.repository.ForeignKeyMetaRepository;
import com.databasir.core.meta.repository.condition.TableCondition;
import com.databasir.core.meta.provider.ForeignKeyMetaProvider;
import com.databasir.core.meta.provider.condition.TableCondition;
import lombok.extern.slf4j.Slf4j;
import java.sql.Connection;
@ -13,7 +13,7 @@ import java.util.ArrayList;
import java.util.List;
@Slf4j
public class JdbcForeignKeyMetaRepository implements ForeignKeyMetaRepository {
public class JdbcForeignKeyMetaProvider implements ForeignKeyMetaProvider {
@Override
public List<ForeignKeyMeta> selectForeignKeys(Connection connection, TableCondition condition) {

View File

@ -1,8 +1,8 @@
package com.databasir.core.meta.repository.impl.jdbc;
package com.databasir.core.meta.provider.jdbc;
import com.databasir.core.meta.data.IndexMeta;
import com.databasir.core.meta.repository.IndexMetaRepository;
import com.databasir.core.meta.repository.condition.TableCondition;
import com.databasir.core.meta.provider.IndexMetaProvider;
import com.databasir.core.meta.provider.condition.TableCondition;
import lombok.extern.slf4j.Slf4j;
import java.sql.Connection;
@ -11,7 +11,7 @@ import java.sql.SQLException;
import java.util.*;
@Slf4j
public class JdbcIndexMetaRepository implements IndexMetaRepository {
public class JdbcIndexMetaProvider implements IndexMetaProvider {
@Override
public List<IndexMeta> selectIndexes(Connection connection, TableCondition condition) {
try {

View File

@ -1,10 +1,10 @@
package com.databasir.core.meta.repository.impl.jdbc;
package com.databasir.core.meta.provider.jdbc;
import com.databasir.core.meta.data.ColumnMeta;
import com.databasir.core.meta.data.TableMeta;
import com.databasir.core.meta.repository.*;
import com.databasir.core.meta.repository.condition.Condition;
import com.databasir.core.meta.repository.condition.TableCondition;
import com.databasir.core.meta.provider.*;
import com.databasir.core.meta.provider.condition.Condition;
import com.databasir.core.meta.provider.condition.TableCondition;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -16,15 +16,15 @@ import java.util.List;
@RequiredArgsConstructor
@Slf4j
public class JdbcTableMetaRepository implements TableMetaRepository {
public class JdbcTableMetaProvider implements TableMetaProvider {
private final ColumnMetaRepository columnMetaRepository;
private final ColumnMetaProvider columnMetaProvider;
private final IndexMetaRepository indexMetaRepository;
private final IndexMetaProvider indexMetaProvider;
private final TriggerMetaRepository triggerMetaRepository;
private final TriggerMetaProvider triggerMetaProvider;
private final ForeignKeyMetaRepository foreignKeyMetaRepository;
private final ForeignKeyMetaProvider foreignKeyMetaProvider;
@Override
public List<TableMeta> selectTables(Connection connection, Condition condition) {
@ -51,7 +51,7 @@ public class JdbcTableMetaRepository implements TableMetaRepository {
String tableType = tablesResult.getString("TABLE_TYPE");
String tableComment = tablesResult.getString("REMARKS");
TableCondition tableCondition = TableCondition.of(condition, tableName);
List<ColumnMeta> columns = columnMetaRepository.selectColumns(connection, tableCondition);
List<ColumnMeta> columns = columnMetaProvider.selectColumns(connection, tableCondition);
if (columns.isEmpty()) {
if (log.isWarnEnabled()) {
log.warn("ignored table: " + databaseName + "." + tableName
@ -64,9 +64,9 @@ public class JdbcTableMetaRepository implements TableMetaRepository {
.type(tableType)
.comment(tableComment)
.columns(columns)
.foreignKeys(foreignKeyMetaRepository.selectForeignKeys(connection, tableCondition))
.indexes(indexMetaRepository.selectIndexes(connection, tableCondition))
.triggers(triggerMetaRepository.selectTriggers(connection, tableCondition))
.foreignKeys(foreignKeyMetaProvider.selectForeignKeys(connection, tableCondition))
.indexes(indexMetaProvider.selectIndexes(connection, tableCondition))
.triggers(triggerMetaProvider.selectTriggers(connection, tableCondition))
.build();
tableMetas.add(tableMeta);
}

View File

@ -1,14 +1,14 @@
package com.databasir.core.meta.repository.impl.jdbc;
package com.databasir.core.meta.provider.jdbc;
import com.databasir.core.meta.data.TriggerMeta;
import com.databasir.core.meta.repository.TriggerMetaRepository;
import com.databasir.core.meta.repository.condition.TableCondition;
import com.databasir.core.meta.provider.TriggerMetaProvider;
import com.databasir.core.meta.provider.condition.TableCondition;
import java.sql.Connection;
import java.util.Collections;
import java.util.List;
public class JdbcTriggerMetaRepository implements TriggerMetaRepository {
public class JdbcTriggerMetaProvider implements TriggerMetaProvider {
@Override
public List<TriggerMeta> selectTriggers(Connection connection, TableCondition condition) {

View File

@ -1,8 +1,8 @@
package com.databasir.core.meta.repository.impl.extension;
package com.databasir.core.meta.provider.mysql;
import com.databasir.core.meta.data.TriggerMeta;
import com.databasir.core.meta.repository.TriggerMetaRepository;
import com.databasir.core.meta.repository.condition.TableCondition;
import com.databasir.core.meta.provider.TriggerMetaProvider;
import com.databasir.core.meta.provider.condition.TableCondition;
import lombok.extern.slf4j.Slf4j;
import java.sql.Connection;
@ -14,7 +14,7 @@ import java.util.Collections;
import java.util.List;
@Slf4j
public class MysqlTableTriggerMetaRepository implements TriggerMetaRepository {
public class MysqlTableTriggerMetaProvider implements TriggerMetaProvider {
@Override
public List<TriggerMeta> selectTriggers(Connection connection, TableCondition condition) {

View File

@ -1,83 +0,0 @@
package com.databasir.core;
import com.databasir.core.meta.data.DatabaseMeta;
import com.databasir.core.meta.repository.*;
import com.databasir.core.meta.repository.condition.Condition;
import com.databasir.core.meta.repository.impl.jdbc.*;
import com.databasir.core.render.Render;
import com.databasir.core.render.RenderConfig;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.Connection;
import java.util.Optional;
@RequiredArgsConstructor
@Getter
public class Databasir {
private final DatabasirConfig config;
public Optional<DatabaseMeta> get(Connection connection, String databaseName, String schemaName) {
Condition condition = Condition.builder()
.databaseName(databaseName)
.schemaName(schemaName)
.ignoreTableNameRegex(config.getIgnoreTableNameRegex())
.ignoreTableColumnNameRegex(config.getIgnoreTableColumnNameRegex())
.build();
return config.getDatabaseMetaRepository().select(connection, condition);
}
public void renderAsMarkdown(DatabaseMeta meta, OutputStream out) throws IOException {
renderAsMarkdown(new RenderConfig(), meta, out);
}
public void renderAsMarkdown(RenderConfig config, DatabaseMeta meta, OutputStream stream) throws IOException {
Render.markdownRender(config).rendering(meta, stream);
}
public static Databasir of() {
return of(new DatabasirConfig());
}
public static Databasir of(DatabasirConfig config) {
TriggerMetaRepository triggerMetaRepository = config.getTriggerMetaRepository();
if (triggerMetaRepository == null) {
triggerMetaRepository = new JdbcTriggerMetaRepository();
}
IndexMetaRepository indexMetaRepository = config.getIndexMetaRepository();
if (indexMetaRepository == null) {
indexMetaRepository = new JdbcIndexMetaRepository();
}
ColumnMetaRepository columnMetaRepository = config.getColumnMetaRepository();
if (columnMetaRepository == null) {
columnMetaRepository = new JdbcColumnMetaRepository();
}
ForeignKeyMetaRepository foreignKeyMetaRepository = config.getForeignKeyMetaRepository();
if (foreignKeyMetaRepository == null) {
foreignKeyMetaRepository = new JdbcForeignKeyMetaRepository();
}
TableMetaRepository tableMetaRepository = config.getTableMetaRepository();
if (tableMetaRepository == null) {
tableMetaRepository = new JdbcTableMetaRepository(
columnMetaRepository,
indexMetaRepository,
triggerMetaRepository,
foreignKeyMetaRepository
);
}
DatabaseMetaRepository databaseMetaRepository = config.getDatabaseMetaRepository();
if (databaseMetaRepository == null) {
databaseMetaRepository = new JdbcDatabaseMetaRepository(tableMetaRepository);
}
config.setTriggerMetaRepository(triggerMetaRepository);
config.setIndexMetaRepository(indexMetaRepository);
config.setColumnMetaRepository(columnMetaRepository);
config.setTableMetaRepository(tableMetaRepository);
config.setDatabaseMetaRepository(databaseMetaRepository);
return new Databasir(config);
}
}

View File

View File

@ -8,7 +8,7 @@ pluginManagement {
}
rootProject.name = 'databasir'
include 'plugin'
include 'meta'
include 'api'
include 'common'
include 'dao'