diff options
Diffstat (limited to 'server/src/main.rs')
-rw-r--r-- | server/src/main.rs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/server/src/main.rs b/server/src/main.rs new file mode 100644 index 0000000..b7a3249 --- /dev/null +++ b/server/src/main.rs @@ -0,0 +1,45 @@ +#![feature(box_syntax)] + +use crate::frontend::style::CSS_BUNDLE; +use database::Database; +use frontend::pages::{home::page_home, node::page_library_node}; +use library::Library; +use rocket::{get, http::ContentType, launch, routes}; +use std::fs::read_to_string; + +pub mod database; +pub mod frontend; +pub mod library; +pub mod metadata; + +#[get("/assets/style.css")] +async fn assets_style() -> (ContentType, String) { + ( + ContentType::CSS, + if cfg!(debug_assertions) { + read_to_string("src/frontend/style/layout.css").unwrap() + } else { + CSS_BUNDLE.to_string() + }, + ) +} + +pub struct AppState { + pub database: Database, + pub library: Library, +} + +#[launch] +fn rocket() -> _ { + env_logger::init_from_env("LOG"); + let db_path = std::env::var("DB_PATH").unwrap_or("data/db".to_string()); + let lib_path = std::env::var("LIB_PATH").unwrap_or("data/library".to_string()); + let state = AppState { + library: Library::open(&lib_path).unwrap(), + database: Database::open(&db_path).unwrap(), + }; + + rocket::build() + .manage(state) + .mount("/", routes![page_home, page_library_node, assets_style]) +} |