Skip to main content

sql_middleware/sqlite/
executor.rs

1use crate::adapters::params::convert_params;
2use crate::middleware::{ConversionMode, ResultSet, RowValues, SqlMiddlewareDbError};
3
4use super::connection::SqliteConnection;
5use super::params::Params;
6use super::query::build_result_set;
7
8/// Execute a batch of SQL statements for `SQLite` using auto-commit.
9///
10/// # Errors
11///
12/// Returns `SqlMiddlewareDbError::ExecutionError` if execution fails.
13pub async fn execute_batch(
14    sqlite_client: &mut SqliteConnection,
15    query: &str,
16) -> Result<(), SqlMiddlewareDbError> {
17    sqlite_client.execute_batch(query).await
18}
19
20/// Execute a SELECT query in `SQLite`.
21///
22/// # Errors
23///
24/// Returns `SqlMiddlewareDbError::ExecutionError` if execution or result processing fails.
25pub async fn execute_select(
26    sqlite_client: &mut SqliteConnection,
27    query: &str,
28    params: &[RowValues],
29) -> Result<ResultSet, SqlMiddlewareDbError> {
30    let params_owned = convert_params::<Params>(params, ConversionMode::Query)?.0;
31    sqlite_client
32        .execute_select(query, &params_owned, build_result_set)
33        .await
34}
35
36/// Execute a DML query (INSERT, UPDATE, DELETE) in `SQLite`.
37///
38/// # Errors
39///
40/// Returns `SqlMiddlewareDbError::ExecutionError` if execution fails or rows affected cannot be converted.
41pub async fn execute_dml(
42    sqlite_client: &mut SqliteConnection,
43    query: &str,
44    params: &[RowValues],
45) -> Result<usize, SqlMiddlewareDbError> {
46    let params_owned = convert_params::<Params>(params, ConversionMode::Execute)?.0;
47    sqlite_client.execute_dml(query, &params_owned).await
48}