mithril_aggregator/dependency_injection/builder/support/
upkeep.rs

1use std::sync::Arc;
2
3use crate::database::repository::SignerRegistrationStore;
4use crate::dependency_injection::{DependenciesBuilder, Result};
5use crate::get_dependency;
6use crate::services::{AggregatorUpkeepService, EpochPruningTask, UpkeepService};
7
8impl DependenciesBuilder {
9    /// Return a [EpochPruningTask] instance
10    pub async fn get_signer_registration_pruning_task(
11        &mut self,
12    ) -> Result<Arc<dyn EpochPruningTask>> {
13        Ok(Arc::new(SignerRegistrationStore::new(
14            self.get_sqlite_connection().await?,
15            self.configuration.safe_epoch_retention_limit(),
16        )))
17    }
18
19    async fn build_upkeep_service(&mut self) -> Result<Arc<dyn UpkeepService>> {
20        let stake_pool_pruning_task = self.get_stake_store().await?;
21        let epoch_settings_pruning_task = self.get_epoch_settings_store().await?;
22        let signer_registration_pruning_task = self.get_signer_registration_pruning_task().await?;
23
24        let upkeep_service = Arc::new(AggregatorUpkeepService::new(
25            self.get_sqlite_connection().await?,
26            self.get_sqlite_connection_cardano_transaction_pool()
27                .await?,
28            self.get_event_store_sqlite_connection().await?,
29            self.get_signed_entity_type_lock().await?,
30            vec![
31                stake_pool_pruning_task,
32                epoch_settings_pruning_task,
33                signer_registration_pruning_task,
34            ],
35            self.root_logger(),
36        ));
37
38        Ok(upkeep_service)
39    }
40
41    /// Get the [UpkeepService] instance
42    pub async fn get_upkeep_service(&mut self) -> Result<Arc<dyn UpkeepService>> {
43        get_dependency!(self.upkeep_service)
44    }
45}