I WANNA DIE!
This commit is contained in:
parent
c385836aa0
commit
40e8974d6b
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -19,3 +19,6 @@ Cargo.lock
|
||||||
# Added by cargo
|
# Added by cargo
|
||||||
|
|
||||||
/target
|
/target
|
||||||
|
|
||||||
|
data/*.sqlite
|
||||||
|
.env
|
|
@ -6,4 +6,6 @@ edition = "2021"
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
rocket = "0.5.0-rc.2"
|
rocket = { version = "0.5.0-rc.2", features = ["json"] }
|
||||||
|
mysql = "22.2.0"
|
||||||
|
dotenv = "0.15.0"
|
44
src/database/mod.rs
Normal file
44
src/database/mod.rs
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
use std::env;
|
||||||
|
use std::result::Result;
|
||||||
|
use std::error::Error;
|
||||||
|
use mysql::*;
|
||||||
|
use mysql::prelude::*;
|
||||||
|
use crate::types;
|
||||||
|
|
||||||
|
pub fn get_maps() -> Result<Vec<types::Map>, Box<dyn Error>> {
|
||||||
|
let mut conn = create_pool()?.get_conn()?;
|
||||||
|
|
||||||
|
let maps = conn.query_map(
|
||||||
|
"SELECT * FROM record_maps",
|
||||||
|
|(name, server, points, stars, mapper, timestamp)| types::Map {
|
||||||
|
name, server, points, stars, mapper, timestamp
|
||||||
|
}
|
||||||
|
)?;
|
||||||
|
|
||||||
|
Ok(maps)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_map_by_name(name: &str) -> Result<Option<types::Map>, Box<dyn Error>> {
|
||||||
|
let mut conn = create_pool()?.get_conn()?;
|
||||||
|
let stmt = conn.prep("SELECT * FROM record_maps WHERE Map = ?")?;
|
||||||
|
|
||||||
|
let map = conn.exec_first(
|
||||||
|
&stmt,
|
||||||
|
(name,)
|
||||||
|
)?;
|
||||||
|
|
||||||
|
Ok(match map {
|
||||||
|
Some((name, server, points, stars, mapper, timestamp)) => Some(types::Map {
|
||||||
|
name, server, points, stars, mapper, timestamp
|
||||||
|
}),
|
||||||
|
None => None
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
pub fn create_pool() -> Result<Pool, Box<dyn Error>> {
|
||||||
|
let url = env::var("DB_URI")?;
|
||||||
|
let pool = Pool::new(url.as_str())?;
|
||||||
|
Ok(pool)
|
||||||
|
}
|
45
src/main.rs
45
src/main.rs
|
@ -1,26 +1,41 @@
|
||||||
#[macro_use] extern crate rocket;
|
#[macro_use] extern crate rocket;
|
||||||
|
use rocket::serde::json::Json;
|
||||||
|
|
||||||
|
extern crate dotenv;
|
||||||
|
use dotenv::dotenv;
|
||||||
|
|
||||||
mod types;
|
mod types;
|
||||||
|
mod database;
|
||||||
|
|
||||||
#[get("/")]
|
#[get("/maps")]
|
||||||
fn index() -> &'static str {
|
fn get_all_maps() -> Option<Json<Vec<types::Map>>> {
|
||||||
"Hello, world!"
|
match database::get_maps() {
|
||||||
|
Ok(maps) => Some(Json(maps)),
|
||||||
|
Err(err) => {
|
||||||
|
println!("{err}");
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[get("/map")]
|
#[get("/maps/<map>")]
|
||||||
fn map() -> String {
|
fn get_map_by_name(map: &str) -> Option<Json<types::Map>> {
|
||||||
let map = types::Map {
|
match database::get_map_by_name(map) {
|
||||||
name: "Test".into(),
|
Ok(map) => match map {
|
||||||
server: "USA".into(),
|
Some(map) => Some(Json(map)),
|
||||||
points: 5,
|
None => None
|
||||||
stars: 3,
|
},
|
||||||
mapper: "Furo".into()
|
Err(err) => {
|
||||||
};
|
println!("{err}");
|
||||||
|
None
|
||||||
format!("Map {} by {}", map.name, map.mapper)
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#[launch]
|
#[launch]
|
||||||
fn rocket() -> _ {
|
fn rocket() -> _ {
|
||||||
rocket::build().mount("/", routes![index, map])
|
dotenv().ok();
|
||||||
|
rocket::build()
|
||||||
|
.mount("/", routes![get_all_maps, get_map_by_name])
|
||||||
}
|
}
|
|
@ -1,8 +1,12 @@
|
||||||
#[derive(Debug)]
|
use rocket::serde::{Serialize, Deserialize};
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||||
|
#[serde(crate = "rocket::serde")]
|
||||||
pub struct Map {
|
pub struct Map {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub server: String,
|
pub server: String,
|
||||||
pub points: i8,
|
pub points: i8,
|
||||||
pub stars: i8,
|
pub stars: i8,
|
||||||
pub mapper: String,
|
pub mapper: String,
|
||||||
|
pub timestamp: String,
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user