48 lines
1.0 KiB
Rust
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])
|
|
} |