Skip to main content

d1_orm/
types.rs

1#[derive(Clone, Debug)]
2pub enum DatabaseValue {
3    Null,
4    Bool(bool),
5    Int(i64),
6    UInt(u64),
7    Real(f64),
8    Text(String),
9    Blob(Vec<u8>),
10}
11
12impl From<i32> for DatabaseValue {
13    fn from(v: i32) -> Self {
14        DatabaseValue::Int(v as i64)
15    }
16}
17
18impl From<u32> for DatabaseValue {
19    fn from(v: u32) -> Self {
20        DatabaseValue::UInt(v as u64)
21    }
22}
23
24impl From<i64> for DatabaseValue {
25    fn from(v: i64) -> Self {
26        DatabaseValue::Int(v)
27    }
28}
29
30impl From<u64> for DatabaseValue {
31    fn from(v: u64) -> Self {
32        DatabaseValue::UInt(v)
33    }
34}
35
36impl From<bool> for DatabaseValue {
37    fn from(v: bool) -> Self {
38        DatabaseValue::Bool(v)
39    }
40}
41
42impl From<f64> for DatabaseValue {
43    fn from(v: f64) -> Self {
44        DatabaseValue::Real(v)
45    }
46}
47
48impl From<String> for DatabaseValue {
49    fn from(v: String) -> Self {
50        DatabaseValue::Text(v)
51    }
52}
53
54impl From<&str> for DatabaseValue {
55    fn from(v: &str) -> Self {
56        DatabaseValue::Text(v.to_string())
57    }
58}
59
60impl<T> From<Option<T>> for DatabaseValue
61where
62    T: Into<DatabaseValue>,
63{
64    fn from(v: Option<T>) -> Self {
65        match v {
66            Some(v) => v.into(),
67            None => DatabaseValue::Null,
68        }
69    }
70}
71
72impl From<&DatabaseValue> for DatabaseValue {
73    fn from(v: &DatabaseValue) -> Self {
74        v.clone()
75    }
76}
77
78impl From<Vec<u8>> for DatabaseValue {
79    fn from(v: Vec<u8>) -> Self {
80        DatabaseValue::Blob(v)
81    }
82}