use crate::cli_state::enrollments::IdentityEnrollment;
use crate::orchestrator::email_address::EmailAddress;
use ockam::identity::Identifier;
use ockam_core::async_trait;
use ockam_core::Result;
use ockam_node::database::AutoRetry;
use ockam_node::retry;
#[async_trait]
pub trait EnrollmentsRepository: Send + Sync + 'static {
async fn set_as_enrolled(&self, identifier: &Identifier, email: &EmailAddress) -> Result<()>;
async fn get_enrolled_identities(&self) -> Result<Vec<IdentityEnrollment>>;
async fn get_all_identities_enrollments(&self) -> Result<Vec<IdentityEnrollment>>;
async fn is_default_identity_enrolled(&self) -> Result<bool>;
async fn is_identity_enrolled(&self, name: &str) -> Result<bool>;
}
#[async_trait]
impl<T: EnrollmentsRepository> EnrollmentsRepository for AutoRetry<T> {
async fn set_as_enrolled(&self, identifier: &Identifier, email: &EmailAddress) -> Result<()> {
retry!(self.wrapped.set_as_enrolled(identifier, email))
}
async fn get_enrolled_identities(&self) -> Result<Vec<IdentityEnrollment>> {
retry!(self.wrapped.get_enrolled_identities())
}
async fn get_all_identities_enrollments(&self) -> Result<Vec<IdentityEnrollment>> {
retry!(self.wrapped.get_all_identities_enrollments())
}
async fn is_default_identity_enrolled(&self) -> Result<bool> {
retry!(self.wrapped.is_default_identity_enrolled())
}
async fn is_identity_enrolled(&self, name: &str) -> Result<bool> {
retry!(self.wrapped.is_identity_enrolled(name))
}
}