use crate::datastore::{AdvanceFilter, BatchDeleteBody, BatchDeleteRequest, Params};
#[derive(Debug, Default)]
pub struct BatchDeleteRequestBuilder {
id: Option<String>,
table: Option<String>,
is_root: bool,
advance_filters: Vec<AdvanceFilter>,
}
impl BatchDeleteRequestBuilder {
pub fn new() -> Self {
Default::default()
}
pub fn id(mut self, id: impl Into<String>) -> Self {
self.id = Some(id.into());
self
}
pub fn table(mut self, table: impl Into<String>) -> Self {
self.table = Some(table.into());
self
}
pub fn performed_by_root(mut self, value: bool) -> Self {
self.is_root = value;
self
}
pub fn advance_filter(mut self, filter: AdvanceFilter) -> Self {
self.advance_filters.push(filter);
self
}
pub fn advance_filters(mut self, filters: impl IntoIterator<Item = AdvanceFilter>) -> Self {
self.advance_filters.extend(filters);
self
}
pub fn build(self) -> BatchDeleteRequest {
BatchDeleteRequest {
params: Some(Params {
id: self.id.unwrap_or_default(),
table: self.table.unwrap_or_default(),
r#type: if self.is_root {
String::from("root")
} else {
String::new()
},
}),
body: Some(BatchDeleteBody {
advance_filters: self.advance_filters,
}),
}
}
}