nullnet_libdatastore/builders/
batch_update_request_builder.rs

1use crate::datastore::{AdvanceFilter, BatchUpdateBody, BatchUpdateRequest, Params};
2
3#[derive(Debug, Default)]
4pub struct BatchUpdateRequestBuilder {
5    advance_filters: Vec<AdvanceFilter>,
6    updates: Option<String>,
7    id: Option<String>,
8    table: Option<String>,
9    is_root: bool,
10}
11
12impl BatchUpdateRequestBuilder {
13    pub fn new() -> Self {
14        Default::default()
15    }
16
17    pub fn id(mut self, id: impl Into<String>) -> Self {
18        self.id = Some(id.into());
19        self
20    }
21
22    pub fn table(mut self, table: impl Into<String>) -> Self {
23        self.table = Some(table.into());
24        self
25    }
26
27    pub fn advance_filter(mut self, filter: AdvanceFilter) -> Self {
28        self.advance_filters.push(filter);
29        self
30    }
31
32    pub fn advance_filters(mut self, filters: impl IntoIterator<Item = AdvanceFilter>) -> Self {
33        self.advance_filters.extend(filters);
34        self
35    }
36
37    pub fn performed_by_root(mut self, value: bool) -> Self {
38        self.is_root = value;
39        self
40    }
41
42    pub fn updates(mut self, updates: impl Into<String>) -> Self {
43        self.updates = Some(updates.into());
44        self
45    }
46
47    pub fn build(self) -> BatchUpdateRequest {
48        BatchUpdateRequest {
49            params: Some(Params {
50                id: self.id.unwrap_or_default(),
51                table: self.table.unwrap_or_default(),
52                r#type: if self.is_root {
53                    String::from("root")
54                } else {
55                    String::new()
56                },
57            }),
58            body: Some(BatchUpdateBody {
59                advance_filters: self.advance_filters,
60                updates: self.updates.unwrap_or_default(),
61            }),
62        }
63    }
64}