tiberius/tds/codec/token/token_row/
into_row.rs

1use crate::{IntoSql, TokenRow};
2
3/// create a TokenRow from list of values
4pub trait IntoRow<'a> {
5    /// create a TokenRow from list of values which implements IntoSQL
6    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}