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
30
31
32
33
34
35
use {
crate::{
data::{Interval, Value},
executor::evaluate::Evaluated,
result::{Error, Result},
},
chrono::{NaiveDate, NaiveDateTime, NaiveTime},
std::{
convert::{TryFrom, TryInto},
fmt::Debug,
},
};
#[derive(PartialEq, Eq, Hash, Clone, Debug)]
pub enum GroupKey {
I64(i64),
Bool(bool),
Str(String),
Date(NaiveDate),
Timestamp(NaiveDateTime),
Time(NaiveTime),
Interval(Interval),
None,
}
impl TryFrom<&Evaluated<'_>> for GroupKey {
type Error = Error;
fn try_from(evaluated: &Evaluated<'_>) -> Result<Self> {
match evaluated {
Evaluated::Literal(l) => Value::try_from(l)?.try_into(),
Evaluated::Value(v) => v.as_ref().try_into(),
}
}
}