use crate::registry::{services, types::*}; use axum::{ extract::{Path, State}, http::StatusCode, Json, }; use sqlx::PgPool; // ===== Local Admin Handlers ===== pub async fn create_local_admin_handler( State(pool): State, Json(req): Json, ) -> Result, (StatusCode, Json)> { match services::local_admin::create_local_admin(&pool, req).await { Ok(admin) => Ok(Json(admin)), Err(e) => Err(( StatusCode::INTERNAL_SERVER_ERROR, Json(ErrorResponse { error: format!("Failed to create local admin: {}", e), }), )), } } pub async fn update_local_admin_status_handler( State(pool): State, Json(req): Json, ) -> Result, (StatusCode, Json)> { match services::local_admin::update_local_admin_status(&pool, req).await { Ok(admin) => Ok(Json(admin)), Err(e) => Err(( StatusCode::INTERNAL_SERVER_ERROR, Json(ErrorResponse { error: format!("Failed to update local admin status: {}", e), }), )), } } pub async fn get_local_admin_handler( State(pool): State, Path(pubkey): Path, ) -> Result, (StatusCode, Json)> { match services::local_admin::get_local_admin(&pool, &pubkey).await { Ok(admin) => Ok(Json(admin)), Err(sqlx::Error::RowNotFound) => Err(( StatusCode::NOT_FOUND, Json(ErrorResponse { error: "Local admin not found".to_string(), }), )), Err(e) => Err(( StatusCode::INTERNAL_SERVER_ERROR, Json(ErrorResponse { error: format!("Database error: {}", e), }), )), } } pub async fn list_local_admins_handler( State(pool): State, ) -> Result>, (StatusCode, Json)> { match services::local_admin::list_local_admins(&pool).await { Ok(admins) => Ok(Json(admins)), Err(e) => Err(( StatusCode::INTERNAL_SERVER_ERROR, Json(ErrorResponse { error: format!("Failed to list local admins: {}", e), }), )), } }