Skip to main content

revolt_database/models/
mod.rs

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