diff --git a/crates/ezidam/src/lib.rs b/crates/ezidam/src/lib.rs new file mode 100644 index 0000000..2ce7d16 --- /dev/null +++ b/crates/ezidam/src/lib.rs @@ -0,0 +1,44 @@ +use rocket::{Build, Rocket}; + +mod database; +mod error; +mod file_from_bytes; +mod page; +mod response_timer; +mod routes; +mod shutdown; + +#[cfg(test)] +mod tests; + +pub fn rocket_setup(rocket_builder: Rocket) -> Rocket { + use database::Database; + use error::catchers; + use response_timer::ResponseTimer; + use rocket::fs::{relative, FileServer}; + use rocket_dyn_templates::Template; + + // Response timer + let rocket_builder = ResponseTimer::rocket(rocket_builder); + + // Database + let rocket_builder = Database::rocket(rocket_builder); + + // Templates + let rocket_builder = rocket_builder.attach(Template::fairing()); + + // Static assets + let rocket_builder = rocket_builder.mount("/", FileServer::from(relative!("static"))); + + // Routes + let rocket_builder = routes::routes(rocket_builder); + + // Errors + let rocket_builder = catchers::register(rocket_builder); + + // Shutdown + let rocket_builder = shutdown::shutdown(rocket_builder); + + #[allow(clippy::let_and_return)] + rocket_builder +} diff --git a/crates/ezidam/src/main.rs b/crates/ezidam/src/main.rs index 7acc5dd..510f36d 100644 --- a/crates/ezidam/src/main.rs +++ b/crates/ezidam/src/main.rs @@ -1,40 +1,14 @@ -mod database; -mod error; -mod file_from_bytes; -mod page; -mod response_timer; -mod routes; -mod shutdown; +use ezidam::rocket_setup; +use rocket::{main, Error}; // see for using rocket with main function https://github.com/intellij-rust/intellij-rust/issues/5975#issuecomment-920620289 -#[rocket::main] -async fn main() -> std::result::Result<(), rocket::Error> { - // Build server +#[main] +async fn main() -> Result<(), Error> { + // Rocket with default settings let rocket_builder = rocket::build(); - // Response timer - let rocket_builder = response_timer::ResponseTimer::rocket(rocket_builder); - - // Database - let rocket_builder = database::Database::rocket(rocket_builder); - - // Templates - let rocket_builder = rocket_builder.attach(rocket_dyn_templates::Template::fairing()); - - // Static assets - let rocket_builder = rocket_builder.mount( - "/", - rocket::fs::FileServer::from(rocket::fs::relative!("static")), - ); - - // Routes - let rocket_builder = routes::routes(rocket_builder); - - // Errors - let rocket_builder = error::catchers::register(rocket_builder); - - // Shutdown - let rocket_builder = shutdown::shutdown(rocket_builder); + // Setup server + let rocket_builder = rocket_setup(rocket_builder); // Launch server let _ = rocket_builder