Formatting code

This commit is contained in:
Benjamin Sherriff
2024-05-12 09:05:59 -04:00
parent c971c55aa3
commit 1de68f86ae
46 changed files with 1109 additions and 609 deletions

View File

@@ -3,7 +3,10 @@ use log::error;
use serde::{Serialize, Deserialize};
use siren::{Response, Metadata, ServiceError};
use crate::{dnd::spells::{QuerySpell, QueryFilters}, auth::{Auth, verify_role}};
use crate::{
dnd::spells::{QuerySpell, QueryFilters},
auth::{Auth, verify_role},
};
use super::{Spell, InsertSpell};
@@ -29,50 +32,57 @@ struct GetAllParams {
async fn get_all(req: HttpRequest) -> HttpResponse {
let params = match web::Query::<GetAllParams>::from_query(req.query_string()) {
Ok(params) => params,
Err(err) => return ResponseError::error_response(&ServiceError {
status: 422,
message: err.to_string()
})
Err(err) => {
return ResponseError::error_response(&ServiceError {
status: 422,
message: err.to_string(),
})
}
};
let mut filters = QueryFilters::default();
filters.by_name = params.name.clone();
filters.like_name = params.like_name.clone();
filters.by_schools = match &params.schools {
Some(schools) => Some(schools.split(",").map(|s| s.to_string()).collect()),
None => None
None => None,
};
filters.by_levels = match &params.levels {
Some(levels) => Some(levels.split(",").map(|s| match s.to_string().parse::<i32>() {
Ok(level) => level,
Err(_) => 0
}).collect()),
None => None
Some(levels) => Some(
levels
.split(",")
.map(|s| match s.to_string().parse::<i32>() {
Ok(level) => level,
Err(_) => 0,
})
.collect(),
),
None => None,
};
filters.by_ritual = params.ritual;
filters.by_concentration = params.concentration;
filters.by_classes = match &params.classes {
Some(classes) => Some(classes.split(",").map(|s| s.to_string()).collect()),
None => None
None => None,
};
filters.by_damage_inflict = match &params.damage_inflict {
Some(damage_inflict) => Some(damage_inflict.split(",").map(|s| s.to_string()).collect()),
None => None
None => None,
};
filters.by_damage_resist = match &params.damage_resist {
Some(damage_resist) => Some(damage_resist.split(",").map(|s| s.to_string()).collect()),
None => None
None => None,
};
filters.by_conditions = match &params.conditions {
Some(conditions) => Some(conditions.split(",").map(|s| s.to_string()).collect()),
None => None
None => None,
};
filters.by_saving_throw = match &params.saving_throw {
Some(saving_throw) => Some(saving_throw.split(",").map(|s| s.to_string()).collect()),
None => None
None => None,
};
filters.by_attack_type = match &params.attack_type {
Some(attack_type) => Some(attack_type.split(",").map(|s| s.to_string()).collect()),
None => None
None => None,
};
// Limit must be between 1 and 100
let limit = std::cmp::min(std::cmp::max(params.limit.unwrap_or(100), 1), 100);
@@ -81,7 +91,10 @@ async fn get_all(req: HttpRequest) -> HttpResponse {
// Page must be between 1 and max_page
let page = std::cmp::min(std::cmp::max(params.page.unwrap_or(1), 1), max_page);
match web::block(move || QuerySpell::get_all(&filters, limit, page)).await.unwrap() {
match web::block(move || QuerySpell::get_all(&filters, limit, page))
.await
.unwrap()
{
Ok(spells) => {
let mut response: Vec<Spell> = Vec::new();
for query_spell in spells {
@@ -96,10 +109,10 @@ async fn get_all(req: HttpRequest) -> HttpResponse {
total: total_count as i32,
limit,
page,
pages: max_page
})
pages: max_page,
}),
})
},
}
Err(err) => {
error!("{:?}", err.message);
ResponseError::error_response(&err)
@@ -111,10 +124,12 @@ async fn get_all(req: HttpRequest) -> HttpResponse {
async fn get_by_id(id: web::Path<String>) -> HttpResponse {
let id = match id.parse::<i32>() {
Ok(id) => id,
Err(err) => return ResponseError::error_response(&ServiceError {
status: 422,
message: err.to_string()
})
Err(err) => {
return ResponseError::error_response(&ServiceError {
status: 422,
message: err.to_string(),
})
}
};
match web::block(move || QuerySpell::get_by_id(id)).await.unwrap() {
Ok(query_spell) => {
@@ -123,9 +138,9 @@ async fn get_by_id(id: web::Path<String>) -> HttpResponse {
spell.id = Some(id);
HttpResponse::Ok().json(Response {
data: spell,
metadata: None
metadata: None,
})
},
}
Err(err) => {
error!("{:?}", err.message);
ResponseError::error_response(&err)
@@ -136,8 +151,8 @@ async fn get_by_id(id: web::Path<String>) -> HttpResponse {
#[post("/spells")]
async fn create(spell: web::Json<Spell>, auth: Auth) -> HttpResponse {
let _ = match verify_role(&auth, "admin") {
Ok(_) => {},
Err(err) => return ResponseError::error_response(&err)
Ok(_) => {}
Err(err) => return ResponseError::error_response(&err),
};
match InsertSpell::insert(spell.into_inner().into()) {
Ok(spell) => HttpResponse::Created().json(Spell::from(spell)),
@@ -151,17 +166,22 @@ async fn create(spell: web::Json<Spell>, auth: Auth) -> HttpResponse {
#[put("/spells/{id}")]
async fn update(id: web::Path<String>, spell: web::Json<Spell>, auth: Auth) -> HttpResponse {
let _ = match verify_role(&auth, "admin") {
Ok(_) => {},
Err(err) => return ResponseError::error_response(&err)
Ok(_) => {}
Err(err) => return ResponseError::error_response(&err),
};
let id = match id.parse::<i32>() {
Ok(id) => id,
Err(err) => return ResponseError::error_response(&ServiceError {
status: 422,
message: err.to_string()
})
Err(err) => {
return ResponseError::error_response(&ServiceError {
status: 422,
message: err.to_string(),
})
}
};
match web::block(move || InsertSpell::update(id, spell.into_inner().into())).await.unwrap() {
match web::block(move || InsertSpell::update(id, spell.into_inner().into()))
.await
.unwrap()
{
Ok(spell) => HttpResponse::Ok().json(Spell::from(spell)),
Err(err) => {
error!("{:?}", err.message);
@@ -173,15 +193,17 @@ async fn update(id: web::Path<String>, spell: web::Json<Spell>, auth: Auth) -> H
#[delete("/spells/{id}")]
async fn delete(id: web::Path<String>, auth: Auth) -> HttpResponse {
let _ = match verify_role(&auth, "admin") {
Ok(_) => {},
Err(err) => return ResponseError::error_response(&err)
Ok(_) => {}
Err(err) => return ResponseError::error_response(&err),
};
let id = match id.parse::<i32>() {
Ok(id) => id,
Err(err) => return ResponseError::error_response(&ServiceError {
status: 422,
message: err.to_string()
})
Err(err) => {
return ResponseError::error_response(&ServiceError {
status: 422,
message: err.to_string(),
})
}
};
match web::block(move || QuerySpell::delete(id)).await.unwrap() {
Ok(spell) => HttpResponse::Ok().json(Spell::from(spell)),
@@ -193,10 +215,11 @@ async fn delete(id: web::Path<String>, auth: Auth) -> HttpResponse {
}
pub fn init_routes(config: &mut web::ServiceConfig) {
config.service(web::scope("dnd")
.service(get_all)
.service(get_by_id)
.service(create)
.service(update)
config.service(
web::scope("dnd")
.service(get_all)
.service(get_by_id)
.service(create)
.service(update),
);
}
}