naphtha 0.5.0

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

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

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

impl DatabaseConnect<SqliteConnection>
    for DatabaseConnection<SqliteConnection>
{
    fn connect(
        database_url: &str,
    ) -> Result<DatabaseConnection<SqliteConnection>, 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))))
    }
}