userlib/enums/
disabilities.rsuse serde::Deserialize;
use serde::Serialize;
use std::str;
use strum_macros::EnumString;
#[cfg(feature = "diesel")]
use {
diesel::backend::Backend,
diesel::deserialize::FromSql,
diesel::pg::Pg,
diesel::serialize::{IsNull, Output, ToSql},
diesel::types::Varchar,
diesel::{deserialize, not_none, serialize},
diesel::{AsExpression, FromSqlRow},
std::io::Write,
};
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, EnumString)]
#[cfg_attr(feature = "diesel", derive(AsExpression, FromSqlRow))]
#[cfg_attr(feature = "diesel", sql_type = "Varchar")]
pub enum Disabilities {
Autism,
PhysicalDisability,
BehaviourDisorder,
VisionImpairment,
HearingImpairment,
DifficultiesInLearning,
IntellectualDisability,
LanguageDisorder,
AcquiredBrainInjury,
MentalHealthDisorder,
}
#[cfg(feature = "diesel")]
impl ToSql<Varchar, Pg> for Disabilities {
fn to_sql<W: Write>(&self, out: &mut Output<W, Pg>) -> serialize::Result {
match *self {
Disabilities::Autism => out.write_all(b"Autism")?,
Disabilities::PhysicalDisability => out.write_all(b"PhysicalDisability")?,
Disabilities::BehaviourDisorder => out.write_all(b"BehaviourDisorder")?,
Disabilities::VisionImpairment => out.write_all(b"VisionImpairment")?,
Disabilities::HearingImpairment => out.write_all(b"HearingImpairment")?,
Disabilities::DifficultiesInLearning => out.write_all(b"DifficultiesInLearning")?,
Disabilities::IntellectualDisability => out.write_all(b"IntellectualDisability")?,
Disabilities::LanguageDisorder => out.write_all(b"LanguageDisorder")?,
Disabilities::AcquiredBrainInjury => out.write_all(b"AcquiredBrainInjury")?,
Disabilities::MentalHealthDisorder => out.write_all(b"MentalHealthDisorder")?,
}
Ok(IsNull::No)
}
}
#[cfg(feature = "diesel")]
impl FromSql<Varchar, Pg> for Disabilities {
fn from_sql(bytes: Option<&<Pg as Backend>::RawValue>) -> deserialize::Result<Self> {
match not_none!(bytes) {
b"Autism" => Ok(Disabilities::Autism),
b"PhysicalDisability" => Ok(Disabilities::PhysicalDisability),
b"BehaviourDisorder" => Ok(Disabilities::BehaviourDisorder),
b"VisionImpairment" => Ok(Disabilities::VisionImpairment),
b"HearingImpairment" => Ok(Disabilities::HearingImpairment),
b"DifficultiesInLearning" => Ok(Disabilities::DifficultiesInLearning),
b"IntellectualDisability" => Ok(Disabilities::IntellectualDisability),
b"LanguageDisorder" => Ok(Disabilities::LanguageDisorder),
b"AcquiredBrainInjury" => Ok(Disabilities::AcquiredBrainInjury),
b"MentalHealthDisorder" => Ok(Disabilities::MentalHealthDisorder),
_ => Err("Unrecognized enum variant".into()),
}
}
}