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