diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs index 5c858aa..e031e73 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,8 +17,34 @@ */ #![feature(proc_macro_hygiene, decl_macro)] -fn main() { - rocket::ignite() +use rocket_contrib::{ + database, + databases::diesel, +}; +use std::collections::HashMap; +use std::error::Error; +use std::result::Result; + +#[database("main")] +struct DbConn(diesel::PgConnection); + +fn main() -> Result<(), Box<dyn Error>> { + let db_url = dotenv::var("DATABASE_URL") + .map_err(|_| "No database! Set DATABASE_URL env var and try again.")?; + + let mut db_config = HashMap::new(); + db_config.insert("url", rocket::config::Value::from(db_url)); + + let mut databases = HashMap::new(); + databases.insert("main", rocket::config::Value::from(db_config)); + + let mut config = rocket::Config::active()?; + config.extras.insert("databases".into(), rocket::config::Value::from(databases)); + + rocket::custom(config) + .attach(DbConn::fairing()) .mount("/", rocket_contrib::serve::StaticFiles::from("./public")) .launch(); + + Ok(()) } |