@@ -38,10 +38,11 @@ use crate::{
38
38
configuration:: { ExecutionEnvironment , LIST_SNAPSHOTS_MAX_ITEMS } ,
39
39
database:: provider:: {
40
40
CertificateStoreAdapter , EpochSettingStore , SignedEntityStoreAdapter ,
41
- SignerRegistrationStoreAdapter , StakePoolStore ,
41
+ SignerRegistrationStoreAdapter , SignerStore , StakePoolStore ,
42
42
} ,
43
43
event_store:: { EventMessage , EventStore , TransmitterService } ,
44
44
http_server:: routes:: router,
45
+ signer_registerer:: SignerRecorder ,
45
46
stake_distribution_service:: { MithrilStakeDistributionService , StakeDistributionService } ,
46
47
ticker_service:: { MithrilTickerService , TickerService } ,
47
48
tools:: { GcpFileUploader , GenesisToolsDependency } ,
@@ -152,6 +153,9 @@ pub struct DependenciesBuilder {
152
153
153
154
/// Ticker Service (TODO: remove BeaconProvider)
154
155
pub ticker_service : Option < Arc < dyn TickerService > > ,
156
+
157
+ /// Signer Recorder
158
+ pub signer_recorder : Option < Arc < dyn SignerRecorder > > ,
155
159
}
156
160
157
161
impl DependenciesBuilder {
@@ -188,6 +192,7 @@ impl DependenciesBuilder {
188
192
api_version_provider : None ,
189
193
stake_distribution_service : None ,
190
194
ticker_service : None ,
195
+ signer_recorder : None ,
191
196
}
192
197
}
193
198
@@ -763,6 +768,7 @@ impl DependenciesBuilder {
763
768
let registerer = MithrilSignerRegisterer :: new (
764
769
self . get_chain_observer ( ) . await ?,
765
770
self . get_verification_key_store ( ) . await ?,
771
+ self . get_signer_recorder ( ) . await ?,
766
772
) ;
767
773
768
774
Ok ( Arc :: new ( registerer) )
@@ -946,6 +952,21 @@ impl DependenciesBuilder {
946
952
Ok ( self . stake_distribution_service . as_ref ( ) . cloned ( ) . unwrap ( ) )
947
953
}
948
954
955
+ async fn build_signer_recorder ( & mut self ) -> Result < Arc < dyn SignerRecorder > > {
956
+ let signer_recorder = Arc :: new ( SignerStore :: new ( self . get_sqlite_connection ( ) . await ?) ) ;
957
+
958
+ Ok ( signer_recorder)
959
+ }
960
+
961
+ /// [SignerRecorder]
962
+ pub async fn get_signer_recorder ( & mut self ) -> Result < Arc < dyn SignerRecorder > > {
963
+ if self . signer_recorder . is_none ( ) {
964
+ self . signer_recorder = Some ( self . build_signer_recorder ( ) . await ?) ;
965
+ }
966
+
967
+ Ok ( self . signer_recorder . as_ref ( ) . cloned ( ) . unwrap ( ) )
968
+ }
969
+
949
970
/// Return an unconfigured [DependencyManager]
950
971
pub async fn build_dependency_container ( & mut self ) -> Result < DependencyManager > {
951
972
let dependency_manager = DependencyManager {
@@ -974,6 +995,7 @@ impl DependenciesBuilder {
974
995
event_transmitter : self . get_event_transmitter ( ) . await ?,
975
996
api_version_provider : self . get_api_version_provider ( ) . await ?,
976
997
stake_distribution_service : self . get_stake_distribution_service ( ) . await ?,
998
+ signer_recorder : self . get_signer_recorder ( ) . await ?,
977
999
} ;
978
1000
979
1001
Ok ( dependency_manager)
0 commit comments