chore: refactor new role rankings code

This commit is contained in:
Zomatree
2025-06-08 01:40:48 +01:00
committed by izzy
parent e00603f276
commit 77daf82b94
3 changed files with 55 additions and 46 deletions

View File

@@ -253,6 +253,33 @@ impl Server {
Err(create_error!(NotFound))
}
}
/// reorders the server's roles rankings
pub async fn update_role_rankings(&mut self, db: &Database, new_order: Vec<String>) -> Result<()> {
// new_order must always contain every role
debug_assert_eq!(self.roles.len(), new_order.len());
// set the role's ranks to the positions in the vec
for (rank, id) in new_order.iter().enumerate() {
self.roles.get_mut(id).unwrap().rank = rank as i64;
}
db.update_server(
&self.id,
&PartialServer {
roles: Some(self.roles.clone()),
..Default::default()
},
Vec::new()
).await?;
// publish bulk update event
EventV1::ServerRoleRanksUpdate {
ranks: new_order
}.p(self.id.clone()).await;
Ok(())
}
}
impl Role {