sql_middleware/typed/
impl_sqlite.rs

1//! Trait implementations for `SQLite` typed connections.
2
3use super::traits::{BeginTx, Queryable, TxConn, TypedConnOps};
4use crate::SqlMiddlewareDbError;
5use crate::sqlite::typed::{Idle as SqIdle, InTx as SqInTx, SqliteTypedConnection};
6use crate::{middleware::RowValues, query_builder::QueryBuilder, results::ResultSet};
7
8impl Queryable for SqliteTypedConnection<SqIdle> {
9    fn query<'a>(&'a mut self, sql: &'a str) -> QueryBuilder<'a, 'a> {
10        self.query(sql)
11    }
12}
13
14impl Queryable for SqliteTypedConnection<SqInTx> {
15    fn query<'a>(&'a mut self, sql: &'a str) -> QueryBuilder<'a, 'a> {
16        self.query(sql)
17    }
18}
19
20impl TypedConnOps for SqliteTypedConnection<SqIdle> {
21    #[allow(clippy::manual_async_fn)]
22    fn execute_batch(
23        &mut self,
24        sql: &str,
25    ) -> impl std::future::Future<Output = Result<(), SqlMiddlewareDbError>> {
26        async move { self.execute_batch(sql).await }
27    }
28
29    #[allow(clippy::manual_async_fn)]
30    fn dml(
31        &mut self,
32        query: &str,
33        params: &[RowValues],
34    ) -> impl std::future::Future<Output = Result<usize, SqlMiddlewareDbError>> {
35        async move { self.dml(query, params).await }
36    }
37
38    #[allow(clippy::manual_async_fn)]
39    fn select(
40        &mut self,
41        query: &str,
42        params: &[RowValues],
43    ) -> impl std::future::Future<Output = Result<ResultSet, SqlMiddlewareDbError>> {
44        async move { self.select(query, params).await }
45    }
46}
47
48impl TypedConnOps for SqliteTypedConnection<SqInTx> {
49    #[allow(clippy::manual_async_fn)]
50    fn execute_batch(
51        &mut self,
52        sql: &str,
53    ) -> impl std::future::Future<Output = Result<(), SqlMiddlewareDbError>> {
54        async move { self.execute_batch(sql).await }
55    }
56
57    #[allow(clippy::manual_async_fn)]
58    fn dml(
59        &mut self,
60        query: &str,
61        params: &[RowValues],
62    ) -> impl std::future::Future<Output = Result<usize, SqlMiddlewareDbError>> {
63        async move { self.dml(query, params).await }
64    }
65
66    #[allow(clippy::manual_async_fn)]
67    fn select(
68        &mut self,
69        query: &str,
70        params: &[RowValues],
71    ) -> impl std::future::Future<Output = Result<ResultSet, SqlMiddlewareDbError>> {
72        async move { self.select(query, params).await }
73    }
74}
75
76impl BeginTx for SqliteTypedConnection<SqIdle> {
77    type Tx = SqliteTypedConnection<SqInTx>;
78
79    #[allow(clippy::manual_async_fn)]
80    fn begin(self) -> impl std::future::Future<Output = Result<Self::Tx, SqlMiddlewareDbError>> {
81        async move { self.begin().await }
82    }
83}
84
85impl TxConn for SqliteTypedConnection<SqInTx> {
86    type Idle = SqliteTypedConnection<SqIdle>;
87
88    #[allow(clippy::manual_async_fn)]
89    fn commit(self) -> impl std::future::Future<Output = Result<Self::Idle, SqlMiddlewareDbError>> {
90        async move { self.commit().await }
91    }
92
93    #[allow(clippy::manual_async_fn)]
94    fn rollback(
95        self,
96    ) -> impl std::future::Future<Output = Result<Self::Idle, SqlMiddlewareDbError>> {
97        async move { self.rollback().await }
98    }
99}