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}