feat(DRW-001) initial commit!
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
use axum::extract::{Query, State};
|
||||
use axum::{Json, Router};
|
||||
|
||||
use crate::app_state::AppState;
|
||||
use crate::error_handlers::AppError;
|
||||
use crate::models::{Enchantment, PrimaryAttribute};
|
||||
use crate::roll;
|
||||
|
||||
#[derive(serde::Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
struct EnchantmentsQuery {
|
||||
tier: i32,
|
||||
primary_attribute: PrimaryAttribute,
|
||||
}
|
||||
|
||||
pub async fn init_enchantment_handlers(state: AppState) -> Router {
|
||||
Router::new()
|
||||
.route("/api/enchantments", axum::routing::get(get_enchantments))
|
||||
.with_state(state)
|
||||
}
|
||||
|
||||
async fn get_enchantments(
|
||||
State(state): State<AppState>,
|
||||
Query(q): Query<EnchantmentsQuery>,
|
||||
) -> Result<Json<Vec<Enchantment>>, AppError> {
|
||||
let mut enchantments = roll::fetch_enchantments_for_tier_and_attribute(&state.pool, q.tier, q.primary_attribute).await?;
|
||||
for e in enchantments.iter_mut() {
|
||||
roll::hydrate_enchantment_attributes(&state.pool, e).await?;
|
||||
}
|
||||
Ok(Json(enchantments))
|
||||
}
|
||||
Reference in New Issue
Block a user