revolt_database/models/
mod.rs1mod admin_migrations;
2mod bots;
3mod channel_invites;
4mod channel_unreads;
5mod channel_webhooks;
6mod channels;
7mod emojis;
8mod file_hashes;
9mod files;
10mod messages;
11mod policy_changes;
12mod ratelimit_events;
13mod safety_reports;
14mod safety_snapshots;
15mod server_bans;
16mod server_members;
17mod servers;
18mod user_settings;
19mod users;
20
21pub use admin_migrations::*;
22pub use bots::*;
23pub use channel_invites::*;
24pub use channel_unreads::*;
25pub use channel_webhooks::*;
26pub use channels::*;
27pub use emojis::*;
28pub use file_hashes::*;
29pub use files::*;
30pub use messages::*;
31pub use policy_changes::*;
32pub use ratelimit_events::*;
33pub use safety_reports::*;
34pub use safety_snapshots::*;
35pub use server_bans::*;
36pub use server_members::*;
37pub use servers::*;
38pub use user_settings::*;
39pub use users::*;
40
41use crate::{Database, ReferenceDb};
42
43#[cfg(feature = "mongodb")]
44use crate::MongoDb;
45
46pub trait AbstractDatabase:
47 Sync
48 + Send
49 + admin_migrations::AbstractMigrations
50 + bots::AbstractBots
51 + channels::AbstractChannels
52 + channel_invites::AbstractChannelInvites
53 + channel_unreads::AbstractChannelUnreads
54 + channel_webhooks::AbstractWebhooks
55 + emojis::AbstractEmojis
56 + file_hashes::AbstractAttachmentHashes
57 + files::AbstractAttachments
58 + messages::AbstractMessages
59 + policy_changes::AbstractPolicyChange
60 + ratelimit_events::AbstractRatelimitEvents
61 + safety_reports::AbstractReport
62 + safety_snapshots::AbstractSnapshot
63 + server_bans::AbstractServerBans
64 + server_members::AbstractServerMembers
65 + servers::AbstractServers
66 + user_settings::AbstractUserSettings
67 + users::AbstractUsers
68{
69}
70
71impl AbstractDatabase for ReferenceDb {}
72
73#[cfg(feature = "mongodb")]
74impl AbstractDatabase for MongoDb {}
75
76impl std::ops::Deref for Database {
77 type Target = dyn AbstractDatabase;
78
79 fn deref(&self) -> &Self::Target {
80 match &self {
81 Database::Reference(dummy) => dummy,
82 #[cfg(feature = "mongodb")]
83 Database::MongoDb(mongo) => mongo,
84 }
85 }
86}