assignmentlib/enums/
accessibility.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 Accessibility {
All,
Private,
Organisational,
Districtal,
Regional,
National,
Public,
Special,
Federal,
SystemWide,
School,
}
#[cfg(feature = "diesel")]
impl ToSql<Varchar, Pg> for Accessibility {
fn to_sql<W: Write>(&self, out: &mut Output<W, Pg>) -> serialize::Result {
match *self {
Accessibility::All => out.write_all(b"All")?,
Accessibility::Private => out.write_all(b"Private")?,
Accessibility::Organisational => out.write_all(b"Organisational")?,
Accessibility::Districtal => out.write_all(b"Districtal")?,
Accessibility::Regional => out.write_all(b"Regional")?,
Accessibility::National => out.write_all(b"National")?,
Accessibility::Public => out.write_all(b"Public")?,
Accessibility::Special => out.write_all(b"Special")?,
Accessibility::Federal => out.write_all(b"Federal")?,
Accessibility::SystemWide => out.write_all(b"SystemWide")?,
Accessibility::School => out.write_all(b"School")?,
}
Ok(IsNull::No)
}
}
#[cfg(feature = "diesel")]
impl FromSql<Varchar, Pg> for Accessibility {
fn from_sql(bytes: Option<&<Pg as Backend>::RawValue>) -> deserialize::Result<Self> {
match not_none!(bytes) {
b"All" => Ok(Accessibility::All),
b"Private" => Ok(Accessibility::Private),
b"Organisational" => Ok(Accessibility::Organisational),
b"Districtal" => Ok(Accessibility::Districtal),
b"Regional" => Ok(Accessibility::Regional),
b"National" => Ok(Accessibility::National),
b"Public" => Ok(Accessibility::Public),
b"Special" => Ok(Accessibility::Special),
b"Federal" => Ok(Accessibility::Federal),
b"SystemWide" => Ok(Accessibility::SystemWide),
b"School" => Ok(Accessibility::School),
_ => Err("Unrecognized enum variant".into()),
}
}
}