From 661856a27136ba760acc011ea708946ee74738a5 Mon Sep 17 00:00:00 2001 From: Mathias Rothenhaeusler Date: Tue, 13 Jun 2023 12:48:41 +0200 Subject: [PATCH] error handling improved --- Cargo.lock | 2 +- src/database/db.rs | 9 ++---- src/main.rs | 74 +++++++++++++++++++++++++--------------------- 3 files changed, 44 insertions(+), 41 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f5b4e01..10e01c6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1280,7 +1280,7 @@ dependencies = [ [[package]] name = "rcc" -version = "0.1.0" +version = "1.0.1" dependencies = [ "clap", "colored", diff --git a/src/database/db.rs b/src/database/db.rs index a31955b..311cc07 100644 --- a/src/database/db.rs +++ b/src/database/db.rs @@ -36,7 +36,7 @@ impl Db { } } - pub fn get_connection(&self) -> PooledConn { + pub fn get_connection(&self) -> Result { let url = sprintf!( "mysql://%s:%s@%s:%s/%s", self.user, @@ -48,12 +48,9 @@ impl Db { let pool = match Pool::new(Opts::from_url(&url).unwrap()) { Ok(p) => p, - Err(e) => panic!("Cannot initialize pool: {e}"), - }; - let conn: PooledConn = match pool.get_conn() { - Ok(db) => db, - Err(e) => panic!("Cannot connect to DB: {e}"), + Err(e) => return Err(e), }; + let conn: Result = pool.get_conn() ; conn } diff --git a/src/main.rs b/src/main.rs index 81f81ad..c786b22 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,43 +18,49 @@ fn main() -> std::result::Result<(), Box> { let args = Cli::parse(); let env = args.env.unwrap_or("local".to_string()); let db = Db::initialize(env); - let mut conn: PooledConn = db.get_connection(); + let conn_res: Result = db.get_connection(); - match args.mode { - Commands::Merch { search } => { - let mut merchant_service: MerchantService = container::get_merchant_service(&mut conn); - merchant_service.get_merchant(&search.unwrap()); - } - Commands::Schema { search } => { - let mut schema_service: SchemaService = container::get_schema_service(&mut conn); - schema_service.get_columns(&search.unwrap()) - } - Commands::Filter { - filter_id, - config, - all, - log, - } => { - let mut filter_service: FilterService = container::get_filter_service(&mut conn); - if config { - filter_service.get_filter_configs(&filter_id) - } else if log { - filter_service.get_filter_log(&filter_id) - } else { - filter_service.get_filter(&filter_id, all) + match conn_res { + Ok(mut conn) => match args.mode { + Commands::Merch { search } => { + let mut merchant_service: MerchantService = + container::get_merchant_service(&mut conn); + merchant_service.get_merchant(&search.unwrap()); } - } - Commands::Page { page_id } => { - let mut file_service: FileService = container::get_page_service(&mut conn); - file_service.get_page(&page_id); - } - Commands::Job { job_id, log } => { - let mut job_service: JobService = container::get_job_service(&mut conn); - if log { - job_service.get_job_log(&job_id); - } else { - job_service.get_job_by_id(&job_id); + Commands::Schema { search } => { + let mut schema_service: SchemaService = container::get_schema_service(&mut conn); + schema_service.get_columns(&search.unwrap()) } + Commands::Filter { + filter_id, + config, + all, + log, + } => { + let mut filter_service: FilterService = container::get_filter_service(&mut conn); + if config { + filter_service.get_filter_configs(&filter_id) + } else if log { + filter_service.get_filter_log(&filter_id) + } else { + filter_service.get_filter(&filter_id, all) + } + } + Commands::Page { page_id } => { + let mut file_service: FileService = container::get_page_service(&mut conn); + file_service.get_page(&page_id); + } + Commands::Job { job_id, log } => { + let mut job_service: JobService = container::get_job_service(&mut conn); + if log { + job_service.get_job_log(&job_id); + } else { + job_service.get_job_by_id(&job_id); + } + } + }, + Err(e) => { + println!("Error connecting DB: {e}"); } }