ddstats/src/main.rs

48 lines
1.0 KiB
Rust

#[macro_use] extern crate rocket;
use database::create_pool;
use rocket::serde::json::Json;
use rocket::State;
extern crate dotenv;
use dotenv::dotenv;
mod database;
use database::DatabasePoolStore;
use database::map::Map;
#[get("/maps")]
fn get_all_maps(db_pool: &State<DatabasePoolStore>) -> Option<Json<Vec<Map>>> {
match database::get_maps(&db_pool.0) {
Ok(maps) => Some(Json(maps)),
Err(err) => {
println!("{err}");
None
}
}
}
#[get("/maps/<map>")]
fn get_map_by_name(db_pool: &State<DatabasePoolStore>, map: &str) -> Option<Json<Map>> {
match database::get_map_by_name(&db_pool.0, map) {
Ok(map) => match map {
Some(map) => Some(Json(map)),
None => None
},
Err(err) => {
println!("{err}");
None
}
}
}
#[launch]
fn rocket() -> _ {
dotenv().ok();
let db_pool = create_pool();
rocket::build()
.manage(DatabasePoolStore(db_pool))
.mount("/", routes![get_all_maps, get_map_by_name])
}