toolu_orm_query/
delete.rs1use toolu_orm_core::dialect::Dialect;
4use toolu_orm_core::expr::Expr;
5use toolu_orm_core::value::Value;
6
7use crate::where_clause::{append_where_for, cfg_single_backend, impl_filter};
8
9cfg_single_backend! {
10 use crate::exec_helpers::impl_execute;
11}
12
13pub struct DeleteBuilder {
16 table: String,
17 filters: Vec<Expr>,
18}
19
20impl_filter!(DeleteBuilder);
21
22impl DeleteBuilder {
23 pub fn new(table: &str) -> Self {
24 Self {
25 table: table.to_owned(),
26 filters: Vec::new(),
27 }
28 }
29
30 pub fn to_sql_for(&self, dialect: Dialect) -> (String, Vec<Value>) {
31 let mut sql = String::new();
32 let mut params: Vec<Value> = Vec::new();
33
34 sql.push_str(&format!(r#"DELETE FROM "{}""#, self.table));
35 append_where_for(&self.filters, &mut sql, &mut params, dialect);
36
37 (sql, params)
38 }
39
40 pub fn to_sql(&self) -> (String, Vec<Value>) {
41 self.to_sql_for(Dialect::CURRENT)
42 }
43}
44
45cfg_single_backend! {
46 impl_execute!(DeleteBuilder, "DELETE");
47}