lua_sql_builder/mysql/
update.rs

1use super::where_::{Combiner, Where};
2
3pub struct Update<'a> {
4    table: &'a str,
5    set: Vec<[&'a str; 2]>,
6    where_: Where,
7}
8
9#[allow(dead_code)]
10impl<'a> Update<'a> {
11    pub fn new(table: &'a str) -> Update<'a> {
12        Update {
13            table,
14            set: vec![],
15            where_: Where::new(Combiner::And),
16        }
17    }
18
19    pub fn set(&mut self, set: Vec<[&'a str; 2]>) -> &mut Update<'a> {
20        self.set = set;
21        self
22    }
23
24    pub fn where_(&mut self, where_: Where) -> &mut Update<'a> {
25        self.where_ = where_;
26        self
27    }
28
29    pub fn build(&self) -> String {
30        let mut statement = format!("UPDATE {} SET", self.table);
31
32        for s in &self.set {
33            if s[1].parse::<f64>().is_ok() {
34                statement.push_str(&format!(" {} = {},", s[0], s[1]));
35            } else {
36                statement.push_str(&format!(" {} = '{}',", s[0], s[1]));
37            }
38        }
39        statement.pop();
40
41        statement.push_str(&format!(" {}", &self.where_.build()));
42
43        statement = statement.trim().to_string() + ";";
44        statement
45    }
46}