forked from jmug/stoatchat
41 lines
932 B
Rust
41 lines
932 B
Rust
#[cfg(feature = "serde")]
|
|
#[macro_use]
|
|
extern crate serde;
|
|
|
|
#[macro_use]
|
|
extern crate async_trait;
|
|
|
|
#[macro_use]
|
|
extern crate log;
|
|
|
|
macro_rules! auto_derived {
|
|
( $( $item:item )+ ) => {
|
|
$(
|
|
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
|
|
#[derive(Debug, Clone)]
|
|
$item
|
|
)+
|
|
};
|
|
}
|
|
|
|
mod admin_migrations;
|
|
|
|
pub use admin_migrations::*;
|
|
|
|
pub struct Database(pub revolt_database::Database);
|
|
|
|
pub trait AbstractDatabase: Sync + Send + admin_migrations::AbstractMigrations {}
|
|
impl AbstractDatabase for revolt_database::DummyDb {}
|
|
impl AbstractDatabase for revolt_database::MongoDb {}
|
|
|
|
impl std::ops::Deref for Database {
|
|
type Target = dyn AbstractDatabase;
|
|
|
|
fn deref(&self) -> &Self::Target {
|
|
match &self.0 {
|
|
revolt_database::Database::Dummy(dummy) => dummy,
|
|
revolt_database::Database::MongoDb(mongo) => mongo,
|
|
}
|
|
}
|
|
}
|