sql_middleware/typed/
traits.rs1use crate::SqlMiddlewareDbError;
4use crate::{middleware::RowValues, query_builder::QueryBuilder, results::ResultSet};
5
6pub trait Queryable {
8 fn query<'a>(&'a mut self, sql: &'a str) -> QueryBuilder<'a, 'a>;
9}
10
11pub trait TypedConnOps: Queryable {
13 #[allow(clippy::manual_async_fn)]
14 fn execute_batch(
15 &mut self,
16 sql: &str,
17 ) -> impl std::future::Future<Output = Result<(), SqlMiddlewareDbError>>;
18
19 #[allow(clippy::manual_async_fn)]
20 fn dml(
21 &mut self,
22 query: &str,
23 params: &[RowValues],
24 ) -> impl std::future::Future<Output = Result<usize, SqlMiddlewareDbError>>;
25
26 #[allow(clippy::manual_async_fn)]
27 fn select(
28 &mut self,
29 query: &str,
30 params: &[RowValues],
31 ) -> impl std::future::Future<Output = Result<ResultSet, SqlMiddlewareDbError>>;
32}
33
34pub trait BeginTx: Sized {
36 type Tx: TxConn<Idle = Self>;
37
38 #[allow(clippy::manual_async_fn)]
39 fn begin(self) -> impl std::future::Future<Output = Result<Self::Tx, SqlMiddlewareDbError>>;
40}
41
42pub trait TxConn {
44 type Idle;
45
46 #[allow(clippy::manual_async_fn)]
47 fn commit(self) -> impl std::future::Future<Output = Result<Self::Idle, SqlMiddlewareDbError>>;
48 #[allow(clippy::manual_async_fn)]
49 fn rollback(
50 self,
51 ) -> impl std::future::Future<Output = Result<Self::Idle, SqlMiddlewareDbError>>;
52}