cyaxon_authifier/database/
mod.rs

1use std::ops::Deref;
2
3use self::{definition::AbstractDatabase};
4
5pub mod definition;
6
7#[derive(Debug)]
8pub enum Migration {
9    M2022_06_03EnsureUpToSpec,
10    M2022_06_09AddIndexForDeletion,
11    #[cfg(debug_assertions)]
12    WipeAll,
13}
14
15mod dummy;
16
17pub use dummy::DummyDb;
18
19#[cfg(feature = "database-mongodb")]
20mod mongo;
21
22#[cfg(feature = "database-mongodb")]
23pub use mongo::MongoDb;
24
25#[derive(Clone)]
26pub enum Database {
27    Dummy(DummyDb),
28    #[cfg(feature = "database-mongodb")]
29    MongoDb(mongo::MongoDb),
30}
31
32impl Default for Database {
33    fn default() -> Self {
34        Self::Dummy(Default::default())
35    }
36}
37
38impl Deref for Database {
39    type Target = dyn AbstractDatabase;
40
41    fn deref(&self) -> &Self::Target {
42        match self {
43            Database::Dummy(dummy) => dummy,
44            #[cfg(feature = "database-mongodb")]
45            Database::MongoDb(mongo) => mongo,
46        }
47    }
48}