start diesel setup
This commit is contained in:
46
src/status.rs
Normal file
46
src/status.rs
Normal file
@ -0,0 +1,46 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Clone, Copy, PartialEq, Eq, Serialize, Deserialize, diesel::expression::AsExpression, diesel::deserialize::FromSqlRow)]
|
||||
#[diesel(sql_type = diesel::sql_types::SmallInt)]
|
||||
pub enum ServerStatus {
|
||||
Archived,
|
||||
Stopped,
|
||||
Stopping,
|
||||
Starting,
|
||||
Running,
|
||||
Unknown,
|
||||
}
|
||||
|
||||
impl<DB: diesel::backend::Backend> diesel::serialize::ToSql<diesel::sql_types::SmallInt, DB> for ServerStatus
|
||||
where
|
||||
<DB as diesel::backend::Backend>::RawValue: for<'a> diesel::serialize::ToSql<diesel::sql_types::SmallInt, DB<'a>> + ?Sized,
|
||||
{
|
||||
fn to_sql<'b>(&'b self, out: &mut diesel::serialize::Output<'b, '_, DB>) -> diesel::serialize::Result<diesel::serialize::IsNull> {
|
||||
let val = match self {
|
||||
ServerStatus::Archived => 0i16,
|
||||
ServerStatus::Stopped => 1i16,
|
||||
ServerStatus::Stopping => 2i16,
|
||||
ServerStatus::Starting => 3i16,
|
||||
ServerStatus::Running => 4i16,
|
||||
ServerStatus::Unknown => -1i16,
|
||||
};
|
||||
diesel::serialize::ToSql::<diesel::sql_types::SmallInt, DB>::to_sql(&val, out)
|
||||
}
|
||||
}
|
||||
|
||||
impl<DB: diesel::backend::Backend> diesel::deserialize::FromSql<diesel::sql_types::SmallInt, DB> for ServerStatus
|
||||
where
|
||||
<DB as diesel::backend::Backend>::RawValue: for<'a> diesel::deserialize::FromSql<'a, diesel::sql_types::SmallInt, DB> + ?Sized,
|
||||
{
|
||||
fn from_sql(bytes: <DB as diesel::backend::Backend>::RawValue<'_>) -> diesel::deserialize::Result<Self> {
|
||||
let val = i16::from_sql(bytes)?;
|
||||
match val {
|
||||
0 => Ok(ServerStatus::Archived),
|
||||
1 => Ok(ServerStatus::Stopped),
|
||||
2 => Ok(ServerStatus::Stopping),
|
||||
3 => Ok(ServerStatus::Starting),
|
||||
4 => Ok(ServerStatus::Running),
|
||||
_ => Ok(ServerStatus::Unknown),
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user