1use super::*;
2
3mod rdbms_types {
4 use super::*;
5
6 impl From<v2::rdbms_types::Column> for v1::rdbms_types::Column {
7 fn from(value: v2::rdbms_types::Column) -> Self {
8 v1::rdbms_types::Column {
9 name: value.name,
10 data_type: value.data_type.into(),
11 }
12 }
13 }
14
15 impl From<spin::postgres::postgres::Column> for v1::rdbms_types::Column {
16 fn from(value: spin::postgres::postgres::Column) -> Self {
17 v1::rdbms_types::Column {
18 name: value.name,
19 data_type: value.data_type.into(),
20 }
21 }
22 }
23
24 impl From<spin::postgres::postgres::Column> for v2::rdbms_types::Column {
25 fn from(value: spin::postgres::postgres::Column) -> Self {
26 v2::rdbms_types::Column {
27 name: value.name,
28 data_type: value.data_type.into(),
29 }
30 }
31 }
32
33 impl From<v2::rdbms_types::DbValue> for v1::rdbms_types::DbValue {
34 fn from(value: v2::rdbms_types::DbValue) -> v1::rdbms_types::DbValue {
35 match value {
36 v2::rdbms_types::DbValue::Boolean(b) => v1::rdbms_types::DbValue::Boolean(b),
37 v2::rdbms_types::DbValue::Int8(i) => v1::rdbms_types::DbValue::Int8(i),
38 v2::rdbms_types::DbValue::Int16(i) => v1::rdbms_types::DbValue::Int16(i),
39 v2::rdbms_types::DbValue::Int32(i) => v1::rdbms_types::DbValue::Int32(i),
40 v2::rdbms_types::DbValue::Int64(i) => v1::rdbms_types::DbValue::Int64(i),
41 v2::rdbms_types::DbValue::Uint8(j) => v1::rdbms_types::DbValue::Uint8(j),
42 v2::rdbms_types::DbValue::Uint16(u) => v1::rdbms_types::DbValue::Uint16(u),
43 v2::rdbms_types::DbValue::Uint32(u) => v1::rdbms_types::DbValue::Uint32(u),
44 v2::rdbms_types::DbValue::Uint64(u) => v1::rdbms_types::DbValue::Uint64(u),
45 v2::rdbms_types::DbValue::Floating32(r) => v1::rdbms_types::DbValue::Floating32(r),
46 v2::rdbms_types::DbValue::Floating64(r) => v1::rdbms_types::DbValue::Floating64(r),
47 v2::rdbms_types::DbValue::Str(s) => v1::rdbms_types::DbValue::Str(s),
48 v2::rdbms_types::DbValue::Binary(b) => v1::rdbms_types::DbValue::Binary(b),
49 v2::rdbms_types::DbValue::DbNull => v1::rdbms_types::DbValue::DbNull,
50 v2::rdbms_types::DbValue::Unsupported => v1::rdbms_types::DbValue::Unsupported,
51 }
52 }
53 }
54
55 impl From<spin::postgres::postgres::DbValue> for v1::rdbms_types::DbValue {
56 fn from(value: spin::postgres::postgres::DbValue) -> v1::rdbms_types::DbValue {
57 match value {
58 spin::postgres::postgres::DbValue::Boolean(b) => {
59 v1::rdbms_types::DbValue::Boolean(b)
60 }
61 spin::postgres::postgres::DbValue::Int8(i) => v1::rdbms_types::DbValue::Int8(i),
62 spin::postgres::postgres::DbValue::Int16(i) => v1::rdbms_types::DbValue::Int16(i),
63 spin::postgres::postgres::DbValue::Int32(i) => v1::rdbms_types::DbValue::Int32(i),
64 spin::postgres::postgres::DbValue::Int64(i) => v1::rdbms_types::DbValue::Int64(i),
65 spin::postgres::postgres::DbValue::Floating32(r) => {
66 v1::rdbms_types::DbValue::Floating32(r)
67 }
68 spin::postgres::postgres::DbValue::Floating64(r) => {
69 v1::rdbms_types::DbValue::Floating64(r)
70 }
71 spin::postgres::postgres::DbValue::Str(s) => v1::rdbms_types::DbValue::Str(s),
72 spin::postgres::postgres::DbValue::Binary(b) => v1::rdbms_types::DbValue::Binary(b),
73 spin::postgres::postgres::DbValue::DbNull => v1::rdbms_types::DbValue::DbNull,
74 spin::postgres::postgres::DbValue::Unsupported => {
75 v1::rdbms_types::DbValue::Unsupported
76 }
77 _ => v1::rdbms_types::DbValue::Unsupported,
78 }
79 }
80 }
81
82 impl From<spin::postgres::postgres::DbValue> for v2::rdbms_types::DbValue {
83 fn from(value: spin::postgres::postgres::DbValue) -> v2::rdbms_types::DbValue {
84 match value {
85 spin::postgres::postgres::DbValue::Boolean(b) => {
86 v2::rdbms_types::DbValue::Boolean(b)
87 }
88 spin::postgres::postgres::DbValue::Int8(i) => v2::rdbms_types::DbValue::Int8(i),
89 spin::postgres::postgres::DbValue::Int16(i) => v2::rdbms_types::DbValue::Int16(i),
90 spin::postgres::postgres::DbValue::Int32(i) => v2::rdbms_types::DbValue::Int32(i),
91 spin::postgres::postgres::DbValue::Int64(i) => v2::rdbms_types::DbValue::Int64(i),
92 spin::postgres::postgres::DbValue::Floating32(r) => {
93 v2::rdbms_types::DbValue::Floating32(r)
94 }
95 spin::postgres::postgres::DbValue::Floating64(r) => {
96 v2::rdbms_types::DbValue::Floating64(r)
97 }
98 spin::postgres::postgres::DbValue::Str(s) => v2::rdbms_types::DbValue::Str(s),
99 spin::postgres::postgres::DbValue::Binary(b) => v2::rdbms_types::DbValue::Binary(b),
100 spin::postgres::postgres::DbValue::DbNull => v2::rdbms_types::DbValue::DbNull,
101 spin::postgres::postgres::DbValue::Unsupported => {
102 v2::rdbms_types::DbValue::Unsupported
103 }
104 _ => v2::rdbms_types::DbValue::Unsupported,
105 }
106 }
107 }
108
109 impl From<spin::postgres::postgres::DbDataType> for v1::rdbms_types::DbDataType {
110 fn from(value: spin::postgres::postgres::DbDataType) -> v1::rdbms_types::DbDataType {
111 match value {
112 spin::postgres::postgres::DbDataType::Boolean => {
113 v1::rdbms_types::DbDataType::Boolean
114 }
115 spin::postgres::postgres::DbDataType::Int8 => v1::rdbms_types::DbDataType::Int8,
116 spin::postgres::postgres::DbDataType::Int16 => v1::rdbms_types::DbDataType::Int16,
117 spin::postgres::postgres::DbDataType::Int32 => v1::rdbms_types::DbDataType::Int32,
118 spin::postgres::postgres::DbDataType::Int64 => v1::rdbms_types::DbDataType::Int64,
119 spin::postgres::postgres::DbDataType::Floating32 => {
120 v1::rdbms_types::DbDataType::Floating32
121 }
122 spin::postgres::postgres::DbDataType::Floating64 => {
123 v1::rdbms_types::DbDataType::Floating64
124 }
125 spin::postgres::postgres::DbDataType::Str => v1::rdbms_types::DbDataType::Str,
126 spin::postgres::postgres::DbDataType::Binary => v1::rdbms_types::DbDataType::Binary,
127 spin::postgres::postgres::DbDataType::Other => v1::rdbms_types::DbDataType::Other,
128 _ => v1::rdbms_types::DbDataType::Other,
129 }
130 }
131 }
132
133 impl From<spin::postgres::postgres::DbDataType> for v2::rdbms_types::DbDataType {
134 fn from(value: spin::postgres::postgres::DbDataType) -> v2::rdbms_types::DbDataType {
135 match value {
136 spin::postgres::postgres::DbDataType::Boolean => {
137 v2::rdbms_types::DbDataType::Boolean
138 }
139 spin::postgres::postgres::DbDataType::Int8 => v2::rdbms_types::DbDataType::Int8,
140 spin::postgres::postgres::DbDataType::Int16 => v2::rdbms_types::DbDataType::Int16,
141 spin::postgres::postgres::DbDataType::Int32 => v2::rdbms_types::DbDataType::Int32,
142 spin::postgres::postgres::DbDataType::Int64 => v2::rdbms_types::DbDataType::Int64,
143 spin::postgres::postgres::DbDataType::Floating32 => {
144 v2::rdbms_types::DbDataType::Floating32
145 }
146 spin::postgres::postgres::DbDataType::Floating64 => {
147 v2::rdbms_types::DbDataType::Floating64
148 }
149 spin::postgres::postgres::DbDataType::Str => v2::rdbms_types::DbDataType::Str,
150 spin::postgres::postgres::DbDataType::Binary => v2::rdbms_types::DbDataType::Binary,
151 spin::postgres::postgres::DbDataType::Other => v2::rdbms_types::DbDataType::Other,
152 _ => v2::rdbms_types::DbDataType::Other,
153 }
154 }
155 }
156
157 impl From<v2::rdbms_types::DbDataType> for v1::rdbms_types::DbDataType {
158 fn from(value: v2::rdbms_types::DbDataType) -> v1::rdbms_types::DbDataType {
159 match value {
160 v2::rdbms_types::DbDataType::Boolean => v1::rdbms_types::DbDataType::Boolean,
161 v2::rdbms_types::DbDataType::Int8 => v1::rdbms_types::DbDataType::Int8,
162 v2::rdbms_types::DbDataType::Int16 => v1::rdbms_types::DbDataType::Int16,
163 v2::rdbms_types::DbDataType::Int32 => v1::rdbms_types::DbDataType::Int32,
164 v2::rdbms_types::DbDataType::Int64 => v1::rdbms_types::DbDataType::Int64,
165 v2::rdbms_types::DbDataType::Uint8 => v1::rdbms_types::DbDataType::Uint8,
166 v2::rdbms_types::DbDataType::Uint16 => v1::rdbms_types::DbDataType::Uint16,
167 v2::rdbms_types::DbDataType::Uint32 => v1::rdbms_types::DbDataType::Uint32,
168 v2::rdbms_types::DbDataType::Uint64 => v1::rdbms_types::DbDataType::Uint64,
169 v2::rdbms_types::DbDataType::Floating32 => v1::rdbms_types::DbDataType::Floating32,
170 v2::rdbms_types::DbDataType::Floating64 => v1::rdbms_types::DbDataType::Floating64,
171 v2::rdbms_types::DbDataType::Str => v1::rdbms_types::DbDataType::Str,
172 v2::rdbms_types::DbDataType::Binary => v1::rdbms_types::DbDataType::Binary,
173 v2::rdbms_types::DbDataType::Other => v1::rdbms_types::DbDataType::Other,
174 }
175 }
176 }
177
178 impl From<v1::rdbms_types::ParameterValue> for v2::rdbms_types::ParameterValue {
179 fn from(value: v1::rdbms_types::ParameterValue) -> v2::rdbms_types::ParameterValue {
180 match value {
181 v1::rdbms_types::ParameterValue::Boolean(b) => {
182 v2::rdbms_types::ParameterValue::Boolean(b)
183 }
184 v1::rdbms_types::ParameterValue::Int8(i) => {
185 v2::rdbms_types::ParameterValue::Int8(i)
186 }
187 v1::rdbms_types::ParameterValue::Int16(i) => {
188 v2::rdbms_types::ParameterValue::Int16(i)
189 }
190 v1::rdbms_types::ParameterValue::Int32(i) => {
191 v2::rdbms_types::ParameterValue::Int32(i)
192 }
193 v1::rdbms_types::ParameterValue::Int64(i) => {
194 v2::rdbms_types::ParameterValue::Int64(i)
195 }
196 v1::rdbms_types::ParameterValue::Uint8(u) => {
197 v2::rdbms_types::ParameterValue::Uint8(u)
198 }
199 v1::rdbms_types::ParameterValue::Uint16(u) => {
200 v2::rdbms_types::ParameterValue::Uint16(u)
201 }
202 v1::rdbms_types::ParameterValue::Uint32(u) => {
203 v2::rdbms_types::ParameterValue::Uint32(u)
204 }
205 v1::rdbms_types::ParameterValue::Uint64(u) => {
206 v2::rdbms_types::ParameterValue::Uint64(u)
207 }
208 v1::rdbms_types::ParameterValue::Floating32(r) => {
209 v2::rdbms_types::ParameterValue::Floating32(r)
210 }
211 v1::rdbms_types::ParameterValue::Floating64(r) => {
212 v2::rdbms_types::ParameterValue::Floating64(r)
213 }
214 v1::rdbms_types::ParameterValue::Str(s) => v2::rdbms_types::ParameterValue::Str(s),
215 v1::rdbms_types::ParameterValue::Binary(b) => {
216 v2::rdbms_types::ParameterValue::Binary(b)
217 }
218 v1::rdbms_types::ParameterValue::DbNull => v2::rdbms_types::ParameterValue::DbNull,
219 }
220 }
221 }
222
223 impl TryFrom<v1::rdbms_types::ParameterValue> for spin::postgres::postgres::ParameterValue {
224 type Error = v1::postgres::PgError;
225
226 fn try_from(
227 value: v1::rdbms_types::ParameterValue,
228 ) -> Result<spin::postgres::postgres::ParameterValue, Self::Error> {
229 let converted = match value {
230 v1::rdbms_types::ParameterValue::Boolean(b) => {
231 spin::postgres::postgres::ParameterValue::Boolean(b)
232 }
233 v1::rdbms_types::ParameterValue::Int8(i) => {
234 spin::postgres::postgres::ParameterValue::Int8(i)
235 }
236 v1::rdbms_types::ParameterValue::Int16(i) => {
237 spin::postgres::postgres::ParameterValue::Int16(i)
238 }
239 v1::rdbms_types::ParameterValue::Int32(i) => {
240 spin::postgres::postgres::ParameterValue::Int32(i)
241 }
242 v1::rdbms_types::ParameterValue::Int64(i) => {
243 spin::postgres::postgres::ParameterValue::Int64(i)
244 }
245 v1::rdbms_types::ParameterValue::Uint8(_)
246 | v1::rdbms_types::ParameterValue::Uint16(_)
247 | v1::rdbms_types::ParameterValue::Uint32(_)
248 | v1::rdbms_types::ParameterValue::Uint64(_) => {
249 return Err(v1::postgres::PgError::ValueConversionFailed(
250 "Postgres does not support unsigned integers".to_owned(),
251 ));
252 }
253 v1::rdbms_types::ParameterValue::Floating32(r) => {
254 spin::postgres::postgres::ParameterValue::Floating32(r)
255 }
256 v1::rdbms_types::ParameterValue::Floating64(r) => {
257 spin::postgres::postgres::ParameterValue::Floating64(r)
258 }
259 v1::rdbms_types::ParameterValue::Str(s) => {
260 spin::postgres::postgres::ParameterValue::Str(s)
261 }
262 v1::rdbms_types::ParameterValue::Binary(b) => {
263 spin::postgres::postgres::ParameterValue::Binary(b)
264 }
265 v1::rdbms_types::ParameterValue::DbNull => {
266 spin::postgres::postgres::ParameterValue::DbNull
267 }
268 };
269 Ok(converted)
270 }
271 }
272
273 impl TryFrom<v2::rdbms_types::ParameterValue> for spin::postgres::postgres::ParameterValue {
274 type Error = v2::rdbms_types::Error;
275
276 fn try_from(
277 value: v2::rdbms_types::ParameterValue,
278 ) -> Result<spin::postgres::postgres::ParameterValue, Self::Error> {
279 let converted = match value {
280 v2::rdbms_types::ParameterValue::Boolean(b) => {
281 spin::postgres::postgres::ParameterValue::Boolean(b)
282 }
283 v2::rdbms_types::ParameterValue::Int8(i) => {
284 spin::postgres::postgres::ParameterValue::Int8(i)
285 }
286 v2::rdbms_types::ParameterValue::Int16(i) => {
287 spin::postgres::postgres::ParameterValue::Int16(i)
288 }
289 v2::rdbms_types::ParameterValue::Int32(i) => {
290 spin::postgres::postgres::ParameterValue::Int32(i)
291 }
292 v2::rdbms_types::ParameterValue::Int64(i) => {
293 spin::postgres::postgres::ParameterValue::Int64(i)
294 }
295 v2::rdbms_types::ParameterValue::Uint8(_)
296 | v2::rdbms_types::ParameterValue::Uint16(_)
297 | v2::rdbms_types::ParameterValue::Uint32(_)
298 | v2::rdbms_types::ParameterValue::Uint64(_) => {
299 return Err(v2::rdbms_types::Error::ValueConversionFailed(
300 "Postgres does not support unsigned integers".to_owned(),
301 ));
302 }
303 v2::rdbms_types::ParameterValue::Floating32(r) => {
304 spin::postgres::postgres::ParameterValue::Floating32(r)
305 }
306 v2::rdbms_types::ParameterValue::Floating64(r) => {
307 spin::postgres::postgres::ParameterValue::Floating64(r)
308 }
309 v2::rdbms_types::ParameterValue::Str(s) => {
310 spin::postgres::postgres::ParameterValue::Str(s)
311 }
312 v2::rdbms_types::ParameterValue::Binary(b) => {
313 spin::postgres::postgres::ParameterValue::Binary(b)
314 }
315 v2::rdbms_types::ParameterValue::DbNull => {
316 spin::postgres::postgres::ParameterValue::DbNull
317 }
318 };
319 Ok(converted)
320 }
321 }
322
323 impl From<v2::rdbms_types::Error> for v1::mysql::MysqlError {
324 fn from(error: v2::rdbms_types::Error) -> v1::mysql::MysqlError {
325 match error {
326 v2::mysql::Error::ConnectionFailed(e) => v1::mysql::MysqlError::ConnectionFailed(e),
327 v2::mysql::Error::BadParameter(e) => v1::mysql::MysqlError::BadParameter(e),
328 v2::mysql::Error::QueryFailed(e) => v1::mysql::MysqlError::QueryFailed(e),
329 v2::mysql::Error::ValueConversionFailed(e) => {
330 v1::mysql::MysqlError::ValueConversionFailed(e)
331 }
332 v2::mysql::Error::Other(e) => v1::mysql::MysqlError::OtherError(e),
333 }
334 }
335 }
336
337 impl From<spin::postgres::postgres::Error> for v1::postgres::PgError {
338 fn from(error: spin::postgres::postgres::Error) -> v1::postgres::PgError {
339 match error {
340 spin::postgres::postgres::Error::ConnectionFailed(e) => {
341 v1::postgres::PgError::ConnectionFailed(e)
342 }
343 spin::postgres::postgres::Error::BadParameter(e) => {
344 v1::postgres::PgError::BadParameter(e)
345 }
346 spin::postgres::postgres::Error::QueryFailed(e) => {
347 v1::postgres::PgError::QueryFailed(e)
348 }
349 spin::postgres::postgres::Error::ValueConversionFailed(e) => {
350 v1::postgres::PgError::ValueConversionFailed(e)
351 }
352 spin::postgres::postgres::Error::Other(e) => v1::postgres::PgError::OtherError(e),
353 }
354 }
355 }
356
357 impl From<spin::postgres::postgres::Error> for v2::rdbms_types::Error {
358 fn from(error: spin::postgres::postgres::Error) -> v2::rdbms_types::Error {
359 match error {
360 spin::postgres::postgres::Error::ConnectionFailed(e) => {
361 v2::rdbms_types::Error::ConnectionFailed(e)
362 }
363 spin::postgres::postgres::Error::BadParameter(e) => {
364 v2::rdbms_types::Error::BadParameter(e)
365 }
366 spin::postgres::postgres::Error::QueryFailed(e) => {
367 v2::rdbms_types::Error::QueryFailed(e)
368 }
369 spin::postgres::postgres::Error::ValueConversionFailed(e) => {
370 v2::rdbms_types::Error::ValueConversionFailed(e)
371 }
372 spin::postgres::postgres::Error::Other(e) => v2::rdbms_types::Error::Other(e),
373 }
374 }
375 }
376}
377
378mod postgres {
379 use super::*;
380
381 impl From<spin::postgres::postgres::RowSet> for v1::postgres::RowSet {
382 fn from(value: spin::postgres::postgres::RowSet) -> v1::postgres::RowSet {
383 v1::mysql::RowSet {
384 columns: value.columns.into_iter().map(Into::into).collect(),
385 rows: value
386 .rows
387 .into_iter()
388 .map(|r| r.into_iter().map(Into::into).collect())
389 .collect(),
390 }
391 }
392 }
393
394 impl From<spin::postgres::postgres::RowSet> for v2::rdbms_types::RowSet {
395 fn from(value: spin::postgres::postgres::RowSet) -> v2::rdbms_types::RowSet {
396 v2::rdbms_types::RowSet {
397 columns: value.columns.into_iter().map(Into::into).collect(),
398 rows: value
399 .rows
400 .into_iter()
401 .map(|r| r.into_iter().map(Into::into).collect())
402 .collect(),
403 }
404 }
405 }
406}
407
408mod mysql {
409 use super::*;
410 impl From<v2::mysql::RowSet> for v1::mysql::RowSet {
411 fn from(value: v2::mysql::RowSet) -> v1::mysql::RowSet {
412 v1::mysql::RowSet {
413 columns: value.columns.into_iter().map(Into::into).collect(),
414 rows: value
415 .rows
416 .into_iter()
417 .map(|r| r.into_iter().map(Into::into).collect())
418 .collect(),
419 }
420 }
421 }
422}
423
424mod redis {
425 use super::*;
426
427 impl From<v1::redis::RedisParameter> for v2::redis::RedisParameter {
428 fn from(value: v1::redis::RedisParameter) -> Self {
429 match value {
430 v1::redis::RedisParameter::Int64(i) => v2::redis::RedisParameter::Int64(i),
431 v1::redis::RedisParameter::Binary(b) => v2::redis::RedisParameter::Binary(b),
432 }
433 }
434 }
435
436 impl From<v2::redis::RedisResult> for v1::redis::RedisResult {
437 fn from(value: v2::redis::RedisResult) -> Self {
438 match value {
439 v2::redis::RedisResult::Nil => v1::redis::RedisResult::Nil,
440 v2::redis::RedisResult::Status(s) => v1::redis::RedisResult::Status(s),
441 v2::redis::RedisResult::Int64(i) => v1::redis::RedisResult::Int64(i),
442 v2::redis::RedisResult::Binary(b) => v1::redis::RedisResult::Binary(b),
443 }
444 }
445 }
446}
447
448mod llm {
449 use super::*;
450
451 impl From<v1::llm::InferencingParams> for v2::llm::InferencingParams {
452 fn from(value: v1::llm::InferencingParams) -> Self {
453 Self {
454 max_tokens: value.max_tokens,
455 repeat_penalty: value.repeat_penalty,
456 repeat_penalty_last_n_token_count: value.repeat_penalty_last_n_token_count,
457 temperature: value.temperature,
458 top_k: value.top_k,
459 top_p: value.top_p,
460 }
461 }
462 }
463
464 impl From<v2::llm::InferencingResult> for v1::llm::InferencingResult {
465 fn from(value: v2::llm::InferencingResult) -> Self {
466 Self {
467 text: value.text,
468 usage: v1::llm::InferencingUsage {
469 prompt_token_count: value.usage.prompt_token_count,
470 generated_token_count: value.usage.generated_token_count,
471 },
472 }
473 }
474 }
475
476 impl From<v2::llm::EmbeddingsResult> for v1::llm::EmbeddingsResult {
477 fn from(value: v2::llm::EmbeddingsResult) -> Self {
478 Self {
479 embeddings: value.embeddings,
480 usage: v1::llm::EmbeddingsUsage {
481 prompt_token_count: value.usage.prompt_token_count,
482 },
483 }
484 }
485 }
486
487 impl From<v2::llm::Error> for v1::llm::Error {
488 fn from(value: v2::llm::Error) -> Self {
489 match value {
490 v2::llm::Error::ModelNotSupported => Self::ModelNotSupported,
491 v2::llm::Error::RuntimeError(s) => Self::RuntimeError(s),
492 v2::llm::Error::InvalidInput(s) => Self::InvalidInput(s),
493 }
494 }
495 }
496}