#自动 #derive #models #diesel #crud #methods

diesel_derives_extra

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

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日

#646 in 过程宏

MIT许可证

11KB
166

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添加的新derive。其他的是为了使 Model trait工作所必需的。

这会生成以下方法

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
~75K SLoC