sql_middleware/executor/
targets.rs1use crate::pool::MiddlewarePoolConnection;
2use crate::types::StatementCacheMode;
3
4mod typed;
5
6#[cfg(feature = "mssql")]
7use crate::mssql;
8#[cfg(feature = "mssql")]
9use crate::mssql::typed::MssqlManager;
10#[cfg(feature = "postgres")]
11use crate::postgres;
12#[cfg(feature = "postgres")]
13use crate::postgres::typed::PgManager;
14#[cfg(feature = "sqlite")]
15use crate::sqlite::config::SqliteManager;
16#[cfg(feature = "turso")]
17use crate::turso;
18#[cfg(feature = "turso")]
19use crate::typed_turso::TursoManager;
20#[cfg(any(
21 feature = "postgres",
22 feature = "turso",
23 feature = "sqlite",
24 feature = "mssql"
25))]
26use bb8::PooledConnection;
27
28pub enum BatchTarget<'a> {
30 Connection(&'a mut MiddlewarePoolConnection),
31 #[cfg(feature = "postgres")]
32 PostgresTx(&'a postgres::transaction::Tx<'a>),
33 #[cfg(feature = "mssql")]
34 MssqlTx(&'a mut mssql::transaction::Tx<'a>),
35 #[cfg(feature = "turso")]
36 TursoTx(&'a turso::transaction::Tx<'a>),
37 #[cfg(feature = "turso")]
38 TypedTurso {
39 conn: &'a mut PooledConnection<'static, TursoManager>,
40 },
41 #[cfg(feature = "turso")]
42 TypedTursoTx {
43 conn: &'a mut PooledConnection<'static, TursoManager>,
44 },
45}
46
47pub struct QueryTarget<'a> {
49 pub(crate) kind: QueryTargetKind<'a>,
50 pub(crate) translation_default: bool,
51 pub(crate) statement_cache_mode: StatementCacheMode,
52}
53
54pub(crate) enum QueryTargetKind<'a> {
55 Connection(&'a mut MiddlewarePoolConnection),
56 #[cfg(feature = "postgres")]
57 PostgresTx(&'a postgres::transaction::Tx<'a>),
58 #[cfg(feature = "sqlite")]
59 TypedSqlite {
60 conn: &'a mut PooledConnection<'static, SqliteManager>,
61 },
62 #[cfg(feature = "sqlite")]
63 TypedSqliteTx {
64 conn: &'a mut PooledConnection<'static, SqliteManager>,
65 },
66 #[cfg(feature = "postgres")]
67 TypedPostgres {
68 conn: &'a mut PooledConnection<'static, PgManager>,
69 },
70 #[cfg(feature = "postgres")]
71 TypedPostgresTx {
72 conn: &'a mut PooledConnection<'static, PgManager>,
73 },
74 #[cfg(feature = "mssql")]
75 TypedMssql {
76 conn: &'a mut PooledConnection<'static, MssqlManager>,
77 },
78 #[cfg(feature = "mssql")]
79 TypedMssqlTx {
80 conn: &'a mut PooledConnection<'static, MssqlManager>,
81 },
82 #[cfg(feature = "turso")]
83 TypedTurso {
84 conn: &'a mut PooledConnection<'static, TursoManager>,
85 },
86 #[cfg(feature = "turso")]
87 TypedTursoTx {
88 conn: &'a mut PooledConnection<'static, TursoManager>,
89 },
90 #[cfg(feature = "mssql")]
91 MssqlTx(&'a mut mssql::transaction::Tx<'a>),
92 #[cfg(feature = "turso")]
93 TursoTx(&'a turso::transaction::Tx<'a>),
94}
95
96impl<'a> From<&'a mut MiddlewarePoolConnection> for BatchTarget<'a> {
97 fn from(conn: &'a mut MiddlewarePoolConnection) -> Self {
98 BatchTarget::Connection(conn)
99 }
100}
101
102#[cfg(feature = "postgres")]
103impl<'a> From<&'a postgres::transaction::Tx<'a>> for BatchTarget<'a> {
104 fn from(tx: &'a postgres::transaction::Tx<'a>) -> Self {
105 BatchTarget::PostgresTx(tx)
106 }
107}
108
109#[cfg(feature = "mssql")]
110impl<'a> From<&'a mut mssql::transaction::Tx<'a>> for BatchTarget<'a> {
111 fn from(tx: &'a mut mssql::transaction::Tx<'a>) -> Self {
112 BatchTarget::MssqlTx(tx)
113 }
114}
115
116#[cfg(feature = "turso")]
117impl<'a> From<&'a turso::transaction::Tx<'a>> for BatchTarget<'a> {
118 fn from(tx: &'a turso::transaction::Tx<'a>) -> Self {
119 BatchTarget::TursoTx(tx)
120 }
121}
122
123impl<'a> From<&'a mut MiddlewarePoolConnection> for QueryTarget<'a> {
124 fn from(conn: &'a mut MiddlewarePoolConnection) -> Self {
125 QueryTarget {
126 translation_default: conn.translation_default(),
127 statement_cache_mode: conn.statement_cache_mode_default(),
128 kind: QueryTargetKind::Connection(conn),
129 }
130 }
131}
132
133#[cfg(feature = "postgres")]
134impl<'a> From<&'a postgres::transaction::Tx<'a>> for QueryTarget<'a> {
135 fn from(tx: &'a postgres::transaction::Tx<'a>) -> Self {
136 QueryTarget {
137 translation_default: false,
138 statement_cache_mode: StatementCacheMode::Cached,
139 kind: QueryTargetKind::PostgresTx(tx),
140 }
141 }
142}
143
144#[cfg(feature = "mssql")]
145impl<'a> From<&'a mut mssql::transaction::Tx<'a>> for QueryTarget<'a> {
146 fn from(tx: &'a mut mssql::transaction::Tx<'a>) -> Self {
147 QueryTarget {
148 translation_default: false,
149 statement_cache_mode: StatementCacheMode::Cached,
150 kind: QueryTargetKind::MssqlTx(tx),
151 }
152 }
153}
154
155#[cfg(feature = "turso")]
156impl<'a> From<&'a turso::transaction::Tx<'a>> for QueryTarget<'a> {
157 fn from(tx: &'a turso::transaction::Tx<'a>) -> Self {
158 QueryTarget {
159 translation_default: false,
160 statement_cache_mode: StatementCacheMode::Cached,
161 kind: QueryTargetKind::TursoTx(tx),
162 }
163 }
164}