revolt_database/drivers/
reference.rs

1use std::{collections::HashMap, sync::Arc};
2
3use futures::lock::Mutex;
4
5use crate::{
6    Bot, Channel, ChannelCompositeKey, ChannelUnread, Emoji, File, FileHash, Invite, Member,
7    MemberCompositeKey, Message, PolicyChange, RatelimitEvent, Report, Server, ServerBan, Snapshot,
8    User, UserSettings, Webhook,
9};
10
11database_derived!(
12    /// Reference implementation
13    #[derive(Default)]
14    pub struct ReferenceDb {
15        pub bots: Arc<Mutex<HashMap<String, Bot>>>,
16        pub channels: Arc<Mutex<HashMap<String, Channel>>>,
17        pub channel_invites: Arc<Mutex<HashMap<String, Invite>>>,
18        pub channel_unreads: Arc<Mutex<HashMap<ChannelCompositeKey, ChannelUnread>>>,
19        pub channel_webhooks: Arc<Mutex<HashMap<String, Webhook>>>,
20        pub emojis: Arc<Mutex<HashMap<String, Emoji>>>,
21        pub file_hashes: Arc<Mutex<HashMap<String, FileHash>>>,
22        pub files: Arc<Mutex<HashMap<String, File>>>,
23        pub messages: Arc<Mutex<HashMap<String, Message>>>,
24        pub policy_changes: Arc<Mutex<HashMap<String, PolicyChange>>>,
25        pub ratelimit_events: Arc<Mutex<HashMap<String, RatelimitEvent>>>,
26        pub user_settings: Arc<Mutex<HashMap<String, UserSettings>>>,
27        pub users: Arc<Mutex<HashMap<String, User>>>,
28        pub server_bans: Arc<Mutex<HashMap<MemberCompositeKey, ServerBan>>>,
29        pub server_members: Arc<Mutex<HashMap<MemberCompositeKey, Member>>>,
30        pub servers: Arc<Mutex<HashMap<String, Server>>>,
31        pub safety_reports: Arc<Mutex<HashMap<String, Report>>>,
32        pub safety_snapshots: Arc<Mutex<HashMap<String, Snapshot>>>,
33    }
34);