diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/config.rs | 15 | ||||
-rw-r--r-- | src/main.rs | 16 |
2 files changed, 29 insertions, 2 deletions
diff --git a/src/config.rs b/src/config.rs new file mode 100644 index 0000000..f10fd08 --- /dev/null +++ b/src/config.rs @@ -0,0 +1,15 @@ +pub use config::ConfigError; +use serde::Deserialize; + +#[derive(Deserialize)] +pub struct Config { + pub pg: deadpool_postgres::Config, +} + +impl Config { + pub fn from_env() -> Result<Self, ConfigError> { + let mut cfg = config::Config::new(); + cfg.merge(config::Environment::new())?; + cfg.try_into() + } +} diff --git a/src/main.rs b/src/main.rs index 594491f..0ef80bb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,8 +1,20 @@ +mod config; + use actix_web::{web, App, HttpResponse, HttpServer}; +use dotenv::dotenv; +use tokio_postgres::NoTls; + +use crate::config::Config; + #[actix_rt::main] async fn main() -> std::io::Result<()> { - HttpServer::new(|| { - App::new().service( + dotenv().ok(); + + let config = Config::from_env().unwrap(); + let pool = config.pg.create_pool(NoTls).unwrap(); + + HttpServer::new(move || { + App::new().data(pool.clone()).service( web::resource("/") .to(|| HttpResponse::Ok().body("Hello from Rust!")), ) |