1use crate::quote;
2use std::borrow::{Cow, ToOwned};
3
4pub trait SqlArg {
5 fn sql_arg(&self) -> String;
6}
7
8impl SqlArg for str {
9 fn sql_arg(&self) -> String {
10 quote(self)
11 }
12}
13
14impl SqlArg for &str {
15 fn sql_arg(&self) -> String {
16 quote(self)
17 }
18}
19
20impl SqlArg for Cow<'_, str> {
21 fn sql_arg(&self) -> String {
22 quote(self[..].to_owned())
23 }
24}
25
26impl SqlArg for String {
27 fn sql_arg(&self) -> String {
28 quote(self)
29 }
30}
31
32impl SqlArg for i8 {
33 fn sql_arg(&self) -> String {
34 self.to_string()
35 }
36}
37
38impl SqlArg for &i8 {
39 fn sql_arg(&self) -> String {
40 self.to_string()
41 }
42}
43
44impl SqlArg for u8 {
45 fn sql_arg(&self) -> String {
46 self.to_string()
47 }
48}
49
50impl SqlArg for &u8 {
51 fn sql_arg(&self) -> String {
52 self.to_string()
53 }
54}
55
56impl SqlArg for i16 {
57 fn sql_arg(&self) -> String {
58 self.to_string()
59 }
60}
61
62impl SqlArg for &i16 {
63 fn sql_arg(&self) -> String {
64 self.to_string()
65 }
66}
67
68impl SqlArg for u16 {
69 fn sql_arg(&self) -> String {
70 self.to_string()
71 }
72}
73
74impl SqlArg for &u16 {
75 fn sql_arg(&self) -> String {
76 self.to_string()
77 }
78}
79
80impl SqlArg for i32 {
81 fn sql_arg(&self) -> String {
82 self.to_string()
83 }
84}
85
86impl SqlArg for &i32 {
87 fn sql_arg(&self) -> String {
88 self.to_string()
89 }
90}
91
92impl SqlArg for u32 {
93 fn sql_arg(&self) -> String {
94 self.to_string()
95 }
96}
97
98impl SqlArg for &u32 {
99 fn sql_arg(&self) -> String {
100 self.to_string()
101 }
102}
103
104impl SqlArg for i64 {
105 fn sql_arg(&self) -> String {
106 self.to_string()
107 }
108}
109
110impl SqlArg for &i64 {
111 fn sql_arg(&self) -> String {
112 self.to_string()
113 }
114}
115
116impl SqlArg for u64 {
117 fn sql_arg(&self) -> String {
118 self.to_string()
119 }
120}
121
122impl SqlArg for &u64 {
123 fn sql_arg(&self) -> String {
124 self.to_string()
125 }
126}
127
128impl SqlArg for i128 {
129 fn sql_arg(&self) -> String {
130 self.to_string()
131 }
132}
133
134impl SqlArg for &i128 {
135 fn sql_arg(&self) -> String {
136 self.to_string()
137 }
138}
139
140impl SqlArg for u128 {
141 fn sql_arg(&self) -> String {
142 self.to_string()
143 }
144}
145
146impl SqlArg for &u128 {
147 fn sql_arg(&self) -> String {
148 self.to_string()
149 }
150}
151
152impl SqlArg for isize {
153 fn sql_arg(&self) -> String {
154 self.to_string()
155 }
156}
157
158impl SqlArg for &isize {
159 fn sql_arg(&self) -> String {
160 self.to_string()
161 }
162}
163
164impl SqlArg for usize {
165 fn sql_arg(&self) -> String {
166 self.to_string()
167 }
168}
169
170impl SqlArg for &usize {
171 fn sql_arg(&self) -> String {
172 self.to_string()
173 }
174}
175
176impl SqlArg for f32 {
177 fn sql_arg(&self) -> String {
178 self.to_string()
179 }
180}
181
182impl SqlArg for &f32 {
183 fn sql_arg(&self) -> String {
184 self.to_string()
185 }
186}
187
188impl SqlArg for f64 {
189 fn sql_arg(&self) -> String {
190 self.to_string()
191 }
192}
193
194impl SqlArg for &f64 {
195 fn sql_arg(&self) -> String {
196 self.to_string()
197 }
198}
199
200impl SqlArg for bool {
201 fn sql_arg(&self) -> String {
202 String::from(if *self { "TRUE" } else { "FALSE" })
203 }
204}
205
206impl SqlArg for &bool {
207 fn sql_arg(&self) -> String {
208 String::from(if **self { "TRUE" } else { "FALSE" })
209 }
210}
211
212impl<T: SqlArg> SqlArg for Option<T> {
213 fn sql_arg(&self) -> String {
214 match &*self {
215 Some(value) => value.sql_arg(),
216 None => String::from("NULL"),
217 }
218 }
219}
220
221impl<T: SqlArg> SqlArg for &Option<T> {
222 fn sql_arg(&self) -> String {
223 match &**self {
224 Some(value) => value.sql_arg(),
225 None => String::from("NULL"),
226 }
227 }
228}