Skip to main content

sea_query_sqlx/
sqlx_mysql.rs

1use crate::SqlxValues;
2use sea_query::{OptionEnum, Value};
3
4impl sqlx::IntoArguments<'_, sqlx::mysql::MySql> for SqlxValues {
5    fn into_arguments(self) -> sqlx::mysql::MySqlArguments {
6        let mut args = sqlx::mysql::MySqlArguments::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.add(i);
36                }
37                Value::Float(f) => {
38                    let _ = args.add(f);
39                }
40                Value::Double(d) => {
41                    let _ = args.add(d);
42                }
43                Value::String(s) => {
44                    let _ = args.add(s.as_deref());
45                }
46                Value::Enum(e) => {
47                    let value = match e {
48                        OptionEnum::Some(v) => Some(v.value.into_owned()),
49                        OptionEnum::None(_) => None,
50                    };
51                    let _ = args.add(value);
52                }
53                Value::Char(c) => {
54                    let _ = args.add(c.map(|c| c.to_string()));
55                }
56                Value::Bytes(b) => {
57                    let _ = args.add(b.as_deref());
58                }
59                #[cfg(feature = "with-chrono")]
60                Value::ChronoDate(d) => {
61                    let _ = args.add(d);
62                }
63                #[cfg(feature = "with-chrono")]
64                Value::ChronoTime(t) => {
65                    let _ = args.add(t);
66                }
67                #[cfg(feature = "with-chrono")]
68                Value::ChronoDateTime(t) => {
69                    let _ = args.add(t);
70                }
71                #[cfg(feature = "with-chrono")]
72                Value::ChronoDateTimeUtc(t) => {
73                    let _ = args.add(t);
74                }
75                #[cfg(feature = "with-chrono")]
76                Value::ChronoDateTimeLocal(t) => {
77                    let _ = args.add(t);
78                }
79                #[cfg(feature = "with-chrono")]
80                Value::ChronoDateTimeWithTimeZone(t) => {
81                    let _ = args
82                        .add(Value::ChronoDateTimeWithTimeZone(t).chrono_as_naive_utc_in_string());
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-uuid")]
101                Value::Uuid(uuid) => {
102                    let _ = args.add(uuid);
103                }
104                #[cfg(feature = "with-rust_decimal")]
105                Value::Decimal(d) => {
106                    let _ = args.add(d);
107                }
108                #[cfg(feature = "with-bigdecimal")]
109                Value::BigDecimal(d) => {
110                    let _ = args.add(d.as_deref());
111                }
112                #[cfg(feature = "with-json")]
113                Value::Json(j) => {
114                    let _ = args.add(j.as_deref());
115                }
116                #[cfg(feature = "postgres-array")]
117                Value::Array(_, _) => {
118                    panic!("Mysql doesn't support array arguments");
119                }
120                #[cfg(feature = "postgres-vector")]
121                Value::Vector(_) => {
122                    panic!("Mysql doesn't support vector arguments");
123                }
124                #[cfg(feature = "with-ipnetwork")]
125                Value::IpNetwork(_) => {
126                    panic!("Mysql doesn't support IpNetwork arguments");
127                }
128                #[cfg(feature = "with-mac_address")]
129                Value::MacAddress(_) => {
130                    panic!("Mysql doesn't support MacAddress arguments");
131                } /* #[cfg(feature = "postgres-range")]
132                  Value::Range(_) => {
133                      panic!("Mysql doesn't support PgRange arguments");
134                  } */
135            }
136        }
137        args
138    }
139}