feat: update README

This commit is contained in:
vran 2021-12-28 21:10:08 +08:00
parent d87c451f42
commit 5777eab25d
4 changed files with 69 additions and 30 deletions

View File

@ -2,36 +2,78 @@
Database document generator Database document generator
# Features you could use `databasir` to generate database meta model, or render it as markdown / pdf (TODO) / html (TODO)
- render as markdown # How to use
- render as html (TODO)
- render as PDF (TODO)
# Quick Start ## Database Meta to Java Model
```java ```java
// First: get database connection java.sql.Connection connection = ...;
Class.forName("com.mysql.cj.jdbc.Driver"); DatabaseDocConfig config = DatabaseDocConfig.builder()
Properties info=new Properties(); .databaseName("Demo")
info.put("user","root"); .connection(connection)
info.put("password","123456"); .build();
// this config is used by mysql
info.put("useInformationSchema","true");
String url="jdbc:mysql://localhost:3306/patient?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true";
var connection=DriverManager.getConnection(url,info);
// Second: generate doc model
var config=DatabaseDocConfiguration.builder()
.databaseName("patient")
.connection(connection)
.build();
DatabaseDoc doc = JdbcDatabaseDocFactory.of().create(config).orElseThrow(); DatabaseDoc doc = JdbcDatabaseDocFactory.of().create(config).orElseThrow();
```
// Final: Render as markdown ## Render as Markdown
try(FileOutputStream out=new FileOutputStream("doc.md")){ ```java
MarkdownRender.of(new RenderConfiguration()).rendering(doc,out); java.sql.Connection connection = ...;
}catch(IOException e){ DatabaseDocConfig config = DatabaseDocConfig.builder()
.databaseName("Demo")
.connection(connection)
.build();
DatabaseDoc doc = JdbcDatabaseDocFactory.of().create(config).orElseThrow();
try (FileOutputStream out = new FileOutputStream("doc.md")) {
RenderConfig renderConfig = new RenderConfig();
Render.markdownRender(renderConfig).rendering(doc, out);
} catch (IOException e) {
throw new IllegalStateException(e); throw new IllegalStateException(e);
} }
``` ```
- Example
![](README/table-doc.png)
## Ignore tables or columns
support regex pattern to ignore table or column
```java
java.sql.Connection connection = ...;
DatabaseDocConfig config = DatabaseDocConfig.builder()
.databaseName("Demo")
.connection(connection)
.ignoreTableRegexes(Arrays.asList("mysql_*"))
.ignoreColumnRegexes(Arrays.asList("id"))
.build();
DatabaseDoc doc = JdbcDatabaseDocFactory.of().create(config).orElseThrow();
```
## Extension
Default factory
- tableDocFactory -> `com.databasir.core.doc.factory.jdbc.JdbcTableDocFactory`
- columnDocFactory -> `com.databasir.core.doc.factory.jdbc.JdbcTableColumnDocFactory`
- indexDocFactory -> `com.databasir.core.doc.factory.jdbc.JdbcTableIndexDocFactory`
- triggerDocFactory -> `com.databasir.core.doc.factory.jdbc.JdbcTableTriggerDocFactory`
Custom configuration
```java
java.sql.Connection connection = ...;
DatabaseDocConfig config = DatabaseDocConfig.builder()
.databaseName("Demo")
.connection(connection)
.tableDocFactory(...) // your custom table doc factory
.tableColumnDocFactory(...) // your custom column doc factory
.tableIndexDocFactory(...) // your custom index doc factory
.tableTriggerDocFactory(...) // your custom trigger doc factory
.build();
DatabaseDoc doc = JdbcDatabaseDocFactory.of().create(config).orElseThrow();
```

BIN
README/table-doc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

View File

@ -26,9 +26,6 @@ public class DatabaseDocConfig {
@Builder.Default @Builder.Default
private List<String> ignoreColumnRegexes = Collections.emptyList(); private List<String> ignoreColumnRegexes = Collections.emptyList();
@Builder.Default
private DatabaseDocFactory databaseDocFactory = new JdbcDatabaseDocFactory();
@Builder.Default @Builder.Default
private TableDocFactory tableDocFactory = new JdbcTableDocFactory(); private TableDocFactory tableDocFactory = new JdbcTableDocFactory();

View File

@ -25,14 +25,14 @@ public class App {
// generate doc model // generate doc model
var config = DatabaseDocConfig.builder() var config = DatabaseDocConfig.builder()
.databaseName("patient") .databaseName("user")
.connection(connection) .connection(connection)
.tableTriggerDocFactory(new MysqlTableTriggerDocFactory()) .tableTriggerDocFactory(new MysqlTableTriggerDocFactory())
.build(); .build();
DatabaseDoc doc = JdbcDatabaseDocFactory.of().create(config).orElseThrow(); DatabaseDoc doc = JdbcDatabaseDocFactory.of().create(config).orElseThrow();
// render as markdown // render as markdown
try (FileOutputStream out = new FileOutputStream("doc.md")) { try (FileOutputStream out = new FileOutputStream("user.md")) {
RenderConfig renderConfig = new RenderConfig(); RenderConfig renderConfig = new RenderConfig();
renderConfig.setRenderTriggers(true); renderConfig.setRenderTriggers(true);
Render.markdownRender(renderConfig).rendering(doc, out); Render.markdownRender(renderConfig).rendering(doc, out);