use crate::quote_identifier;
pub fn build_delete_sql(table: &str, where_clause: Option<&str>) -> String {
let mut query = format!("DELETE FROM {}", quote_identifier(table));
if let Some(cond) = where_clause {
if !cond.trim().is_empty() {
query.push_str(&format!(" WHERE {}", cond));
}
}
query
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_delete_all() {
let sql = build_delete_sql("users", None);
assert_eq!(sql, "DELETE FROM \"users\"");
}
#[test]
fn test_delete_with_where() {
let sql = build_delete_sql("users", Some("id = 1"));
assert_eq!(sql, "DELETE FROM \"users\" WHERE id = 1");
}
#[test]
fn test_delete_with_empty_where() {
let sql = build_delete_sql("users", Some(" "));
assert_eq!(sql, "DELETE FROM \"users\"");
}
}