diff --git a/html-router/src/routes/admin/handlers.rs b/html-router/src/routes/admin/handlers.rs index b02189c..97bcb07 100644 --- a/html-router/src/routes/admin/handlers.rs +++ b/html-router/src/routes/admin/handlers.rs @@ -39,27 +39,31 @@ pub async fn show_admin_panel( State(state): State, RequireUser(user): RequireUser, ) -> Result { - let settings = SystemSettings::get_current(&state.db).await?; - let analytics = Analytics::get_current(&state.db).await?; - let users_count = Analytics::get_users_amount(&state.db).await?; - let conversation_archive = User::get_user_conversations(&user.id, &state.db).await?; - let available_models = state - .openai_client - .models() - .list() - .await - .map_err(|e| AppError::InternalError(e.to_string()))?; + let ( + settings_res, + analytics_res, + user_count_res, + conversation_archive_res, + available_models_res, + ) = tokio::join!( + SystemSettings::get_current(&state.db), + Analytics::get_current(&state.db), + Analytics::get_users_amount(&state.db), + User::get_user_conversations(&user.id, &state.db), + async { state.openai_client.models().list().await } + ); Ok(TemplateResponse::new_template( "admin/base.html", AdminPanelData { user, - settings, - analytics, - available_models, - users: users_count, + settings: settings_res?, + analytics: analytics_res?, + available_models: available_models_res + .map_err(|e| AppError::InternalError(e.to_string()))?, + users: user_count_res?, default_query_prompt: DEFAULT_QUERY_SYSTEM_PROMPT.to_string(), - conversation_archive, + conversation_archive: conversation_archive_res?, }, )) }