refactor main into lib, with function to set up rocket

This commit is contained in:
Philippe Loctaux 2023-03-05 00:35:34 +01:00
parent 279f0bfaa3
commit a4ff4bca20
2 changed files with 51 additions and 33 deletions

44
crates/ezidam/src/lib.rs Normal file
View file

@ -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<Build>) -> Rocket<Build> {
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
}

View file

@ -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