Can delete user account

This commit is contained in:
2022-04-08 17:54:51 +02:00
parent 65dac1e923
commit c7d075f94e
5 changed files with 92 additions and 6 deletions

@ -57,6 +57,13 @@ pub struct UpdateUserResult(pub bool);
#[rtype(UpdateUserResult)]
pub struct UpdateUserRequest(pub User);
#[derive(Debug)]
pub struct DeleteUserResult(pub bool);
#[derive(Message)]
#[rtype(DeleteUserResult)]
pub struct DeleteUserRequest(pub UserID);
pub struct UsersActor {
manager: EntityManager<User>,
}
@ -132,7 +139,7 @@ impl Handler<UpdateUserRequest> for UsersActor {
type Result = MessageResult<UpdateUserRequest>;
fn handle(&mut self, msg: UpdateUserRequest, _ctx: &mut Self::Context) -> Self::Result {
MessageResult(UpdateUserResult(match self.manager.update_or_replace(msg.0) {
MessageResult(UpdateUserResult(match self.manager.update_or_push(msg.0) {
Ok(_) => true,
Err(e) => {
log::error!("Failed to update user information! {:?}", e);
@ -140,4 +147,26 @@ impl Handler<UpdateUserRequest> for UsersActor {
}
}))
}
}
impl Handler<DeleteUserRequest> for UsersActor {
type Result = MessageResult<DeleteUserRequest>;
fn handle(&mut self, msg: DeleteUserRequest, _ctx: &mut Self::Context) -> Self::Result {
let user = match self.manager.find_by_user_id(&msg.0) {
None => {
log::warn!("Could not delete account {:?} because it was not found!", msg.0);
return MessageResult(DeleteUserResult(false));
}
Some(s) => s
};
MessageResult(DeleteUserResult(match self.manager.remove(&user) {
Ok(_) => true,
Err(e) => {
log::error!("Failed to update delete account! {:?}", e);
false
}
}))
}
}