nullnet-libdatastore 0.5.1

Nullnet datastore driver
Documentation
use crate::datastore::{RegisterDeviceParams, RegisterDeviceRequest};

#[derive(Debug, Default)]
pub struct RegisterDeviceRequestBuilder {
    pub categories: Vec<String>,
    pub organization_id: Option<String>,
    pub account_id: Option<String>,
    pub account_secret: Option<String>,
    pub is_new_user: bool,
    pub is_invited: bool,
    pub role_id: Option<String>,
    pub account_organization_status: Option<String>,
    pub account_organization_categories: Vec<String>,
    pub device_categories: Vec<String>,
    pub device_id: Option<String>,
}

impl RegisterDeviceRequestBuilder {
    pub fn new() -> Self {
        Self::default()
    }

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

    pub fn add_category(mut self, category: impl Into<String>) -> Self {
        self.categories.push(category.into());
        self
    }

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

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

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

    pub fn set_is_new_user(mut self, flag: bool) -> Self {
        self.is_new_user = flag;
        self
    }

    pub fn set_is_invited(mut self, flag: bool) -> Self {
        self.is_invited = flag;
        self
    }

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

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

    pub fn add_account_organization_category(mut self, category: impl Into<String>) -> Self {
        self.account_organization_categories.push(category.into());
        self
    }

    pub fn add_device_category(mut self, category: impl Into<String>) -> Self {
        self.device_categories.push(category.into());
        self
    }

    pub fn build(self) -> RegisterDeviceRequest {
        RegisterDeviceRequest {
            device: Some(RegisterDeviceParams {
                organization_id: self.organization_id.unwrap_or_default(),
                account_id: self.account_id.unwrap_or_default(),
                account_secret: self.account_secret.unwrap_or_default(),
                is_new_user: self.is_new_user,
                is_invited: self.is_invited,
                role_id: self.role_id.unwrap_or_default(),
                account_organization_status: self.account_organization_status.unwrap_or_default(),
                account_organization_categories: self.account_organization_categories,
                device_categories: self.device_categories,
                device_id: self.device_id.unwrap_or_default(),
            }),
        }
    }
}