Documentation ¶
Index ¶
Examples ¶
- ErdGenerator.Run (Many_tables_with_Mermaid)
- ErdGenerator.Run (Many_tables_with_PlantUML)
- ErdGenerator.Run (Many_tables_within_a_distance_of_1_from_the_articles_with_Mermaid)
- ErdGenerator.Run (Many_tables_within_a_distance_of_1_from_the_articles_with_PlantUML)
- ErdGenerator.Run (Two_tables_with_Mermaid)
- ErdGenerator.Run (Two_tables_with_PlantUML)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type ErdGenerator ¶
type ErdGenerator struct { Filepath string Table string Distance int SKipIndex bool SkipTable string Format string ShowComment bool }
ErdGenerator represents ERD generator
func NewErdGenerator ¶ added in v0.4.0
func NewErdGenerator() *ErdGenerator
NewErdGenerator returns a new NewErdGenerator instance
func (*ErdGenerator) Run ¶
func (g *ErdGenerator) Run(schema *db.Schema) error
Run performs generator
Example (Many_tables_with_Mermaid) ¶
withDatabase(func(a *sqlite3.Adapter) { createManyExampleTables(a) schema, err := LoadSchema(a) if err != nil { panic(err) } generator := ErdGenerator{Format: "mermaid"} err = generator.Run(schema) if err != nil { panic(err) }
Output: erDiagram articles { INTEGER id INTEGER user_id } comments { INTEGER id INTEGER article_id } followers { INTEGER id INTEGER user_id INTEGER target_user_id } followings { INTEGER id INTEGER user_id INTEGER target_user_id } likes { INTEGER article_id INTEGER user_id } revisions { INTEGER id INTEGER article_id } users { INTEGER id TEXT name } users ||--o{ articles : owns articles ||--o{ comments : owns users ||--o{ followers : owns users ||--o{ followers : owns users ||--o{ followings : owns users ||--o{ followings : owns users ||--o{ likes : owns articles ||--o{ likes : owns articles ||--o{ revisions : owns
Example (Many_tables_with_PlantUML) ¶
withDatabase(func(a *sqlite3.Adapter) { createManyExampleTables(a) schema, err := LoadSchema(a) if err != nil { panic(err) } generator := ErdGenerator{Format: "plant_uml"} err = generator.Run(schema) if err != nil { panic(err) }
Output: entity articles { * id : INTEGER -- * user_id : INTEGER -- index_user_id_on_articles (user_id) } entity comments { * id : INTEGER -- * article_id : INTEGER -- index_article_id_on_articles (article_id) } entity followers { * id : INTEGER -- * user_id : INTEGER * target_user_id : INTEGER -- - index_target_user_id_and_user_id_on_followers (target_user_id, user_id) - index_user_id_and_target_user_id_on_followers (user_id, target_user_id) } entity followings { * id : INTEGER -- * user_id : INTEGER * target_user_id : INTEGER -- - index_target_user_id_and_user_id_on_followings (target_user_id, user_id) - index_user_id_and_target_user_id_on_followings (user_id, target_user_id) } entity likes { * article_id : INTEGER * user_id : INTEGER -- index_user_id_on_likes (user_id) - index_article_id_and_user_id_on_likes (article_id, user_id) } entity revisions { * id : INTEGER -- * article_id : INTEGER -- index_article_id_on_revisions (article_id) } entity users { * id : INTEGER -- name : TEXT } articles }-- users comments }-- articles followers }-- users followers }-- users followings }-- users followings }-- users likes }-- users likes }-- articles revisions }-- articles
Example (Many_tables_within_a_distance_of_1_from_the_articles_with_Mermaid) ¶
withDatabase(func(a *sqlite3.Adapter) { createManyExampleTables(a) schema, err := LoadSchema(a) if err != nil { panic(err) } generator := ErdGenerator{Format: "mermaid", Table: "articles", Distance: 1} err = generator.Run(schema) if err != nil { panic(err) }
Output: erDiagram articles { INTEGER id INTEGER user_id } comments { INTEGER id INTEGER article_id } likes { INTEGER article_id INTEGER user_id } revisions { INTEGER id INTEGER article_id } users { INTEGER id TEXT name } users ||--o{ articles : owns articles ||--o{ comments : owns users ||--o{ likes : owns articles ||--o{ likes : owns articles ||--o{ revisions : owns
Example (Many_tables_within_a_distance_of_1_from_the_articles_with_PlantUML) ¶
withDatabase(func(a *sqlite3.Adapter) { createManyExampleTables(a) schema, err := LoadSchema(a) if err != nil { panic(err) } generator := ErdGenerator{Format: "plant_uml", Table: "articles", Distance: 1} err = generator.Run(schema) if err != nil { panic(err) }
Output: entity articles { * id : INTEGER -- * user_id : INTEGER -- index_user_id_on_articles (user_id) } entity comments { * id : INTEGER -- * article_id : INTEGER -- index_article_id_on_articles (article_id) } entity likes { * article_id : INTEGER * user_id : INTEGER -- index_user_id_on_likes (user_id) - index_article_id_and_user_id_on_likes (article_id, user_id) } entity revisions { * id : INTEGER -- * article_id : INTEGER -- index_article_id_on_revisions (article_id) } entity users { * id : INTEGER -- name : TEXT } articles }-- users comments }-- articles likes }-- users likes }-- articles revisions }-- articles
Example (Two_tables_with_Mermaid) ¶
withDatabase(func(a *sqlite3.Adapter) { a.DB.MustExec(` CREATE TABLE users ( id integer not null primary key, name text );`) a.DB.MustExec(` CREATE TABLE articles ( id integer not null primary key, user_id integer not null, FOREIGN KEY(user_id) REFERENCES users(id) );`) a.DB.MustExec("CREATE INDEX index_user_id_on_articles ON articles(user_id)") schema, err := LoadSchema(a) if err != nil { panic(err) } generator := ErdGenerator{Format: "mermaid"} err = generator.Run(schema) if err != nil { panic(err) }
Output: erDiagram articles { INTEGER id INTEGER user_id } users { INTEGER id TEXT name } users ||--o{ articles : owns
Example (Two_tables_with_PlantUML) ¶
withDatabase(func(a *sqlite3.Adapter) { a.DB.MustExec(` CREATE TABLE users ( id integer not null primary key, name text );`) a.DB.MustExec(` CREATE TABLE articles ( id integer not null primary key, user_id integer not null, FOREIGN KEY(user_id) REFERENCES users(id) );`) a.DB.MustExec("CREATE INDEX index_user_id_on_articles ON articles(user_id)") schema, err := LoadSchema(a) if err != nil { panic(err) } generator := ErdGenerator{Format: "plant_uml"} err = generator.Run(schema) if err != nil { panic(err) }
Output: entity articles { * id : INTEGER -- * user_id : INTEGER -- index_user_id_on_articles (user_id) } entity users { * id : INTEGER -- name : TEXT } articles }-- users
Click to show internal directories.
Click to hide internal directories.