rbatis-tools

Crates.iorbatis-tools
lib.rsrbatis-tools
version0.1.19
sourcesrc
created_at2021-06-23 06:30:29.283214
updated_at2022-05-24 15:48:58.58347
descriptionGenerate the RUST structure based on the MySQL table structure
homepagehttps://github.com/ptechen
repositoryhttps://github.com/ptechen/rbatis-tools.git
max_upload_size
id413810
size98,645
Petechen (ptechen)

documentation

https://github.com/ptechen/rbatis-tools/blob/main/README.md

README

New package supports Mysql and PostgresSQL...

Version info Downloads docs dependency status B站

Install

cargo install sql_reverse

rbatis-tools

Generate the RUST structure based on the MySQL table structure

Version info Downloads docs dependency status

Install

cargo install rbatis-tools

Exec,you need to make sure you're in the same directory as templates.

rbatis-tools mysql -f reverse.yml

Custom Exec

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

Template Struct:

#[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,
}

Template:

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 %}
}

Gen Struct Example:

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>,
}
Commit count: 50

cargo fmt