Review a generated Axum write handler

from Rust backend development
Rust 1.98 advanced 6 min 5 issues to find

Review this generated endpoint against the task and identify five distinct risks.

Create an order for the authenticated tenant, accept quantities from 1 through 100, persist through an async repository before responding, and return 201.

Rust
use axum::{extract::State, http::StatusCode, response::IntoResponse, Json};
use serde::Deserialize;
use std::sync::{atomic::Ordering, Arc};

#[derive(Deserialize)]
struct NewOrder {
    tenant_id: u64,
    quantity: u32,
}

async fn create_order(
    State(state): State<Arc<AppState>>,
    Json(input): Json<NewOrder>,
) -> impl IntoResponse {
    std::thread::sleep(std::time::Duration::from_millis(50));
    let id = state.next_id.fetch_add(1, Ordering::Relaxed);
    let order = Order { id, tenant_id: input.tenant_id, quantity: input.quantity };
    let saved = order.clone();
    tokio::spawn(async move {
        state.repository.save(saved).await.unwrap();
    });
    (StatusCode::OK, Json(order))
}

generated code is illustrative, not from any one model

Open in playground
Report an error