12个版本
0.1.19 | 2022年5月24日 |
---|---|
0.1.18 | 2022年5月24日 |
0.1.17 | 2022年2月8日 |
0.1.16 | 2022年1月26日 |
0.1.10 | 2021年6月29日 |
2065 在 数据库接口
每月 23 次下载
27KB
415 代码行
新包支持Mysql和PostgreSQL...
安装
cargo install sql_reverse
rbatis-tools
基于MySQL表结构生成RUST结构
安装
cargo install rbatis-tools
执行,你需要确保你在模板所在的目录中。
rbatis-tools mysql -f reverse.yml
自定义执行
rbatis-tools mysql -f reverse.yml -p 'templates/*' -n base.tera
reverse.yml
database: db_name
conn_str: root:password@127.0.0.1:3306/db_name
include_tables: # Include tables, can be ignored.
# - table_name
exclude_tables: # Exclude, tables, can be ignored.
# - table_name
output_dir: ./dir # code output directory
模板结构
#[derive(Serialize)]
pub struct Template {
pub table_name: String,
pub struct_name: String,
pub fields: Vec<Field>,
pub comment: String,
}
#[derive(Serialize, Clone)]
pub struct Field {
pub field_name: String,
pub field_type: String,
pub comment: String,
/// NO, YES
pub is_null: String,
}
模板
use serde_derive;
use chrono::prelude::*;
{% if template.comment -%}
/// {{ template.comment }}
{% endif -%}
#[crud_table]
#[derive(Default, Debug, Clone, PartialEq, serde_derive::Serialize, serde_derive::Deserialize)]
pub struct {{ template.struct_name }} {
{%- for v in template.fields %}
{% if v.comment -%}
/// {{ v.comment }}
{% endif -%}
pub {{ v.field_name }}: Option<{{ v.field_type }}>,
{%- endfor %}
}
生成结构示例
use serde_derive;
use chrono::prelude::*;
/// Test
#[crud_table]
#[derive(Default, Debug, Clone, PartialEq, serde_derive::Serialize, serde_derive::Deserialize)
pub struct Test {
pub id: Option<u32>,
/// uuid
pub uuid: Option<String>,
/// 数据
pub content: Option<String>,
/// 版本
pub version: Option<i8>,
/// 1:删除, 0:未删除
pub is_deleted: Option<u8>,
/// 更新时间
pub updated_at: Option<NaiveDateTime>,
/// 创建时间
pub created_at: Option<NaiveDateTime>,
}
依赖
~25–39MB
~654K SLoC