sql_middleware/sqlite/
executor.rs

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