sql_middleware/query_builder/
dml.rs1use crate::error::SqlMiddlewareDbError;
2use crate::executor::{QueryTarget, QueryTargetKind, execute_dml_dispatch};
3
4use super::{QueryBuilder, translate_query_for_target};
5
6impl QueryBuilder<'_, '_> {
7 pub async fn dml(self) -> Result<usize, SqlMiddlewareDbError> {
12 let translated = translate_query_for_target(
13 &self.target,
14 self.sql.as_ref(),
15 self.params.as_ref(),
16 self.options,
17 );
18
19 match self.target {
20 QueryTarget {
21 kind: QueryTargetKind::Connection(conn),
22 ..
23 } => execute_dml_dispatch(conn, translated.as_ref(), self.params.as_ref()).await,
24 #[cfg(feature = "sqlite")]
25 QueryTarget {
26 kind: QueryTargetKind::TypedSqlite { conn },
27 ..
28 } => {
29 crate::sqlite::connection::dml(conn, translated.as_ref(), self.params.as_ref())
30 .await
31 }
32 #[cfg(feature = "sqlite")]
33 QueryTarget {
34 kind: QueryTargetKind::TypedSqliteTx { conn },
35 ..
36 } => {
37 crate::sqlite::connection::dml(conn, translated.as_ref(), self.params.as_ref())
38 .await
39 }
40 #[cfg(feature = "postgres")]
41 QueryTarget {
42 kind: QueryTargetKind::TypedPostgres { conn },
43 ..
44 } => crate::typed_postgres::dml(conn, translated.as_ref(), self.params.as_ref()).await,
45 #[cfg(feature = "postgres")]
46 QueryTarget {
47 kind: QueryTargetKind::TypedPostgresTx { conn },
48 ..
49 } => crate::typed_postgres::dml(conn, translated.as_ref(), self.params.as_ref()).await,
50 #[cfg(feature = "turso")]
51 QueryTarget {
52 kind: QueryTargetKind::TypedTurso { conn },
53 ..
54 } => crate::typed_turso::dml(conn, translated.as_ref(), self.params.as_ref()).await,
55 #[cfg(feature = "turso")]
56 QueryTarget {
57 kind: QueryTargetKind::TypedTursoTx { conn },
58 ..
59 } => crate::typed_turso::dml(conn, translated.as_ref(), self.params.as_ref()).await,
60 #[cfg(feature = "postgres")]
61 QueryTarget {
62 kind: QueryTargetKind::PostgresTx(tx),
63 ..
64 } => {
65 let prepared = tx.prepare(translated.as_ref()).await?;
66 tx.execute_prepared(&prepared, self.params.as_ref()).await
67 }
68 #[cfg(feature = "mssql")]
69 QueryTarget {
70 kind: QueryTargetKind::MssqlTx(tx),
71 ..
72 } => {
73 let prepared = tx.prepare(translated.as_ref())?;
74 tx.execute_prepared(&prepared, self.params.as_ref()).await
75 }
76 #[cfg(feature = "libsql")]
77 QueryTarget {
78 kind: QueryTargetKind::LibsqlTx(tx),
79 ..
80 } => {
81 let prepared = tx.prepare(translated.as_ref())?;
82 tx.execute_prepared(&prepared, self.params.as_ref()).await
83 }
84 #[cfg(feature = "turso")]
85 QueryTarget {
86 kind: QueryTargetKind::TursoTx(tx),
87 ..
88 } => {
89 let mut prepared = tx.prepare(translated.as_ref()).await?;
90 tx.execute_prepared(&mut prepared, self.params.as_ref())
91 .await
92 }
93 }
94 }
95}