Skip to main content

sea_query_sqlx/
sqlx_sqlite.rs

1use crate::SqlxValues;
2use sea_query::{OptionEnum, Value};
3
4impl sqlx::IntoArguments<sqlx::sqlite::Sqlite> for SqlxValues {
5    fn into_arguments(self) -> sqlx::sqlite::SqliteArguments {
6        let mut args = sqlx::sqlite::SqliteArguments::default();
7        for arg in self.0.into_iter() {
8            use sqlx::Arguments;
9            match arg {
10                Value::Bool(b) => {
11                    let _ = args.add(b);
12                }
13                Value::TinyInt(i) => {
14                    let _ = args.add(i);
15                }
16                Value::SmallInt(i) => {
17                    let _ = args.add(i);
18                }
19                Value::Int(i) => {
20                    let _ = args.add(i);
21                }
22                Value::BigInt(i) => {
23                    let _ = args.add(i);
24                }
25                Value::TinyUnsigned(i) => {
26                    let _ = args.add(i);
27                }
28                Value::SmallUnsigned(i) => {
29                    let _ = args.add(i);
30                }
31                Value::Unsigned(i) => {
32                    let _ = args.add(i);
33                }
34                Value::BigUnsigned(i) => {
35                    let _ = args
36                        .add(i.map(|i| <i64 as std::convert::TryFrom<u64>>::try_from(i).unwrap()));
37                }
38                Value::Float(f) => {
39                    let _ = args.add(f);
40                }
41                Value::Double(d) => {
42                    let _ = args.add(d);
43                }
44                Value::String(s) => {
45                    let _ = args.add(s);
46                }
47                Value::Enum(e) => {
48                    let value = match e {
49                        OptionEnum::Some(v) => Some(v.value.into_owned()),
50                        OptionEnum::None(_) => None,
51                    };
52                    let _ = args.add(value);
53                }
54                Value::Char(c) => {
55                    let _ = args.add(c.map(|c| c.to_string()));
56                }
57                Value::Bytes(b) => {
58                    let _ = args.add(b);
59                }
60                #[cfg(feature = "with-chrono")]
61                Value::ChronoDate(d) => {
62                    let _ = args.add(d);
63                }
64                #[cfg(feature = "with-chrono")]
65                Value::ChronoTime(t) => {
66                    let _ = args.add(t);
67                }
68                #[cfg(feature = "with-chrono")]
69                Value::ChronoDateTime(t) => {
70                    let _ = args.add(t);
71                }
72                #[cfg(feature = "with-chrono")]
73                Value::ChronoDateTimeUtc(t) => {
74                    let _ = args.add(t);
75                }
76                #[cfg(feature = "with-chrono")]
77                Value::ChronoDateTimeLocal(t) => {
78                    let _ = args.add(t);
79                }
80                #[cfg(feature = "with-chrono")]
81                Value::ChronoDateTimeWithTimeZone(t) => {
82                    let _ = args.add(t);
83                }
84                #[cfg(feature = "with-time")]
85                Value::TimeDate(t) => {
86                    let _ = args.add(t);
87                }
88                #[cfg(feature = "with-time")]
89                Value::TimeTime(t) => {
90                    let _ = args.add(t);
91                }
92                #[cfg(feature = "with-time")]
93                Value::TimeDateTime(t) => {
94                    let _ = args.add(t);
95                }
96                #[cfg(feature = "with-time")]
97                Value::TimeDateTimeWithTimeZone(t) => {
98                    let _ = args.add(t);
99                }
100                #[cfg(feature = "with-jiff")]
101                Value::JiffDate(j) => {
102                    let _ = args.add(j.map(|j| j.to_string()));
103                }
104                #[cfg(feature = "with-jiff")]
105                Value::JiffTime(j) => {
106                    let _ = args.add(j.map(|j| j.to_string()));
107                }
108                #[cfg(feature = "with-jiff")]
109                Value::JiffDateTime(j) => {
110                    let _ = args.add(j.map(|j| j.to_string()));
111                }
112                #[cfg(feature = "with-jiff")]
113                Value::JiffTimestamp(j) => {
114                    let _ = args.add(j.map(|j| j.to_string()));
115                }
116                #[cfg(feature = "with-uuid")]
117                Value::Uuid(uuid) => {
118                    let _ = args.add(uuid);
119                }
120                #[cfg(feature = "with-rust_decimal")]
121                Value::Decimal(decimal) => {
122                    let _ = args.add(decimal.map(|d| d.to_string()));
123                }
124                #[cfg(feature = "with-bigdecimal")]
125                Value::BigDecimal(big_decimal) => {
126                    let _ = args.add(big_decimal.map(|d| d.to_string()));
127                }
128                #[cfg(feature = "with-json")]
129                Value::Json(j) => {
130                    let _ = args.add(j.map(|j| *j));
131                }
132                #[cfg(feature = "with-ipnetwork")]
133                Value::IpNetwork(_) => {
134                    panic!("Sqlite doesn't support IpNetwork arguments");
135                }
136                #[cfg(feature = "with-mac_address")]
137                Value::MacAddress(_) => {
138                    panic!("Sqlite doesn't support MacAddress arguments");
139                }
140                #[cfg(feature = "postgres-array")]
141                Value::Array(_, _) => {
142                    panic!("Sqlite doesn't support array arguments");
143                }
144                #[cfg(feature = "postgres-vector")]
145                Value::Vector(_) => {
146                    panic!("Sqlite doesn't support vector arguments");
147                } /* #[cfg(feature = "postgres-range")]
148                  Value::Range(_) => {
149                  panic!("Sqlite doesn't support PgRange arguments");
150                  } */
151            }
152        }
153        args
154    }
155}