senax_mysql_parser/
order.rs1use 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}