use crate::{
db::{read_db, write_db},
protocols::presentation_exchange::datatypes::{PresentationExchangeData, State, UserType},
};
pub fn save_presentation_exchange(
from_did: &str,
to_did: &str,
thid: &str,
presentation_exchange: &str,
state: &State,
) -> Result<(), Box<dyn std::error::Error>> {
write_db(
&format!(
"presentation_exchange_{}_{}_{}_{}",
from_did, to_did, state, thid
),
presentation_exchange,
)?;
Ok(())
}
pub fn get_presentation_exchange(
from_did: &str,
to_did: &str,
thid: &str,
state: &State,
) -> Result<PresentationExchangeData, Box<dyn std::error::Error>> {
let presentation_exchange = read_db(&format!(
"presentation_exchange_{}_{}_{}_{}",
from_did, to_did, state, thid
))?;
let presentation_exchange: PresentationExchangeData =
serde_json::from_str(&presentation_exchange)?;
Ok(presentation_exchange)
}
pub fn save_state(
thid: &str,
state: &State,
user_type: &UserType,
) -> Result<(), Box<dyn std::error::Error>> {
write_db(
&format!("presentation_exchange_state_{}_{}", user_type, thid),
&state.to_string(),
)?;
Ok(())
}
pub fn get_current_state(
thid: &str,
user_type: &UserType,
) -> Result<String, Box<dyn std::error::Error>> {
let result = read_db(&format!(
"presentation_exchange_state_{}_{}",
user_type, thid
));
let state = match result {
Ok(value) => value,
Err(_) => "Unknown".to_string(),
};
Ok(state)
}