sql_middleware/query_builder/
select.rs1use crate::error::SqlMiddlewareDbError;
2use crate::executor::{QueryTarget, QueryTargetKind, execute_select_dispatch};
3use crate::results::ResultSet;
4
5use super::{QueryBuilder, translate_query_for_target};
6
7impl QueryBuilder<'_, '_> {
8 pub async fn select(self) -> Result<ResultSet, SqlMiddlewareDbError> {
13 let translated = translate_query_for_target(
14 &self.target,
15 self.sql.as_ref(),
16 self.params.as_ref(),
17 self.options,
18 );
19
20 match self.target {
21 QueryTarget {
22 kind: QueryTargetKind::Connection(conn),
23 ..
24 } => execute_select_dispatch(conn, translated.as_ref(), self.params.as_ref()).await,
25 #[cfg(feature = "sqlite")]
26 QueryTarget {
27 kind: QueryTargetKind::TypedSqlite { conn },
28 ..
29 } => {
30 crate::sqlite::connection::select(conn, translated.as_ref(), self.params.as_ref())
31 .await
32 }
33 #[cfg(feature = "sqlite")]
34 QueryTarget {
35 kind: QueryTargetKind::TypedSqliteTx { conn },
36 ..
37 } => {
38 crate::sqlite::connection::select(conn, translated.as_ref(), self.params.as_ref())
39 .await
40 }
41 #[cfg(feature = "postgres")]
42 QueryTarget {
43 kind: QueryTargetKind::TypedPostgres { conn },
44 ..
45 } => {
46 crate::typed_postgres::select(conn, translated.as_ref(), self.params.as_ref()).await
47 }
48 #[cfg(feature = "postgres")]
49 QueryTarget {
50 kind: QueryTargetKind::TypedPostgresTx { conn },
51 ..
52 } => {
53 crate::typed_postgres::select(conn, translated.as_ref(), self.params.as_ref()).await
54 }
55 #[cfg(feature = "turso")]
56 QueryTarget {
57 kind: QueryTargetKind::TypedTurso { conn },
58 ..
59 } => crate::typed_turso::select(conn, translated.as_ref(), self.params.as_ref()).await,
60 #[cfg(feature = "turso")]
61 QueryTarget {
62 kind: QueryTargetKind::TypedTursoTx { conn },
63 ..
64 } => crate::typed_turso::select(conn, translated.as_ref(), self.params.as_ref()).await,
65 #[cfg(feature = "postgres")]
66 QueryTarget {
67 kind: QueryTargetKind::PostgresTx(tx),
68 ..
69 } => {
70 let prepared = tx.prepare(translated.as_ref()).await?;
71 tx.query_prepared(&prepared, self.params.as_ref()).await
72 }
73 #[cfg(feature = "mssql")]
74 QueryTarget {
75 kind: QueryTargetKind::MssqlTx(tx),
76 ..
77 } => {
78 let prepared = tx.prepare(translated.as_ref())?;
79 tx.query_prepared(&prepared, self.params.as_ref()).await
80 }
81 #[cfg(feature = "libsql")]
82 QueryTarget {
83 kind: QueryTargetKind::LibsqlTx(tx),
84 ..
85 } => {
86 let prepared = tx.prepare(translated.as_ref())?;
87 tx.query_prepared(&prepared, self.params.as_ref()).await
88 }
89 #[cfg(feature = "turso")]
90 QueryTarget {
91 kind: QueryTargetKind::TursoTx(tx),
92 ..
93 } => {
94 let mut prepared = tx.prepare(translated.as_ref()).await?;
95 tx.query_prepared(&mut prepared, self.params.as_ref()).await
96 }
97 }
98 }
99}