#diesel #select #field #macro #table #struct-fields #selectable

diesel-selectable-macro

一个可派生的Serialize宏,用于精确选择字段

3个版本 (1个稳定版)

1.0.0 2022年12月21日
0.3.0 2022年9月23日
0.2.0 2022年9月23日
0.1.0 2022年6月30日

#1569进程宏

Download history • Rust 包仓库 16/week @ 2024-03-08 • Rust 包仓库 11/week @ 2024-03-15 • Rust 包仓库 2/week @ 2024-03-22 • Rust 包仓库 22/week @ 2024-03-29 • Rust 包仓库 7/week @ 2024-04-05 • Rust 包仓库 10/week @ 2024-05-10 • Rust 包仓库 26/week @ 2024-05-17 • Rust 包仓库 28/week @ 2024-05-24 • Rust 包仓库 37/week @ 2024-05-31 • Rust 包仓库 8/week @ 2024-06-07 • Rust 包仓库

每月57次下载

MIT 许可证

9KB
142

diesel-selectable-macro

在插入时,Diesel允许你派生Insertable特性,通过名称插入键

use diesel::prelude::*;

#[derive(Insertable)]
#[diesel(table_name = users)]
struct User {
  email: String,
  password_hash: String,
  // There's another field, `phone`, but we are not writing it.
}

// later on...

fn write(user: User) -> QueryResult<usize> {
  diesel::insert_into(users::table).values(user).execute(conn)
}

这个crate提供了一个类似的派生特性用于读取数据。Diesel的Queryable特性通过位置而不是字段名来读取,但有时字段名更方便

use diesel::prelude::*;
use diesel_selectable_macro::Selectable;

#[derive(Queryable, Selectable)]
#[diesel(table_name = users)]
struct User {
  email: String,
  password_hash: String,
  // There's another field, `phone`, but we do not need to read it.
}

// later on...

fn read(email: String) -> QueryResult<User> {
  User::select().filter(crate::schema::users::email.eq(&email)).get_result(conn)
}

自动派生的select方法向Diesel提供了显式的字段,对应于结构体字段。

依赖关系

~2MB
~43K SLoC