mithril_aggregator/dependency_injection/builder/enablers/
misc.rsuse std::sync::Arc;
use mithril_signed_entity_lock::SignedEntityTypeLock;
use crate::database::repository::CertificateRepository;
use crate::dependency_injection::{DependenciesBuilder, Result};
use crate::services::{MessageService, MithrilMessageService};
impl DependenciesBuilder {
async fn build_signed_entity_lock(&mut self) -> Result<Arc<SignedEntityTypeLock>> {
let signed_entity_type_lock = Arc::new(SignedEntityTypeLock::default());
Ok(signed_entity_type_lock)
}
pub async fn get_signed_entity_lock(&mut self) -> Result<Arc<SignedEntityTypeLock>> {
if self.signed_entity_type_lock.is_none() {
self.signed_entity_type_lock = Some(self.build_signed_entity_lock().await?);
}
Ok(self.signed_entity_type_lock.as_ref().cloned().unwrap())
}
pub async fn build_message_service(&mut self) -> Result<Arc<dyn MessageService>> {
let certificate_repository = Arc::new(CertificateRepository::new(
self.get_sqlite_connection().await?,
));
let signed_entity_storer = self.get_signed_entity_storer().await?;
let immutable_file_digest_mapper = self.get_immutable_file_digest_mapper().await?;
let service = MithrilMessageService::new(
certificate_repository,
signed_entity_storer,
immutable_file_digest_mapper,
);
Ok(Arc::new(service))
}
pub async fn get_message_service(&mut self) -> Result<Arc<dyn MessageService>> {
if self.message_service.is_none() {
self.message_service = Some(self.build_message_service().await?);
}
Ok(self.message_service.as_ref().cloned().unwrap())
}
}