mayhem-db 0.2.0-beta.1

A Discord-like chat application optimized for security, stability, speed, and ultimate customization. => Database Module
Documentation
use std::sync::Arc;

use migration::{DbErr, Migrator, MigratorTrait};
use sea_orm::DbConn;

use super::{
    connector::{connect, ConnectionOptions},
    insertion::InsertionHelper,
    mutation::MutationHelper,
    query::QueryHelper,
    removal::RemovalHelper,
};

#[derive(Clone)]
pub struct Client {
    pub opts: Option<ConnectionOptions>,
    pub client: Arc<DbConn>,
    pub inserter: InsertionHelper,
    pub mutator: MutationHelper,
    pub remover: RemovalHelper,
    pub query: QueryHelper,
}

unsafe impl Sync for Client {}
unsafe impl Send for Client {}

impl Client {
    pub async fn connect(opts: ConnectionOptions) -> Self {
        return Self::of(connect(opts.clone()).await.unwrap());
    }

    pub fn of(conn: DbConn) -> Self {
        let conn = Arc::new(conn);

        let inserter = InsertionHelper::create(conn.clone());
        let mutator = MutationHelper::create(conn.clone());
        let remover = RemovalHelper::create(conn.clone());
        let query = QueryHelper::create(conn.clone());

        return Self {
            opts: None,
            client: conn,
            inserter,
            mutator,
            remover,
            query,
        };
    }

    pub async fn run_migrations(&self) -> Result<(), DbErr> {
        return Migrator::up(&self.client, None).await;
    }
}