EinsatzOnline/src/database/controller/members.rs

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()),
}
}
}