1use crate::{IntoSql, TokenRow};
2
3pub trait IntoRow<'a> {
5 fn into_row(self) -> TokenRow<'a>;
7}
8
9impl<'a, A> IntoRow<'a> for A
10where
11 A: IntoSql<'a>,
12{
13 fn into_row(self) -> TokenRow<'a> {
14 let mut row = TokenRow::with_capacity(1);
15 row.push(self.into_sql());
16 row
17 }
18}
19
20impl<'a, A, B> IntoRow<'a> for (A, B)
21where
22 A: IntoSql<'a>,
23 B: IntoSql<'a>,
24{
25 fn into_row(self) -> TokenRow<'a> {
26 let mut row = TokenRow::with_capacity(2);
27 row.push(self.0.into_sql());
28 row.push(self.1.into_sql());
29 row
30 }
31}
32
33impl<'a, A, B, C> IntoRow<'a> for (A, B, C)
34where
35 A: IntoSql<'a>,
36 B: IntoSql<'a>,
37 C: IntoSql<'a>,
38{
39 fn into_row(self) -> TokenRow<'a> {
40 let mut row = TokenRow::with_capacity(3);
41 row.push(self.0.into_sql());
42 row.push(self.1.into_sql());
43 row.push(self.2.into_sql());
44 row
45 }
46}
47
48impl<'a, A, B, C, D> IntoRow<'a> for (A, B, C, D)
49where
50 A: IntoSql<'a>,
51 B: IntoSql<'a>,
52 C: IntoSql<'a>,
53 D: IntoSql<'a>,
54{
55 fn into_row(self) -> TokenRow<'a> {
56 let mut row = TokenRow::with_capacity(4);
57 row.push(self.0.into_sql());
58 row.push(self.1.into_sql());
59 row.push(self.2.into_sql());
60 row.push(self.3.into_sql());
61 row
62 }
63}
64
65impl<'a, A, B, C, D, E> IntoRow<'a> for (A, B, C, D, E)
66where
67 A: IntoSql<'a>,
68 B: IntoSql<'a>,
69 C: IntoSql<'a>,
70 D: IntoSql<'a>,
71 E: IntoSql<'a>,
72{
73 fn into_row(self) -> TokenRow<'a> {
74 let mut row = TokenRow::with_capacity(5);
75 row.push(self.0.into_sql());
76 row.push(self.1.into_sql());
77 row.push(self.2.into_sql());
78 row.push(self.3.into_sql());
79 row.push(self.4.into_sql());
80 row
81 }
82}
83
84impl<'a, A, B, C, D, E, F> IntoRow<'a> for (A, B, C, D, E, F)
85where
86 A: IntoSql<'a>,
87 B: IntoSql<'a>,
88 C: IntoSql<'a>,
89 D: IntoSql<'a>,
90 E: IntoSql<'a>,
91 F: IntoSql<'a>,
92{
93 fn into_row(self) -> TokenRow<'a> {
94 let mut row = TokenRow::with_capacity(6);
95 row.push(self.0.into_sql());
96 row.push(self.1.into_sql());
97 row.push(self.2.into_sql());
98 row.push(self.3.into_sql());
99 row.push(self.4.into_sql());
100 row.push(self.5.into_sql());
101 row
102 }
103}
104
105impl<'a, A, B, C, D, E, F, G> IntoRow<'a> for (A, B, C, D, E, F, G)
106where
107 A: IntoSql<'a>,
108 B: IntoSql<'a>,
109 C: IntoSql<'a>,
110 D: IntoSql<'a>,
111 E: IntoSql<'a>,
112 F: IntoSql<'a>,
113 G: IntoSql<'a>,
114{
115 fn into_row(self) -> TokenRow<'a> {
116 let mut row = TokenRow::with_capacity(7);
117 row.push(self.0.into_sql());
118 row.push(self.1.into_sql());
119 row.push(self.2.into_sql());
120 row.push(self.3.into_sql());
121 row.push(self.4.into_sql());
122 row.push(self.5.into_sql());
123 row.push(self.6.into_sql());
124 row
125 }
126}
127
128impl<'a, A, B, C, D, E, F, G, H> IntoRow<'a> for (A, B, C, D, E, F, G, H)
129where
130 A: IntoSql<'a>,
131 B: IntoSql<'a>,
132 C: IntoSql<'a>,
133 D: IntoSql<'a>,
134 E: IntoSql<'a>,
135 F: IntoSql<'a>,
136 G: IntoSql<'a>,
137 H: IntoSql<'a>,
138{
139 fn into_row(self) -> TokenRow<'a> {
140 let mut row = TokenRow::with_capacity(8);
141 row.push(self.0.into_sql());
142 row.push(self.1.into_sql());
143 row.push(self.2.into_sql());
144 row.push(self.3.into_sql());
145 row.push(self.4.into_sql());
146 row.push(self.5.into_sql());
147 row.push(self.6.into_sql());
148 row.push(self.7.into_sql());
149 row
150 }
151}
152
153impl<'a, A, B, C, D, E, F, G, H, I> IntoRow<'a> for (A, B, C, D, E, F, G, H, I)
154where
155 A: IntoSql<'a>,
156 B: IntoSql<'a>,
157 C: IntoSql<'a>,
158 D: IntoSql<'a>,
159 E: IntoSql<'a>,
160 F: IntoSql<'a>,
161 G: IntoSql<'a>,
162 H: IntoSql<'a>,
163 I: IntoSql<'a>,
164{
165 fn into_row(self) -> TokenRow<'a> {
166 let mut row = TokenRow::with_capacity(9);
167 row.push(self.0.into_sql());
168 row.push(self.1.into_sql());
169 row.push(self.2.into_sql());
170 row.push(self.3.into_sql());
171 row.push(self.4.into_sql());
172 row.push(self.5.into_sql());
173 row.push(self.6.into_sql());
174 row.push(self.7.into_sql());
175 row.push(self.8.into_sql());
176 row
177 }
178}
179
180impl<'a, A, B, C, D, E, F, G, H, I, J> IntoRow<'a> for (A, B, C, D, E, F, G, H, I, J)
181where
182 A: IntoSql<'a>,
183 B: IntoSql<'a>,
184 C: IntoSql<'a>,
185 D: IntoSql<'a>,
186 E: IntoSql<'a>,
187 F: IntoSql<'a>,
188 G: IntoSql<'a>,
189 H: IntoSql<'a>,
190 I: IntoSql<'a>,
191 J: IntoSql<'a>,
192{
193 fn into_row(self) -> TokenRow<'a> {
194 let mut row = TokenRow::with_capacity(10);
195 row.push(self.0.into_sql());
196 row.push(self.1.into_sql());
197 row.push(self.2.into_sql());
198 row.push(self.3.into_sql());
199 row.push(self.4.into_sql());
200 row.push(self.5.into_sql());
201 row.push(self.6.into_sql());
202 row.push(self.7.into_sql());
203 row.push(self.8.into_sql());
204 row.push(self.9.into_sql());
205 row
206 }
207}