@@ -18,6 +18,7 @@ pub struct Sync {
1818 app_state : Arc < AppState > ,
1919 auth_token : Option < String > ,
2020 sources : Vec < Box < dyn Source > > ,
21+ client : Option < Arc < Client > > ,
2122}
2223
2324impl Sync {
@@ -27,6 +28,7 @@ impl Sync {
2728 app_state : state. clone ( ) ,
2829 auth_token : state. config . kuma . auth_token . clone ( ) ,
2930 sources : crate :: sources:: get_sources ( state) ,
31+ client : None ,
3032 } )
3133 }
3234
@@ -199,12 +201,21 @@ impl Sync {
199201 } )
200202 }
201203
204+ async fn get_connection ( & mut self ) -> Result < Arc < Client > > {
205+ if self . client . is_none ( ) {
206+ let kuma_config = kuma_client:: Config {
207+ auth_token : self . auth_token . clone ( ) ,
208+ ..self . app_state . config . kuma . clone ( )
209+ } ;
210+ let kuma = Client :: connect ( kuma_config) . await ?;
211+ self . client = Some ( Arc :: new ( kuma) ) ;
212+ }
213+
214+ Ok ( self . client . as_ref ( ) . unwrap ( ) . clone ( ) )
215+ }
216+
202217 async fn do_sync ( & mut self ) -> Result < ( ) > {
203- let kuma_config = kuma_client:: Config {
204- auth_token : self . auth_token . clone ( ) ,
205- ..self . app_state . config . kuma . clone ( )
206- } ;
207- let kuma = Client :: connect ( kuma_config) . await ?;
218+ let kuma = self . get_connection ( ) . await ?;
208219
209220 crate :: migrations:: migrate ( & self . app_state , & kuma) . await ?;
210221
0 commit comments