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 update_server(
22 &self,
23 id: &str,
24 partial: &PartialServer,
25 remove: Vec<FieldsServer>,
26 ) -> Result<()>;
27
28 async fn delete_server(&self, id: &str) -> Result<()>;
30
31 async fn insert_role(&self, server_id: &str, role: &Role) -> Result<()>;
33
34 async fn update_role(
36 &self,
37 server_id: &str,
38 role_id: &str,
39 partial: &PartialRole,
40 remove: Vec<FieldsRole>,
41 ) -> Result<()>;
42
43 async fn delete_role(&self, server_id: &str, role_id: &str) -> Result<()>;
47}