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, 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}