senax_mysql_parser/
order.rs

1use nom::Parser;
2use serde::Deserialize;
3use serde::Serialize;
4use std::fmt;
5use std::str;
6
7use nom::IResult;
8use nom::branch::alt;
9use nom::bytes::complete::tag_no_case;
10use nom::combinator::map;
11
12#[derive(Clone, Debug, Hash, PartialEq, Eq, Serialize, Deserialize)]
13pub enum OrderType {
14    OrderAscending,
15    OrderDescending,
16}
17
18impl fmt::Display for OrderType {
19    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20        match *self {
21            OrderType::OrderAscending => write!(f, "ASC"),
22            OrderType::OrderDescending => write!(f, "DESC"),
23        }
24    }
25}
26
27pub fn order_type(i: &[u8]) -> IResult<&[u8], OrderType> {
28    alt((
29        map(tag_no_case("desc"), |_| OrderType::OrderDescending),
30        map(tag_no_case("asc"), |_| OrderType::OrderAscending),
31    ))
32    .parse(i)
33}