revolt_database/models/
mod.rs

1mod 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, MongoDb, ReferenceDb};
42
43pub trait AbstractDatabase:
44    Sync
45    + Send
46    + admin_migrations::AbstractMigrations
47    + bots::AbstractBots
48    + channels::AbstractChannels
49    + channel_invites::AbstractChannelInvites
50    + channel_unreads::AbstractChannelUnreads
51    + channel_webhooks::AbstractWebhooks
52    + emojis::AbstractEmojis
53    + file_hashes::AbstractAttachmentHashes
54    + files::AbstractAttachments
55    + messages::AbstractMessages
56    + policy_changes::AbstractPolicyChange
57    + ratelimit_events::AbstractRatelimitEvents
58    + safety_reports::AbstractReport
59    + safety_snapshots::AbstractSnapshot
60    + server_bans::AbstractServerBans
61    + server_members::AbstractServerMembers
62    + servers::AbstractServers
63    + user_settings::AbstractUserSettings
64    + users::AbstractUsers
65{
66}
67
68impl AbstractDatabase for ReferenceDb {}
69impl AbstractDatabase for MongoDb {}
70
71impl std::ops::Deref for Database {
72    type Target = dyn AbstractDatabase;
73
74    fn deref(&self) -> &Self::Target {
75        match &self {
76            Database::Reference(dummy) => dummy,
77            Database::MongoDb(mongo) => mongo,
78        }
79    }
80}