Skip to main content

elefant_client/postgres_client/
easy_client.rs

1use crate::pool::ConnectionFactory;
2use crate::postgres_client::statements::Statement;
3use crate::postgres_client::{PostgresClient, QueryResultSet};
4use crate::{ElefantClientError, ToSql};
5
6impl<F: ConnectionFactory> PostgresClient<F> {
7    /// Execute a non-query statement using binary mode (with prepared statements)
8    pub async fn execute_non_query<S>(
9        &mut self,
10        query: &S,
11        parameters: &[&dyn ToSql],
12    ) -> Result<(), ElefantClientError>
13    where
14        S: Statement + ?Sized,
15    {
16        let mut query_result = self.query(query, parameters).await?;
17
18        loop {
19            let result_set = query_result.next_result_set().await?;
20
21            match result_set {
22                QueryResultSet::QueryProcessingComplete => return Ok(()),
23                QueryResultSet::RowDescriptionReceived(mut reader) => {
24                    while reader.next_row().await?.is_some() {}
25                }
26            }
27        }
28    }
29
30    /// Execute a non-query statement using simple query mode (text format, no parameters)
31    pub async fn execute_non_query_simple(
32        &mut self,
33        query: &str,
34    ) -> Result<(), ElefantClientError> {
35        let mut query_result = self.query_simple(query).await?;
36
37        loop {
38            let result_set = query_result.next_result_set().await?;
39
40            match result_set {
41                QueryResultSet::QueryProcessingComplete => return Ok(()),
42                QueryResultSet::RowDescriptionReceived(mut reader) => {
43                    while reader.next_row().await?.is_some() {}
44                }
45            }
46        }
47    }
48}