Skip to main content

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