use crate::pool::ConnectionFactory;
use crate::postgres_client::statements::Statement;
use crate::postgres_client::{PostgresClient, QueryResultSet};
use crate::{ElefantClientError, ToSql};
impl<F: ConnectionFactory> PostgresClient<F> {
pub async fn execute_non_query<S>(
&mut self,
query: &S,
parameters: &[&dyn ToSql],
) -> Result<(), ElefantClientError>
where
S: Statement + ?Sized,
{
let mut query_result = self.query(query, parameters).await?;
loop {
let result_set = query_result.next_result_set().await?;
match result_set {
QueryResultSet::QueryProcessingComplete => return Ok(()),
QueryResultSet::RowDescriptionReceived(mut reader) => {
while reader.next_row().await?.is_some() {}
}
}
}
}
pub async fn execute_non_query_simple(
&mut self,
query: &str,
) -> Result<(), ElefantClientError> {
let mut query_result = self.query_simple(query).await?;
loop {
let result_set = query_result.next_result_set().await?;
match result_set {
QueryResultSet::QueryProcessingComplete => return Ok(()),
QueryResultSet::RowDescriptionReceived(mut reader) => {
while reader.next_row().await?.is_some() {}
}
}
}
}
}