error handling improved

main
Mathias Rothenhaeusler 2023-06-13 12:48:41 +02:00
parent 5f840f2235
commit 661856a271
3 changed files with 44 additions and 41 deletions

2
Cargo.lock generated
View File

@ -1280,7 +1280,7 @@ dependencies = [
[[package]] [[package]]
name = "rcc" name = "rcc"
version = "0.1.0" version = "1.0.1"
dependencies = [ dependencies = [
"clap", "clap",
"colored", "colored",

View File

@ -36,7 +36,7 @@ impl Db {
} }
} }
pub fn get_connection(&self) -> PooledConn { pub fn get_connection(&self) -> Result<PooledConn, mysql::Error> {
let url = sprintf!( let url = sprintf!(
"mysql://%s:%s@%s:%s/%s", "mysql://%s:%s@%s:%s/%s",
self.user, self.user,
@ -48,12 +48,9 @@ impl Db {
let pool = match Pool::new(Opts::from_url(&url).unwrap()) { let pool = match Pool::new(Opts::from_url(&url).unwrap()) {
Ok(p) => p, Ok(p) => p,
Err(e) => panic!("Cannot initialize pool: {e}"), Err(e) => return Err(e),
};
let conn: PooledConn = match pool.get_conn() {
Ok(db) => db,
Err(e) => panic!("Cannot connect to DB: {e}"),
}; };
let conn: Result<PooledConn, mysql::Error> = pool.get_conn() ;
conn conn
} }

View File

@ -18,43 +18,49 @@ fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
let args = Cli::parse(); let args = Cli::parse();
let env = args.env.unwrap_or("local".to_string()); let env = args.env.unwrap_or("local".to_string());
let db = Db::initialize(env); let db = Db::initialize(env);
let mut conn: PooledConn = db.get_connection(); let conn_res: Result<PooledConn, mysql::Error> = db.get_connection();
match args.mode { match conn_res {
Commands::Merch { search } => { Ok(mut conn) => match args.mode {
let mut merchant_service: MerchantService = container::get_merchant_service(&mut conn); Commands::Merch { search } => {
merchant_service.get_merchant(&search.unwrap()); let mut merchant_service: MerchantService =
} container::get_merchant_service(&mut conn);
Commands::Schema { search } => { merchant_service.get_merchant(&search.unwrap());
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::Schema { search } => {
Commands::Page { page_id } => { let mut schema_service: SchemaService = container::get_schema_service(&mut conn);
let mut file_service: FileService = container::get_page_service(&mut conn); schema_service.get_columns(&search.unwrap())
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::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}");
} }
} }