nullnet-libdatastore 0.5.1

Nullnet datastore driver
Documentation
use crate::datastore::{AdvanceFilter, BatchUpdateBody, BatchUpdateRequest, Params};

#[derive(Debug, Default)]
pub struct BatchUpdateRequestBuilder {
    advance_filters: Vec<AdvanceFilter>,
    updates: Option<String>,
    id: Option<String>,
    table: Option<String>,
    is_root: bool,
}

impl BatchUpdateRequestBuilder {
    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 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 performed_by_root(mut self, value: bool) -> Self {
        self.is_root = value;
        self
    }

    pub fn updates(mut self, updates: impl Into<String>) -> Self {
        self.updates = Some(updates.into());
        self
    }

    pub fn build(self) -> BatchUpdateRequest {
        BatchUpdateRequest {
            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(BatchUpdateBody {
                advance_filters: self.advance_filters,
                updates: self.updates.unwrap_or_default(),
            }),
        }
    }
}