32 lines
689 B
Rust
32 lines
689 B
Rust
use crate::UnsupportedEnumValue;
|
|
|
|
#[derive(sqlx::Type, Debug, Clone, Copy, PartialEq)]
|
|
#[sqlx(type_name = "role", rename_all = "lowercase")]
|
|
pub enum Role {
|
|
Staff = 1,
|
|
AreaManager = 10,
|
|
Admin = 100,
|
|
}
|
|
|
|
impl TryFrom<u8> for Role {
|
|
type Error = UnsupportedEnumValue;
|
|
|
|
fn try_from(value: u8) -> Result<Self, Self::Error> {
|
|
match value {
|
|
1 => Ok(Role::Staff),
|
|
10 => Ok(Role::AreaManager),
|
|
100 => Ok(Role::Admin),
|
|
_ => Err(UnsupportedEnumValue {
|
|
value,
|
|
enum_name: "Role",
|
|
}),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Default for Role {
|
|
fn default() -> Self {
|
|
Self::Staff
|
|
}
|
|
}
|