Skip to main content

diesel_libsql/
to_sql.rs

1//! ToSql implementations for the LibSql backend.
2
3use diesel::serialize::{self, IsNull, Output, ToSql};
4use diesel::sql_types;
5
6use crate::backend::LibSql;
7
8impl ToSql<sql_types::Bool, LibSql> for bool {
9    fn to_sql<'b>(&'b self, out: &mut Output<'b, '_, LibSql>) -> serialize::Result {
10        let int_value = if *self { &1i32 } else { &0i32 };
11        <i32 as ToSql<sql_types::Integer, LibSql>>::to_sql(int_value, out)
12    }
13}
14
15impl ToSql<sql_types::SmallInt, LibSql> for i16 {
16    fn to_sql<'b>(&'b self, out: &mut Output<'b, '_, LibSql>) -> serialize::Result {
17        out.set_value(*self as i32);
18        Ok(IsNull::No)
19    }
20}
21
22impl ToSql<sql_types::Integer, LibSql> for i32 {
23    fn to_sql<'b>(&'b self, out: &mut Output<'b, '_, LibSql>) -> serialize::Result {
24        out.set_value(*self);
25        Ok(IsNull::No)
26    }
27}
28
29impl ToSql<sql_types::BigInt, LibSql> for i64 {
30    fn to_sql<'b>(&'b self, out: &mut Output<'b, '_, LibSql>) -> serialize::Result {
31        out.set_value(*self);
32        Ok(IsNull::No)
33    }
34}
35
36impl ToSql<sql_types::Float, LibSql> for f32 {
37    fn to_sql<'b>(&'b self, out: &mut Output<'b, '_, LibSql>) -> serialize::Result {
38        out.set_value(*self as f64);
39        Ok(IsNull::No)
40    }
41}
42
43impl ToSql<sql_types::Double, LibSql> for f64 {
44    fn to_sql<'b>(&'b self, out: &mut Output<'b, '_, LibSql>) -> serialize::Result {
45        out.set_value(*self);
46        Ok(IsNull::No)
47    }
48}
49
50impl ToSql<sql_types::Text, LibSql> for str {
51    fn to_sql<'b>(&'b self, out: &mut Output<'b, '_, LibSql>) -> serialize::Result {
52        out.set_value(self);
53        Ok(IsNull::No)
54    }
55}
56
57impl ToSql<sql_types::Binary, LibSql> for [u8] {
58    fn to_sql<'b>(&'b self, out: &mut Output<'b, '_, LibSql>) -> serialize::Result {
59        out.set_value(self);
60        Ok(IsNull::No)
61    }
62}