use crate::entity::account; use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize)] pub struct DecryptedAccount { pub name: String, pub login: String, pub password: String, } impl DecryptedAccount { pub fn from_account(account: account::Model, master_pass: &str) -> crate::Result { let name = account.name.clone(); let (login, password) = account.decrypt(master_pass)?; Ok(Self { name, login, password, }) } pub fn into_account( self, user_id: u64, master_pass: &str, ) -> crate::Result { let (name, login, password) = (self.name, self.login, self.password); account::ActiveModel::from_unencrypted(user_id, name, &login, &password, master_pass) } } #[derive(Serialize, Deserialize)] pub struct User { pub accounts: Vec, }