diff options
author | Harald Eilertsen <haraldei@anduin.net> | 2019-03-04 15:06:54 +0100 |
---|---|---|
committer | Harald Eilertsen <haraldei@anduin.net> | 2019-03-04 15:06:54 +0100 |
commit | f93ff38767e23602108f86992c453f7973dd8bd0 (patch) | |
tree | 78cd8d2784e494d81f341983fffa73e9e845479f /src | |
parent | 59a44cd2629b424aa2723ba9f502bd7e455c6a1b (diff) | |
download | ramaskrik-social-f93ff38767e23602108f86992c453f7973dd8bd0.tar.gz ramaskrik-social-f93ff38767e23602108f86992c453f7973dd8bd0.tar.bz2 ramaskrik-social-f93ff38767e23602108f86992c453f7973dd8bd0.zip |
Set up database and connection pool with rocket_contrib::databases.
Set the env var DATABASE_URL before running the server. A .env file in
the root of the project is also supported.
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(()) } |