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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
mod cast;
use {
crate::Value,
serde::{Deserialize, Serialize},
sqlparser::ast::DataType,
std::fmt::Debug,
};
#[derive(Clone, Serialize, Deserialize, Debug, PartialEq, Eq)]
pub enum ValueType {
Bool,
U64,
I64,
F64,
Str,
Timestamp,
Any,
}
impl Default for ValueType {
fn default() -> Self {
Self::Any
}
}
impl From<&Value> for ValueType {
fn from(value: &Value) -> Self {
match value {
Value::Bool(_) => ValueType::Bool,
Value::U64(_) => ValueType::U64,
Value::I64(_) => ValueType::I64,
Value::F64(_) => ValueType::F64,
Value::Str(_) => ValueType::Str,
Value::Timestamp(_) => ValueType::Timestamp,
_ => ValueType::Any,
}
}
}
impl From<DataType> for ValueType {
fn from(data_type: DataType) -> Self {
match data_type {
DataType::Boolean => ValueType::Bool,
DataType::UnsignedInt(_) => ValueType::U64,
DataType::Int(_) => ValueType::I64,
DataType::Float(_) => ValueType::F64,
DataType::Text => ValueType::Str,
DataType::Timestamp => ValueType::Timestamp,
_ => ValueType::Any,
}
}
}