aboutsummaryrefslogtreecommitdiffstats
path: root/src/remote/server.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/remote/server.rs46
1 files changed, 40 insertions, 6 deletions
diff --git a/src/remote/server.rs b/src/remote/server.rs
index bc1dc2bd..4409f646 100644
--- a/src/remote/server.rs
+++ b/src/remote/server.rs
@@ -1,8 +1,42 @@
-#[get("/")]
-const fn index() -> &'static str {
- "Hello, world!"
-}
+use rocket::config::{Config, Environment, LoggingLevel, Value};
+
+use std::collections::HashMap;
+
+use crate::remote::database::establish_connection;
+use crate::settings::Settings;
+
+use super::database::AtuinDbConn;
+
+// a bunch of these imports are generated by macros, it's easier to wildcard
+#[allow(clippy::clippy::wildcard_imports)]
+use super::views::*;
+
+#[allow(clippy::clippy::wildcard_imports)]
+use super::auth::*;
+
+embed_migrations!("migrations");
+
+pub fn launch(settings: &Settings) {
+ let mut database_config = HashMap::new();
+ let mut databases = HashMap::new();
+
+ database_config.insert("url", Value::from(settings.remote.db.url.clone()));
+ databases.insert("atuin", Value::from(database_config));
+
+ let connection = establish_connection(settings);
+ embedded_migrations::run(&connection).expect("failed to run migrations");
+
+ let config = Config::build(Environment::Production)
+ .address("0.0.0.0")
+ .log_level(LoggingLevel::Normal)
+ .port(8080)
+ .extra("databases", databases)
+ .finalize()
+ .unwrap();
-pub fn launch() {
- rocket::ignite().mount("/", routes![index]).launch();
+ let app = rocket::custom(config);
+ app.mount("/", routes![index, register, add_history, login])
+ .attach(AtuinDbConn::fairing())
+ .register(catchers![internal_error, bad_request])
+ .launch();
}