use axum::{extract::State, Json};
use std::sync::Arc;
use validator::Validate;
use infra::{
core::AppState,
status::{api_err::ApiErr, ApiResult},
};
use crate::service::{
self,
greeter::{ReqHello, RespHello},
};
pub async fn hello(
State(ctx): State<Arc<AppState>>,
Json(req): Json<ReqHello>,
) -> ApiResult<RespHello> {
if let Err(e) = req.validate() {
return Err(ApiErr::Params(e.to_string()));
}
service::greeter::hello(&ctx, req).await
}