summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/config.rs15
-rw-r--r--src/main.rs16
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!")),
)