zero4rs 2.0.0

zero4rs is a powerful, pragmatic, and extremely fast web framework for Rust
Documentation
pub mod grid_fs;
pub mod mongo_client;
pub mod with_mongo;

pub use mongo_client::*;
pub use with_mongo::*;

#[derive(serde::Deserialize, Clone)]
pub struct MongoSettings {
    pub enable: Option<bool>,
    server: Option<String>,
}

impl Default for MongoSettings {
    fn default() -> Self {
        Self {
            enable: Some(true),
            server: Some("mongodb://127.0.0.1:27017/?retryWrites=true&w=majority".to_string()),
        }
    }
}

impl MongoSettings {
    pub fn enabled(&self) -> bool {
        self.enable.unwrap_or_default()
    }

    pub fn server(&self) -> String {
        self.server.clone().unwrap()
    }

    pub fn get(settings: &Option<MongoSettings>) -> Self {
        let _default = Self::default();

        if settings.is_some() {
            let mut s = settings.clone().unwrap();

            if s.server.is_none() {
                s.enable = _default.enable;
                s.server = _default.server;
            }

            s
        } else {
            _default
        }
    }
}

// mongodb://127.0.0.1:27017?retryWrites=true&w=majority
impl std::fmt::Display for MongoSettings {
    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
        if let Some(u) = &self.server {
            f.write_str(u)?;
        }

        Ok(())
    }
}