#[macro_use] extern crate log; #[macro_use] extern crate diesel; #[macro_use] extern crate diesel_migrations; use actix_web::{App, HttpServer}; use dotenv::dotenv; use listenfd::ListenFd; use std::env; mod db; mod product; mod schema; mod api_error; #[actix_rt::main] async fn main() -> std::io::Result<()> { dotenv().ok(); env_logger::init(); db::init(); let mut listenfd = ListenFd::from_env(); let mut server = HttpServer::new(|| App::new() .configure(product::init_routes) ); server = match listenfd.take_tcp_listener(0)? { Some(listener) => server.listen(listener)?, None => { let host = env::var("HOST").expect("Host not set in .env file"); let port = env::var("PORT").expect("Port not set in .env file"); server.bind(format!("{}:{}", host, port))? }, }; info!("Starting Server"); server.run().await }