use actix_web::{web, HttpResponse};

use crate::server::{
    app_state::{AppState, ConfigUpdateEffects},
    error::AppError,
};

pub async fn get_anthropic_model_mapping(
    app_state: web::Data<AppState>,
) -> Result<HttpResponse, AppError> {
    let config = app_state.config.read().await;
    Ok(HttpResponse::Ok().json(config.anthropic_model_mapping.clone()))
}

pub async fn set_anthropic_model_mapping(
    app_state: web::Data<AppState>,
    payload: web::Json<crate::core::model_mapping::AnthropicModelMapping>,
) -> Result<HttpResponse, AppError> {
    let mapping = payload.into_inner();
    app_state
        .update_config(
            |config| {
                config.anthropic_model_mapping = mapping.clone();
                Ok(())
            },
            ConfigUpdateEffects::default(),
        )
        .await?;
    Ok(HttpResponse::Ok().json(mapping))
}
