aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorKevin J Hoerr <kjhoerr@protonmail.com>2018-08-26 21:25:43 -0400
committerKevin Hoerr <kjhoerr@submelon.tech>2018-08-31 23:24:45 -0400
commitd4e8221b4fa44b6bf2d598b702d995ea79dfa24e (patch)
tree4bb072377f30ac522185d8a1e2178dc68bbcf84d /src/main.rs
parent0965d62be00a7820f97284704dc71f37e661b412 (diff)
downloadaugust-offensive-d4e8221b4fa44b6bf2d598b702d995ea79dfa24e.tar.gz
august-offensive-d4e8221b4fa44b6bf2d598b702d995ea79dfa24e.tar.bz2
august-offensive-d4e8221b4fa44b6bf2d598b702d995ea79dfa24e.zip
Enable error chaining with error definitions file (empty)
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs
new file mode 100644
index 0000000..4c2c020
--- /dev/null
+++ b/src/main.rs
@@ -0,0 +1,67 @@
+// specify recurse depth for error_chain
+#![recursion_limit = "1024"]
+
+extern crate dotenv;
+#[macro_use]
+extern crate error_chain;
+extern crate actix;
+extern crate actix_web;
+extern crate env_logger;
+extern crate diesel;
+
+mod errors;
+
+use actix_web::{middleware, server, App, HttpRequest};
+use diesel::prelude::*;
+use diesel::pg::PgConnection;
+use dotenv::dotenv;
+use std::env;
+use errors::*;
+
+fn main() {
+ if let Err(ref e) = run() {
+ println!("error: {}", e);
+
+ for e in e.iter().skip(1) {
+ println!("caused by: {}", e);
+ }
+
+ if let Some(backtrace) = e.backtrace() {
+ println!("backtrace: {:?}", backtrace);
+ }
+
+ ::std::process::exit(1);
+ }
+}
+
+fn run() -> Result<()> {
+ dotenv().ok();
+ let db_url = env::var("DATABASE_URL")
+ .expect("DATABASE_URL must be set");
+ let bind_address = env::var("BIND_ADDRESS")
+ .expect("BIND_ADDRESS must be set");
+
+ env::set_var("RUST_LOG", "actix_web=info");
+ env_logger::init();
+ let sys = actix::System::new("august-offensive");
+
+ PgConnection::establish(&db_url)
+ .expect(&format!("Error connecting to {}", db_url));
+
+ server::new(|| {
+ App::new()
+ .middleware(middleware::Logger::default())
+ .resource("/index.html", |r| r.f(index))
+ .resource("/", |r| r.f(index))
+ }).bind(&bind_address)
+ .unwrap()
+ .start();
+
+ println!("Started http server: {}", bind_address);
+ let _ = sys.run();
+ Ok(())
+}
+
+fn index(_req: &HttpRequest) -> &'static str {
+ "Hello, world!"
+}