|
|
|
@ -1,13 +1,13 @@
|
|
|
|
use axum::{extract::State, Json};
|
|
|
|
use axum::{extract::State, Json};
|
|
|
|
|
|
|
|
|
|
|
|
use crate::app_state::AppState;
|
|
|
|
use crate::app_state::AppState;
|
|
|
|
|
|
|
|
use crate::dto::responses::LeaderboardResponse;
|
|
|
|
use crate::error::ApiError;
|
|
|
|
use crate::error::ApiError;
|
|
|
|
use crate::services::game_service::GameService;
|
|
|
|
use crate::services::game_service::GameService;
|
|
|
|
use knowfoolery_shared::models::LeaderboardEntry;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pub async fn get_leaderboard(
|
|
|
|
pub async fn get_leaderboard(
|
|
|
|
State(state): State<AppState>,
|
|
|
|
State(state): State<AppState>,
|
|
|
|
) -> Result<Json<Vec<LeaderboardEntry>>, ApiError> {
|
|
|
|
) -> Result<Json<Vec<LeaderboardResponse>>, ApiError> {
|
|
|
|
let svc = GameService::new(
|
|
|
|
let svc = GameService::new(
|
|
|
|
state.session_repo.clone(),
|
|
|
|
state.session_repo.clone(),
|
|
|
|
state.session_question_repo.clone(),
|
|
|
|
state.session_question_repo.clone(),
|
|
|
|
@ -15,5 +15,6 @@ pub async fn get_leaderboard(
|
|
|
|
state.leaderboard_repo.clone(),
|
|
|
|
state.leaderboard_repo.clone(),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
let entries = svc.get_leaderboard().await?;
|
|
|
|
let entries = svc.get_leaderboard().await?;
|
|
|
|
Ok(Json(entries))
|
|
|
|
let response = entries.into_iter().map(LeaderboardResponse::from).collect();
|
|
|
|
|
|
|
|
Ok(Json(response))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|