feat: update README
This commit is contained in:
parent
d87c451f42
commit
5777eab25d
92
README.md
92
README.md
|
@ -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
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
## 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();
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 53 KiB |
|
@ -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();
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue