1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use rocket::request::FromFormValue;
use rocket::http::RawStr;

#[derive(Serialize, Deserialize, Clone, PartialEq)]
pub enum AscDesc {
    ASC,
    DESC,
}

impl AscDesc {
    pub fn as_str(&self) -> &str {
        match self {
            &AscDesc::ASC => "ASC",
            &AscDesc::DESC => "DESC",
        }
    }
}

impl<'v> FromFormValue<'v> for AscDesc {
    type Error = ();

    fn from_form_value(form_value: &RawStr) -> Result<Self, <Self as FromFormValue>::Error> {
        Ok(match form_value.to_lowercase().as_str() {
            "asc" => AscDesc::ASC,
            "desc" => AscDesc::DESC,
            _ => AscDesc::ASC
        })
    }
}