#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 16/week @ 2024-03-08 11/week @ 2024-03-15 2/week @ 2024-03-22 22/week @ 2024-03-29 7/week @ 2024-04-05 10/week @ 2024-05-10 26/week @ 2024-05-17 28/week @ 2024-05-24 37/week @ 2024-05-31 8/week @ 2024-06-07

每月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