Crates.io | diesel-selectable-macro |
lib.rs | diesel-selectable-macro |
version | 1.0.0 |
source | src |
created_at | 2022-06-30 23:32:54.107098 |
updated_at | 2022-12-21 00:30:10.629159 |
description | A derivable `Serialize` macro that selects precise fields. |
homepage | |
repository | https://github.com/lukesneeringer/diesel-serialize-macro |
max_upload_size | |
id | 616772 |
size | 10,478 |
When inserting, Diesel allows you to derive the Insertable
trait, which
inserts keys by name:
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)
}
This crate offers a similar derive trait for reading data. Diesel's
Queryable
trait reads by position rather than field name, but sometimes field
name is more convenient:
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)
}
The automatically derived select
method provides the explicit fields to
Diesel, corresponding to the struct fields.