Files
dota-random-web/src/enchantment_handlers.rs
T
kwiialyssa edb4cd8613
CI/CD / Build (push) Successful in 5m59s
CI/CD / Frontend Build (push) Successful in 1m27s
CI/CD / Unit Tests (push) Failing after 1m12s
CI/CD / Docker (push) Skipped
CI/CD / Frontend Docker (push) Failing after 3m29s
feat(DRW-001) initial commit!
2026-09-13 20:37:48 +03:00

32 lines
960 B
Rust

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))
}