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}