forked from jmug/stoatchat
chore(monorepo): delta, january, quark
This commit is contained in:
42
crates/quark/src/traits/servers/server.rs
Normal file
42
crates/quark/src/traits/servers/server.rs
Normal file
@@ -0,0 +1,42 @@
|
||||
use crate::models::server::{FieldsRole, FieldsServer, PartialRole, PartialServer, Role, Server};
|
||||
use crate::Result;
|
||||
|
||||
#[async_trait]
|
||||
pub trait AbstractServer: Sync + Send {
|
||||
/// Fetch a server by its id
|
||||
async fn fetch_server(&self, id: &str) -> Result<Server>;
|
||||
|
||||
/// Fetch a servers by their ids
|
||||
async fn fetch_servers<'a>(&self, ids: &'a [String]) -> Result<Vec<Server>>;
|
||||
|
||||
/// Insert a new server into database
|
||||
async fn insert_server(&self, server: &Server) -> Result<()>;
|
||||
|
||||
/// Update a server with new information
|
||||
async fn update_server(
|
||||
&self,
|
||||
id: &str,
|
||||
server: &PartialServer,
|
||||
remove: Vec<FieldsServer>,
|
||||
) -> Result<()>;
|
||||
|
||||
/// Delete a server by its id
|
||||
async fn delete_server(&self, server: &Server) -> Result<()>;
|
||||
|
||||
/// Insert a new role into server object
|
||||
async fn insert_role(&self, server_id: &str, role_id: &str, role: &Role) -> Result<()>;
|
||||
|
||||
/// Update an existing role on a server
|
||||
async fn update_role(
|
||||
&self,
|
||||
server_id: &str,
|
||||
role_id: &str,
|
||||
role: &PartialRole,
|
||||
remove: Vec<FieldsRole>,
|
||||
) -> Result<()>;
|
||||
|
||||
/// Delete a role from a server
|
||||
///
|
||||
/// Also updates channels and members.
|
||||
async fn delete_role(&self, server_id: &str, role_id: &str) -> Result<()>;
|
||||
}
|
||||
18
crates/quark/src/traits/servers/server_ban.rs
Normal file
18
crates/quark/src/traits/servers/server_ban.rs
Normal file
@@ -0,0 +1,18 @@
|
||||
use crate::models::server_member::MemberCompositeKey;
|
||||
use crate::models::ServerBan;
|
||||
use crate::Result;
|
||||
|
||||
#[async_trait]
|
||||
pub trait AbstractServerBan: Sync + Send {
|
||||
/// Fetch a server ban by server and user id
|
||||
async fn fetch_ban(&self, server: &str, user: &str) -> Result<ServerBan>;
|
||||
|
||||
/// Fetch all bans in a server
|
||||
async fn fetch_bans(&self, server: &str) -> Result<Vec<ServerBan>>;
|
||||
|
||||
/// Insert new ban into database
|
||||
async fn insert_ban(&self, ban: &ServerBan) -> Result<()>;
|
||||
|
||||
/// Delete a ban from the database
|
||||
async fn delete_ban(&self, id: &MemberCompositeKey) -> Result<()>;
|
||||
}
|
||||
37
crates/quark/src/traits/servers/server_member.rs
Normal file
37
crates/quark/src/traits/servers/server_member.rs
Normal file
@@ -0,0 +1,37 @@
|
||||
use crate::models::server_member::{FieldsMember, Member, MemberCompositeKey, PartialMember};
|
||||
use crate::Result;
|
||||
|
||||
#[async_trait]
|
||||
pub trait AbstractServerMember: Sync + Send {
|
||||
/// Fetch a server member by their id
|
||||
async fn fetch_member(&self, server: &str, user: &str) -> Result<Member>;
|
||||
|
||||
/// Insert a new server member into the database
|
||||
async fn insert_member(&self, member: &Member) -> Result<()>;
|
||||
|
||||
/// Update information for a server member
|
||||
async fn update_member(
|
||||
&self,
|
||||
id: &MemberCompositeKey,
|
||||
member: &PartialMember,
|
||||
remove: Vec<FieldsMember>,
|
||||
) -> Result<()>;
|
||||
|
||||
/// Delete a server member by their id
|
||||
async fn delete_member(&self, id: &MemberCompositeKey) -> Result<()>;
|
||||
|
||||
/// Fetch all members in a server
|
||||
async fn fetch_all_members<'a>(&self, server: &str) -> Result<Vec<Member>>;
|
||||
|
||||
/// Fetch all memberships for a user
|
||||
async fn fetch_all_memberships<'a>(&self, user: &str) -> Result<Vec<Member>>;
|
||||
|
||||
/// Fetch multiple members by their ids
|
||||
async fn fetch_members<'a>(&self, server: &str, ids: &'a [String]) -> Result<Vec<Member>>;
|
||||
|
||||
/// Fetch member count of a server
|
||||
async fn fetch_member_count(&self, server: &str) -> Result<usize>;
|
||||
|
||||
/// Fetch server count of a user
|
||||
async fn fetch_server_count(&self, user: &str) -> Result<usize>;
|
||||
}
|
||||
Reference in New Issue
Block a user