2 个版本
0.1.0-beta.2 | 2023年5月7日 |
---|---|
0.1.0-beta.1 | 2023年1月20日 |
#1811 在 数据库接口
每月 23 次下载
24KB
512 代码行
SeaORM DBML
SeaORM 实体的数据库标记语言 (DBML) 编译器。
为什么选择 DBML?
DBML(数据库标记语言)是一种开源的 DSL 语言,用于定义和记录数据库模式和结构。它设计得简单、一致且易于阅读。
了解更多: 官方文档
此项目旨在将 DBML 作为编写 SeaORM 实体的语言。
输出
以下是将 DBML 编译为 SeaORM 实体的示例。
Table user {
id integer [pk]
username varchar
role varchar
}
//! Generated by sea-orm-dbml 0.1.0
pub mod user {
use sea_orm::entity::prelude::*;
#[derive(Clone, Debug, PartialEq, DeriveEntityModel)]
#[sea_orm(table_name = "user", schema_name = "public")]
pub struct Model {
#[sea_orm(column_type = "Integer", primary_key, auto_increment = false)]
pub id: i32,
#[sea_orm(column_type = "String(None)")]
pub username: String,
#[sea_orm(column_type = "String(None)")]
pub role: String,
}
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
pub enum Relation {}
impl ActiveModelBehavior for ActiveModel {}
}
如何使用它?
use std::{ffi::OsString, error::Error};
use sea_orm_dbml::{compiler::config::Config, *};
fn main() -> Result<(), Box<dyn Error>> {
compile(Config {
in_path: OsString::from("path/to/file.dbml"),
out_path: OsString::from("path/to/out/mod.rs"),
target: compiler::config::Target::Postgres,
..Default::default()
})
}
许可证
许可协议为以下之一
- Apache License,版本 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
贡献
除非您明确声明,否则您提交给作品中的任何有意贡献,根据 Apache-2.0 许可证定义,应作为上述双重许可,不附加任何额外条款或条件。
始终欢迎您参与、贡献和一起努力。
依赖项
~3MB
~62K SLoC