sql_middleware/postgres/typed/
select.rs

1use bb8::PooledConnection;
2
3use crate::executor::QueryTarget;
4use crate::middleware::{RowValues, SqlMiddlewareDbError};
5use crate::postgres::query::execute_query_on_client;
6use crate::query_builder::QueryBuilder;
7use crate::results::ResultSet;
8
9use super::{PgConnection, PgManager};
10
11impl PgConnection<super::core::Idle> {
12    /// Auto-commit SELECT.
13    ///
14    /// # Errors
15    /// Returns `SqlMiddlewareDbError` if executing the select fails.
16    pub async fn select(
17        &mut self,
18        query: &str,
19        params: &[RowValues],
20    ) -> Result<ResultSet, SqlMiddlewareDbError> {
21        crate::postgres::executor::execute_select(self.conn_mut(), query, params).await
22    }
23
24    /// Start a query builder (auto-commit per operation).
25    pub fn query<'a>(&'a mut self, sql: &'a str) -> QueryBuilder<'a, 'a> {
26        QueryBuilder::new_target(
27            QueryTarget::from_typed_postgres(self.conn_mut(), false),
28            sql,
29        )
30    }
31}
32
33impl PgConnection<super::core::InTx> {
34    /// Execute SELECT inside the open transaction.
35    ///
36    /// # Errors
37    /// Returns `SqlMiddlewareDbError` if executing the select fails.
38    pub async fn select(
39        &mut self,
40        query: &str,
41        params: &[RowValues],
42    ) -> Result<ResultSet, SqlMiddlewareDbError> {
43        execute_query_on_client(self.conn_mut(), query, params).await
44    }
45
46    /// Start a query builder within the open transaction.
47    pub fn query<'a>(&'a mut self, sql: &'a str) -> QueryBuilder<'a, 'a> {
48        QueryBuilder::new_target(QueryTarget::from_typed_postgres(self.conn_mut(), true), sql)
49    }
50}
51
52/// Adapter for query builder select (typed-postgres target).
53///
54/// # Errors
55/// Returns `SqlMiddlewareDbError` if the query execution fails.
56pub async fn select(
57    conn: &mut PooledConnection<'_, PgManager>,
58    query: &str,
59    params: &[RowValues],
60) -> Result<ResultSet, SqlMiddlewareDbError> {
61    execute_query_on_client(conn, query, params).await
62}