conspectuslib/enums/
scenario_type.rsuse serde::Deserialize;
use serde::Serialize;
#[cfg(feature = "diesel")]
use {
diesel::backend::Backend,
diesel::deserialize::FromSql,
diesel::pg::Pg,
diesel::serialize::{IsNull, Output, ToSql},
diesel::sql_types::Varchar,
diesel::{deserialize, not_none, serialize},
std::io::Write,
};
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
#[cfg_attr(
feature = "diesel",
derive(AsExpression, FromSqlRow),
sql_type = "Varchar"
)]
pub enum ScenarioType {
Video,
FaceToFace,
OnlineCompetition,
Conference,
VRActivity,
Individual,
Broadcast,
Quest,
ParentTeacherMeeting,
CommonLesson,
}
#[cfg(feature = "diesel")]
impl ToSql<Varchar, Pg> for ScenarioType {
fn to_sql<W: Write>(&self, out: &mut Output<W, Pg>) -> serialize::Result {
match *self {
ScenarioType::Video => out.write_all(b"Video")?,
ScenarioType::FaceToFace => out.write_all(b"FaceToFace")?,
ScenarioType::OnlineCompetition => out.write_all(b"OnlineCompetition")?,
ScenarioType::Conference => out.write_all(b"Conference")?,
ScenarioType::VRActivity => out.write_all(b"VRActivity")?,
ScenarioType::Individual => out.write_all(b"Individual")?,
ScenarioType::Broadcast => out.write_all(b"Broadcast")?,
ScenarioType::Quest => out.write_all(b"Quest")?,
ScenarioType::ParentTeacherMeeting => out.write_all(b"ParentTeacherMeeting")?,
ScenarioType::CommonLesson => out.write_all(b"CommonLesson")?,
}
Ok(IsNull::No)
}
}
#[cfg(feature = "diesel")]
impl FromSql<Varchar, Pg> for ScenarioType {
fn from_sql(bytes: Option<&<Pg as Backend>::RawValue>) -> deserialize::Result<Self> {
match not_none!(bytes) {
b"Video" => Ok(ScenarioType::Video),
b"FaceToFace" => Ok(ScenarioType::FaceToFace),
b"OnlineCompetition" => Ok(ScenarioType::OnlineCompetition),
b"Conference" => Ok(ScenarioType::Conference),
b"VRActivity" => Ok(ScenarioType::VRActivity),
b"Individual" => Ok(ScenarioType::Individual),
b"Broadcast" => Ok(ScenarioType::Broadcast),
b"Quest" => Ok(ScenarioType::Quest),
b"ParentTeacherMeeting" => Ok(ScenarioType::ParentTeacherMeeting),
b"CommonLesson" => Ok(ScenarioType::CommonLesson),
_ => Err("Unrecognized enum variant".into()),
}
}
}
impl Default for ScenarioType {
fn default() -> ScenarioType {
ScenarioType::FaceToFace
}
}