Skip to main content

diesel_libsql/
from_sql.rs

1//! FromSql implementations for the LibSql backend.
2
3use diesel::deserialize::{self, FromSql};
4use diesel::sql_types;
5
6use crate::backend::LibSql;
7use crate::value::LibSqlValue;
8
9impl FromSql<sql_types::SmallInt, LibSql> for i16 {
10    fn from_sql(value: LibSqlValue) -> deserialize::Result<Self> {
11        Ok(value.read_integer() as i16)
12    }
13}
14
15impl FromSql<sql_types::Integer, LibSql> for i32 {
16    fn from_sql(value: LibSqlValue) -> deserialize::Result<Self> {
17        Ok(value.read_integer())
18    }
19}
20
21impl FromSql<sql_types::BigInt, LibSql> for i64 {
22    fn from_sql(value: LibSqlValue) -> deserialize::Result<Self> {
23        Ok(value.read_long())
24    }
25}
26
27impl FromSql<sql_types::Float, LibSql> for f32 {
28    fn from_sql(value: LibSqlValue) -> deserialize::Result<Self> {
29        Ok(value.read_double() as f32)
30    }
31}
32
33impl FromSql<sql_types::Double, LibSql> for f64 {
34    fn from_sql(value: LibSqlValue) -> deserialize::Result<Self> {
35        Ok(value.read_double())
36    }
37}
38
39impl FromSql<sql_types::Bool, LibSql> for bool {
40    fn from_sql(value: LibSqlValue) -> deserialize::Result<Self> {
41        Ok(value.read_integer() != 0)
42    }
43}
44
45impl FromSql<sql_types::Text, LibSql> for String {
46    fn from_sql(value: LibSqlValue) -> deserialize::Result<Self> {
47        Ok(value.read_text().to_string())
48    }
49}
50
51impl FromSql<sql_types::Binary, LibSql> for Vec<u8> {
52    fn from_sql(value: LibSqlValue) -> deserialize::Result<Self> {
53        Ok(value.read_blob().to_vec())
54    }
55}