revolt_database/models/servers/
ops.rs1use revolt_result::Result;
2
3use crate::{FieldsRole, FieldsServer, PartialRole, PartialServer, Role, Server};
4
5#[cfg(feature = "mongodb")]
6mod mongodb;
7mod reference;
8
9#[async_trait]
10pub trait AbstractServers: Sync + Send {
11 async fn insert_server(&self, server: &Server) -> Result<()>;
13
14 async fn fetch_server(&self, id: &str) -> Result<Server>;
16
17 async fn fetch_servers<'a>(&self, ids: &'a [String]) -> Result<Vec<Server>>;
19
20 async fn fetch_owned_servers(&self, user_id: &str) -> Result<Vec<Server>>;
21
22 async fn update_server(
24 &self,
25 id: &str,
26 partial: &PartialServer,
27 remove: Vec<FieldsServer>,
28 ) -> Result<()>;
29
30 async fn delete_server(&self, id: &str) -> Result<()>;
32
33 async fn insert_role(&self, server_id: &str, role: &Role) -> Result<()>;
35
36 async fn update_role(
38 &self,
39 server_id: &str,
40 role_id: &str,
41 partial: &PartialRole,
42 remove: Vec<FieldsRole>,
43 ) -> Result<()>;
44
45 async fn delete_role(&self, server_id: &str, role_id: &str) -> Result<()>;
49}