24 lines
637 B
Rust
24 lines
637 B
Rust
use crate::database::model::members::Sex;
|
|
use diesel::backend;
|
|
use diesel::backend::Backend;
|
|
use diesel::deserialize;
|
|
use diesel::deserialize::FromSql;
|
|
use diesel::sql_types::Integer;
|
|
use std::error::Error;
|
|
|
|
impl<DB> FromSql<Integer, DB> for Sex
|
|
where
|
|
DB: Backend,
|
|
i16: FromSql<Integer, DB>,
|
|
{
|
|
fn from_sql(bytes: Option<&DB::RawValue>) -> deserialize::Result<Self> {
|
|
match i16::from_sql(bytes)? {
|
|
0 => Ok(Sex::UNKNOWN),
|
|
1 => Ok(Sex::MALE),
|
|
2 => Ok(Sex::FEMALE),
|
|
9 => Ok(Sex::OTHER),
|
|
x => Err(format!("Unrecognized variant {}", x).into()),
|
|
}
|
|
}
|
|
}
|