revolt_database/models/
mod.rs1mod 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}