#柴油 #特性 #派生 #CRUD #自动 #方法 #模型

diesel_derives_traits

为 diesel_derives_extra 派生特性

4 个版本

0.2.0 2021 年 5 月 4 日
0.1.2 2018 年 1 月 23 日
0.1.1 2018 年 1 月 11 日
0.1.0 2017 年 12 月 16 日

#1247 in Rust 模式

每月 35 次下载
diesel_derives_extra 中使用

MIT 许可证

3KB

diesel_derives_extra

为您的 Diesel 模型自动派生一些简单的 CRUD 方法。

基本用法

  • diesel_derives_extradiesel_derives_traits 添加到您的 Cargo.toml
  • #[macro_use] extern crate diesel_derives_extra;extern crate diesel_derives_traits; 添加到项目的入口点

模型

对于用于在数据库中表示数据的模型,您可以使用以下内容

#[derive(Debug, Queryable, Identifiable, AsChangeset, Model)]
pub struct User {
    // fields omitted
}

Model 是此crate添加的新派生。其他的是为了使 Model 特性正常工作所必需的。

这生成了以下方法

fn save(self, conn: &PgConnection) -> QueryResult<Self>;
fn find_all(conn: &PgConnection) -> QueryResult<Vec<Self>>;
fn find_one(
    conn: &PgConnection,
    id: <&'a Self as Identifiable>::Id,
) -> QueryResult<Option<Self>>;
fn exists(conn: &PgConnection, id: <&'a Self as Identifiable>::Id) -> QueryResult<bool>;
fn count_all(conn: &PgConnection) -> QueryResult<i64>;
fn destroy(self, conn: &PgConnection) -> QueryResult<()>;

新模型

对于用于将新数据插入到表中模型的模型,您可以使用以下内容

#[derive(Debug, Insertable, NewModel)]
#[model(User)]
struct NewUser {
    // fields omitted
}

这生成一个方法

fn save(self, conn: &PgConnection) -> QueryResult<T>;

依赖关系

~3.5MB
~73K SLoC