gen-table is a tool that teaches mysql table structures to generate rust struct code,
which is easy for developers to use and automatically manage table structure generation.
shell
cargo install gen-table
or
shell
cargo install --git https://github.com/daheige/rs-tbox
``` gen-table -h Hello, welcome to gen-table gen-table for mysql table structures convert rust code
Usage: gen-table [OPTIONS] --dsn Options:
-d, --dsn The generated rust code:
src/model/mod.rs
```
// code generated by gen-table. DO NOT EDIT!!!
pub mod news;
pub mod news_topics; ``` src/model/news.rs
```rust
// code generated by gen-table. DO NOT EDIT!!!
// gen code for news table. use std::time::Duration; // NEWSTABLE for news table
const NEWSTABLE: &str = "news"; // NewsEntity for news table
pub struct NewsEntity {
pub id: i64,
pub createdat: Option // impl tablename method for NewsEntity
impl NewsEntity {
pub fn tablename(&self) -> String {
NEWSTABLE.tostring()
}
}
``` src/model/news.rs
```rust
// code generated by gen-table. DO NOT EDIT!!!
// gen code for news_topics table. // NEWSTOPICSTABLE for newstopics table
const NEWSTOPICSTABLE: &str = "newstopics"; // NewsTopicsEntity for newstopics table
pub struct NewsTopicsEntity {
pub newsid: i64,
pub topic_id: i64,
} // impl tablename method for NewsTopicsEntity
impl NewsTopicsEntity {
pub fn tablename(&self) -> String {
NEWSTOPICSTABLE.to_string()
}
}
```
tables eg:orders,users
-e, --enabletabname whether to generate tablename method for struct
-n, --no_null whether to allow a field of null type
-h, --help Print help
-V, --version Print version
```
how to use
shell
gen-table -d=mysql://root:root1234@localhost/test -t=news,news_topics -o=src/model
Hello, welcome to gen-table
tables:news,news_topics enable_table_name:true no_null_field:false
gen tables:["news", "news_topics"] rust code
gen code for table:news
current field:created_at is null able,type:Duration
current field:updated_at is null able,type:Duration
current field:deleted_at is null able,type:Duration
current field:title is null able,type:String
current field:slug is null able,type:String
current field:content is null able,type:String
current field:status is null able,type:String
gen code for table:news finish
gen code for table:news_topics
gen code for table:news_topics finish