etanol/methods/
update.rs

1use crate::{ModelWhere, Value};
2use etanol_databases::Database;
3
4pub use etanol_databases::{QueryValue, UpdateError};
5
6use etanol_databases::UpdateQuery;
7use std::fmt::Debug;
8
9use crate::FindTrait;
10
11pub struct Update<M: FindTrait + Debug> {
12    _model: M,
13    query: UpdateQuery,
14}
15
16impl<M: FindTrait + Debug> Update<M> {
17    pub fn new(table: String, _model: M) -> Self {
18        Self {
19            _model,
20            query: UpdateQuery::new(table),
21        }
22    }
23
24    pub fn field<V: Value>(&mut self, value: ModelWhere<V>) -> &mut Self {
25        self.query.field(value);
26
27        self
28    }
29    pub fn value<V: Value>(&mut self, value: QueryValue<V>) -> &mut Self {
30        self.query.value(value);
31
32        self
33    }
34
35    pub fn execute(&self) -> Result<(), UpdateError> {
36        match self.query.sql() {
37            Ok(sql) => {
38                Database::execute(sql, &self.query.params()).unwrap();
39
40                Ok(())
41            }
42            Err(e) => Err(e),
43        }
44    }
45}