authifier 1.0.16

Opinionated Rust authentication library
Documentation
use std::ops::Deref;

use self::definition::AbstractDatabase;

pub mod definition;

#[derive(Debug)]
pub enum Migration {
    M2025_02_20AddLastSeenToSession,
    M2022_06_03EnsureUpToSpec,
    M2022_06_09AddIndexForDeletion,
    #[cfg(debug_assertions)]
    WipeAll,
}

mod dummy;

pub use dummy::DummyDb;

#[cfg(feature = "database-mongodb")]
mod mongo;

#[cfg(feature = "database-mongodb")]
pub use mongo::MongoDb;

#[derive(Clone)]
pub enum Database {
    Dummy(DummyDb),
    #[cfg(feature = "database-mongodb")]
    MongoDb(mongo::MongoDb),
}

impl Default for Database {
    fn default() -> Self {
        Self::Dummy(Default::default())
    }
}

impl Deref for Database {
    type Target = dyn AbstractDatabase;

    fn deref(&self) -> &Self::Target {
        match self {
            Database::Dummy(dummy) => dummy,
            #[cfg(feature = "database-mongodb")]
            Database::MongoDb(mongo) => mongo,
        }
    }
}