use serde::{Deserialize, Serialize};
use signer_core::SignerUserPublic;
use crate::entity::user;
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct UserVO {
pub pub_key: String,
pub user_public: String,
pub signed_user_public: String,
}
impl From<user::Model> for UserVO {
fn from(value: user::Model) -> Self {
Self {
pub_key: value.pub_key,
user_public: value.user_public,
signed_user_public: value.signed_user_public,
}
}
}
impl Into<user::Model> for UserVO {
fn into(self) -> user::Model {
user::Model {
pub_key: self.pub_key,
user_public: self.user_public,
signed_user_public: self.signed_user_public,
}
}
}
impl UserVO {
pub fn public(&self) -> anyhow::Result<SignerUserPublic> {
let user_public = serde_json::from_str(&self.user_public)?;
Ok(user_public)
}
}