sql_middleware/sqlite/
prepared.rs1use std::sync::Arc;
2
3use crate::middleware::{ResultSet, RowValues, SqlMiddlewareDbError};
4
5use super::connection::SqliteConnection;
6use super::params::Params;
7
8pub struct SqlitePreparedStatement<'conn> {
10 connection: &'conn mut SqliteConnection,
11 query: Arc<String>,
12}
13
14impl<'conn> SqlitePreparedStatement<'conn> {
15 pub(crate) fn new(connection: &'conn mut SqliteConnection, query: Arc<String>) -> Self {
16 Self { connection, query }
17 }
18
19 pub async fn query(&mut self, params: &[RowValues]) -> Result<ResultSet, SqlMiddlewareDbError> {
24 let params_owned = Params::convert(params)?.0;
25 self.connection
26 .execute_select(
27 self.query.as_ref(),
28 ¶ms_owned,
29 super::query::build_result_set,
30 )
31 .await
32 }
33
34 pub async fn execute(&mut self, params: &[RowValues]) -> Result<usize, SqlMiddlewareDbError> {
39 let params_owned = Params::convert(params)?.0;
40 self.connection
41 .execute_dml(self.query.as_ref(), ¶ms_owned)
42 .await
43 }
44
45 #[must_use]
47 pub fn sql(&self) -> &str {
48 self.query.as_str()
49 }
50}