naphtha 0.5.0

Universal database connection layer for your application.
Documentation
use {
    crate::{DatabaseConnect, DatabaseConnection},
    diesel::{Connection, MysqlConnection},
    std::sync::{Arc, Mutex},
};

impl From<MysqlConnection> for DatabaseConnection<MysqlConnection> {
    fn from(c: MysqlConnection) -> Self {
        DatabaseConnection::<MysqlConnection>(Arc::new(Mutex::new(c)))
    }
}

impl From<Arc<Mutex<MysqlConnection>>> for DatabaseConnection<MysqlConnection> {
    fn from(c: Arc<Mutex<MysqlConnection>>) -> Self {
        DatabaseConnection::<MysqlConnection>(c)
    }
}

impl DatabaseConnect<MysqlConnection> for DatabaseConnection<MysqlConnection> {
    fn connect(
        database_url: &str,
    ) -> Result<DatabaseConnection<MysqlConnection>, String> {
        let connection = match Connection::establish(database_url) {
            Ok(c) => c,
            Err(msg) => {
                return Err(format!(
                "Connection to database \"{}\" could not be established: {}",
                database_url, msg
            ))
            }
        };
        Ok(DatabaseConnection(Arc::new(Mutex::new(connection))))
    }
}