From 8a40930cde183deb4451a74215ffc9dc13230568 Mon Sep 17 00:00:00 2001 From: Dmitri Date: Fri, 24 Apr 2026 21:11:29 +0200 Subject: [PATCH] refactor db --- src/database.rs | 22 ++++++++++++++++++++++ src/main.rs | 17 +++-------------- 2 files changed, 25 insertions(+), 14 deletions(-) create mode 100644 src/database.rs diff --git a/src/database.rs b/src/database.rs new file mode 100644 index 0000000..d10613a --- /dev/null +++ b/src/database.rs @@ -0,0 +1,22 @@ +use std::process::exit; + +use sqlx::{Pool, Postgres, postgres::PgPoolOptions}; + +pub async fn init_database(db_url: &str) -> Pool { + let db = match PgPoolOptions::new().connect(db_url).await { + Ok(p) => p, + Err(_) => { + tracing::error!("Failed to connect to the database"); + exit(1); + } + }; + match sqlx::migrate!().run(&db).await { + Ok(_) => tracing::info!("Migration completed succesfully"), + Err(_) => { + tracing::error!("Failed to apply migrations"); + exit(1) + } + } + + db +} diff --git a/src/main.rs b/src/main.rs index 2b77e38..1ffdb0b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,23 +1,12 @@ -use std::process::exit; - -use sqlx::postgres::PgPoolOptions; +use crate::database::init_database; mod config; +mod database; mod logging; #[tokio::main] async fn main() { let cfg = config::Config::load(); let _logging_guard = logging::LoggerConfig::init(cfg.app_env); - let db = match PgPoolOptions::new().connect(&cfg.db_url).await { - Ok(p) => p, - Err(_) => { - tracing::error!("Failed to connect to the database"); - exit(1); - } - }; - match sqlx::migrate!().run(&db).await { - Ok(_) => tracing::info!("Migration completed succesfully"), - Err(_) => tracing::error!("Failed to apply migrations"), - } + let db = init_database(&cfg.db_url).await; }