revolt_database/models/users/
ops.rs1use revolt_result::Result;
2
3use crate::{FieldsUser, PartialUser, RelationshipStatus, User};
4
5#[cfg(feature = "mongodb")]
6mod mongodb;
7mod reference;
8
9#[async_trait]
10pub trait AbstractUsers: Sync + Send {
11 async fn insert_user(&self, user: &User) -> Result<()>;
13
14 async fn fetch_user(&self, id: &str) -> Result<User>;
16
17 async fn fetch_user_by_username(&self, username: &str, discriminator: &str) -> Result<User>;
19
20 async fn fetch_users<'a>(&self, ids: &'a [String]) -> Result<Vec<User>>;
22
23 async fn fetch_discriminators_in_use(&self, username: &str) -> Result<Vec<String>>;
25
26 async fn fetch_mutual_user_ids(&self, user_a: &str, user_b: &str) -> Result<Vec<String>>;
28
29 async fn fetch_mutual_channel_ids(&self, user_a: &str, user_b: &str) -> Result<Vec<String>>;
31
32 async fn fetch_mutual_server_ids(&self, user_a: &str, user_b: &str) -> Result<Vec<String>>;
34
35 async fn update_user(
37 &self,
38 id: &str,
39 user: &PartialUser,
40 remove: Vec<FieldsUser>,
41 ) -> Result<()>;
42
43 async fn set_relationship(
47 &self,
48 user_id: &str,
49 target_id: &str,
50 relationship: &RelationshipStatus,
51 ) -> Result<()>;
52
53 async fn pull_relationship(&self, user_id: &str, target_id: &str) -> Result<()>;
55
56 async fn delete_user(&self, id: &str) -> Result<()>;
58
59 async fn clear_user_relationships(&self, target_id: &str, user_ids: Vec<String>) -> Result<()>;
61}