revolt_database/models/channels/
ops.rs1use crate::{revolt_result::Result, Channel, FieldsChannel, PartialChannel};
2use revolt_permissions::OverrideField;
3
4#[cfg(feature = "mongodb")]
5mod mongodb;
6mod reference;
7
8#[async_trait]
9pub trait AbstractChannels: Sync + Send {
10 async fn insert_channel(&self, channel: &Channel) -> Result<()>;
12
13 async fn fetch_channel(&self, channel_id: &str) -> Result<Channel>;
15
16 async fn fetch_channels<'a>(&self, ids: &'a [String]) -> Result<Vec<Channel>>;
18
19 async fn find_direct_messages(&self, user_id: &str) -> Result<Vec<Channel>>;
21
22 async fn find_saved_messages_channel(&self, user_id: &str) -> Result<Channel>;
24
25 async fn find_direct_message_channel(&self, user_a: &str, user_b: &str) -> Result<Channel>;
27
28 async fn add_user_to_group(&self, channel_id: &str, user_id: &str) -> Result<()>;
30
31 async fn set_channel_role_permission(
33 &self,
34 channel_id: &str,
35 role_id: &str,
36 permissions: OverrideField,
37 ) -> Result<()>;
38
39 async fn update_channel(
41 &self,
42 id: &str,
43 channel_id: &PartialChannel,
44 remove: Vec<FieldsChannel>,
45 ) -> Result<()>;
46
47 async fn remove_user_from_group(&self, channel_id: &str, user_id: &str) -> Result<()>;
49
50 async fn delete_channel(&self, channel_id: &Channel) -> Result<()>;
52}