From 89722ebd6dcdc7067277050a431fbb7b9ea1dcf5 Mon Sep 17 00:00:00 2001 From: "Adam T. Carpenter" Date: Wed, 7 Oct 2020 09:37:41 -0400 Subject: sorted out image repo, error handling --- dichroism/src/main.rs | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 dichroism/src/main.rs (limited to 'dichroism/src/main.rs') diff --git a/dichroism/src/main.rs b/dichroism/src/main.rs new file mode 100644 index 0000000..57ac652 --- /dev/null +++ b/dichroism/src/main.rs @@ -0,0 +1,59 @@ +#[macro_use] +extern crate serde; +#[macro_use] +extern crate diesel; + +use actix_web::{App, HttpServer}; +use config::Config; +use diesel::prelude::SqliteConnection; +use diesel::r2d2::ConnectionManager; +use diesel::r2d2::Pool; +use listenfd::ListenFd; +use result::Result; + +mod config; +mod constants; +mod error; +mod handlers; +mod image_api; +mod image_repo; +mod models; +mod product_repo; +mod result; +mod schema; +mod types; + +#[actix_web::main] +async fn main() -> Result<()> { + // Gather config. + let config = Config::from_toml()?; + let bind_addr = config.bind_addr; + + // Initialize DB connection pool. + let manager = ConnectionManager::::new(&config.db_url); + let pool = Pool::builder().build(manager)?; + + // Initialize application server. + let mut server = HttpServer::new(move || { + App::new() + .data(config.clone()) + .data(pool.clone()) + .service(handlers::hello) + .service(handlers::create_image) + .service(handlers::get_images) + }); + + let mut listenfd = ListenFd::from_env(); + server = if let Some(l) = listenfd + .take_tcp_listener(0) + .expect("Unable to grab TCP listener!") + { + // If using listenfd, use it to allow for cargo watch auto-reloading. + server.listen(l)? + } else { + // Bind to config for release. + server.bind(bind_addr)? + }; + + Ok(server.run().await?) +} -- cgit v1.2.3