File tree Expand file tree Collapse file tree 5 files changed +28
-36
lines changed Expand file tree Collapse file tree 5 files changed +28
-36
lines changed Original file line number Diff line number Diff line change @@ -5,10 +5,7 @@ use academy_persistence_contracts::{Database, Transaction};
55use clap:: Subcommand ;
66use uuid:: Uuid ;
77
8- use crate :: {
9- cache, database, email,
10- environment:: { ConfigProvider , Provider , types} ,
11- } ;
8+ use crate :: environment:: { Provider , types} ;
129
1310#[ derive( Debug , Subcommand ) ]
1411pub enum AdminCoinCommand {
@@ -62,11 +59,7 @@ async fn add(
6259 description : Option < String > ,
6360 no_credit_note : bool ,
6461) -> anyhow:: Result < ( ) > {
65- let database = database:: connect ( & config. database ) . await ?;
66- let cache = cache:: connect ( & config. cache ) . await ?;
67- let email_service = email:: connect ( & config. email ) . await ?;
68- let config_provider = ConfigProvider :: new ( & config) ?;
69- let mut provider = Provider :: new ( config_provider, database, cache, email_service) ;
62+ let mut provider = Provider :: from_config ( & config) . await ?;
7063
7164 let db: types:: Database = provider. provide ( ) ;
7265 let mut txn = db. begin_transaction ( ) . await ?;
Original file line number Diff line number Diff line change @@ -6,10 +6,7 @@ use clap::Subcommand;
66use futures:: TryStreamExt ;
77use indicatif:: ProgressBar ;
88
9- use crate :: {
10- cache, database, email,
11- environment:: { ConfigProvider , Provider , types} ,
12- } ;
9+ use crate :: environment:: { Provider , types} ;
1310
1411#[ derive( Debug , Subcommand ) ]
1512pub enum AdminInvoiceCommand {
@@ -27,11 +24,7 @@ impl AdminInvoiceCommand {
2724}
2825
2926async fn generate ( config : Config ) -> anyhow:: Result < ( ) > {
30- let database = database:: connect ( & config. database ) . await ?;
31- let cache = cache:: connect ( & config. cache ) . await ?;
32- let email_service = email:: connect ( & config. email ) . await ?;
33- let config_provider = ConfigProvider :: new ( & config) ?;
34- let mut provider = Provider :: new ( config_provider, database, cache, email_service) ;
27+ let mut provider = Provider :: from_config ( & config) . await ?;
3528
3629 let db: types:: Database = provider. provide ( ) ;
3730 let mut txn = db. begin_transaction ( ) . await ?;
Original file line number Diff line number Diff line change @@ -6,12 +6,9 @@ use anyhow::Context;
66use clap:: Subcommand ;
77use tracing:: info;
88
9- use crate :: {
10- cache, database, email,
11- environment:: {
12- ConfigProvider , Provider ,
13- types:: { self , Database } ,
14- } ,
9+ use crate :: environment:: {
10+ Provider ,
11+ types:: { self , Database } ,
1512} ;
1613
1714#[ derive( Debug , Subcommand ) ]
@@ -61,11 +58,7 @@ async fn create(
6158 enabled : bool ,
6259 email_verified : bool ,
6360) -> anyhow:: Result < ( ) > {
64- let database = database:: connect ( & config. database ) . await ?;
65- let cache = cache:: connect ( & config. cache ) . await ?;
66- let email_service = email:: connect ( & config. email ) . await ?;
67- let config_provider = ConfigProvider :: new ( & config) ?;
68- let mut provider = Provider :: new ( config_provider, database, cache, email_service) ;
61+ let mut provider = Provider :: from_config ( & config) . await ?;
6962
7063 let db: Database = provider. provide ( ) ;
7164 let mut txn = db. begin_transaction ( ) . await ?;
Original file line number Diff line number Diff line change @@ -11,8 +11,8 @@ use clap::Subcommand;
1111use tracing:: info;
1212
1313use crate :: {
14- cache , database, email ,
15- environment:: { ConfigProvider , Provider , types} ,
14+ database,
15+ environment:: { Provider , types} ,
1616} ;
1717
1818#[ derive( Debug , Subcommand ) ]
@@ -50,11 +50,7 @@ async fn prune_database(config: Config) -> anyhow::Result<()> {
5050}
5151
5252async fn refresh_premium ( config : Config ) -> anyhow:: Result < ( ) > {
53- let database = database:: connect ( & config. database ) . await ?;
54- let cache = cache:: connect ( & config. cache ) . await ?;
55- let email_service = email:: connect ( & config. email ) . await ?;
56- let config_provider = ConfigProvider :: new ( & config) ?;
57- let mut provider = Provider :: new ( config_provider, database, cache, email_service) ;
53+ let mut provider = Provider :: from_config ( & config) . await ?;
5854
5955 let db: types:: Database = provider. provide ( ) ;
6056 let mut txn = db. begin_transaction ( ) . await ?;
Original file line number Diff line number Diff line change @@ -23,6 +23,7 @@ use academy_shared_impl::{
2323 jwt:: JwtServiceConfig ,
2424 totp:: TotpServiceConfig ,
2525} ;
26+ use anyhow:: Context ;
2627use types:: { Cache , Database , Email } ;
2728
2829pub mod types;
@@ -75,6 +76,22 @@ impl Provider {
7576 config,
7677 }
7778 }
79+
80+ pub async fn from_config ( config : & Config ) -> anyhow:: Result < Self > {
81+ let config_provider =
82+ ConfigProvider :: new ( config) . context ( "Failed to build config provider" ) ?;
83+ let database = crate :: database:: connect ( & config. database )
84+ . await
85+ . context ( "Failed to connect to database" ) ?;
86+ let cache = crate :: cache:: connect ( & config. cache )
87+ . await
88+ . context ( "Failed to connect to cache" ) ?;
89+ let email = crate :: email:: connect ( & config. email )
90+ . await
91+ . context ( "Failed to connect to email server" ) ?;
92+
93+ Ok ( Self :: new ( config_provider, database, cache, email) )
94+ }
7895}
7996
8097provider ! {
You can’t perform that action at this time.
0 commit comments