feat: member fetching with roles (#299)

This commit is contained in:
ToastXC
2024-02-06 13:20:35 +00:00
committed by GitHub
parent c451e431cd
commit 41ef76ff3e
9 changed files with 147 additions and 17 deletions
@@ -1,9 +1,12 @@
use std::collections::HashMap;
use iso8601_timestamp::Timestamp;
use crate::{
events::client::EventV1,
models::{
server_member::{FieldsMember, MemberCompositeKey, PartialMember},
server::Role,
server_member::{FieldsMember, MemberCompositeKey, MemberWithRoles, PartialMember},
Member, Server,
},
Database, Result,
@@ -81,4 +84,30 @@ impl Member {
FieldsMember::Timeout => self.timeout = None,
}
}
pub fn with_roles(&self, roles: HashMap<String, Role>) -> MemberWithRoles {
MemberWithRoles {
id: self.id.clone(),
joined_at: self.joined_at,
nickname: self.nickname.clone(),
avatar: self.avatar.clone(),
roles,
timeout: self.timeout,
}
}
}
impl MemberWithRoles {
pub fn new(server_id: String, user_id: String) -> Self {
Self {
id: MemberCompositeKey {
server: server_id,
user: user_id,
},
joined_at: Timestamp::now_utc(),
nickname: None,
avatar: None,
roles: HashMap::new(),
timeout: None,
}
}
}