pass_manager/src/handlers/commands/delete_all.rs

46 lines
1.2 KiB
Rust
Raw Normal View History

2023-05-04 18:46:44 +00:00
use crate::{
entity::{account, prelude::*},
handlers::{utils::package_handler, MainDialogue, State},
};
use sea_orm::prelude::*;
use teloxide::{adaptors::Throttle, prelude::*};
async fn get_master_pass(
bot: Throttle<Bot>,
msg: Message,
db: DatabaseConnection,
dialogue: MainDialogue,
previous: Message,
) -> crate::Result<()> {
let _ = bot.delete_message(previous.chat.id, previous.id).await;
dialogue.exit().await?;
let user_id = msg.from().unwrap().id.0;
Account::delete_many()
.filter(account::Column::UserId.eq(user_id))
.exec(&db)
.await?;
MasterPass::delete_by_id(user_id).exec(&db).await?;
bot.send_message(msg.chat.id, "Everything was deleted")
.await?;
Ok(())
}
pub async fn delete_all(
bot: Throttle<Bot>,
msg: Message,
dialogue: MainDialogue,
) -> crate::Result<()> {
let previous = bot
.send_message(
msg.chat.id,
"Send master password to delete EVERYTHING.\nTHIS ACTION IS IRREVERSIBLE",
)
.await?;
dialogue
.update(State::GetMasterPass(package_handler(
move |bot, msg, db, dialogue, _| get_master_pass(bot, msg, db, dialogue, previous),
)))
.await?;
Ok(())
}