use nodedb_types::error::NodeDbResult;
use nodedb_types::result::QueryResult;
use nodedb_types::value::Value;
use super::core::{NativeClient, is_connection_error};
impl NativeClient {
pub(super) async fn execute_sql_impl(
&self,
query: &str,
params: &[Value],
) -> NodeDbResult<QueryResult> {
let mut conn = self.pool.acquire().await?;
match conn.execute_sql_with_params(query, params).await {
Ok(r) => Ok(r),
Err(e) if is_connection_error(&e) => {
drop(conn);
let mut conn = self.pool.acquire().await?;
conn.execute_sql_with_params(query, params).await
}
Err(e) => Err(e),
}
}
}