use crate::{
db::{read_db, write_db},
protocols::issue_credential::datatypes::{CredentialData, State, UserType},
};
pub fn save_credential(
from_did: &str,
to_did: &str,
thid: &str,
credential: &str,
state: &State,
) -> Result<(), Box<dyn std::error::Error>> {
write_db(
&format!(
"issue_credential_{}_{}_{}_{}",
from_did, to_did, state, thid
),
credential,
)?;
Ok(())
}
#[allow(dead_code)]
pub fn get_credential(
from_did: &str,
to_did: &str,
thid: &str,
state: &State,
) -> Result<CredentialData, Box<dyn std::error::Error>> {
let credential = read_db(&format!(
"issue_credential_{}_{}_{}_{}",
from_did, to_did, state, thid
))?;
let credential_data: CredentialData = serde_json::from_str(&credential)?;
Ok(credential_data)
}
pub fn save_state(
thid: &str,
state: &State,
user_type: &UserType,
) -> Result<(), Box<dyn std::error::Error>> {
write_db(
&format!("issue_credential_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!("issue_credential_state_{}_{}", user_type, thid));
let state = match result {
Ok(value) => value,
Err(_) => "Unknown".to_string(),
};
Ok(state)
}