use std::sync::Arc;
use axum::{Extension, Json, extract::State, response::Redirect};
use pib_service_api_auth::user::UserInfo;
use pib_service_api_types::body::{GetBodyListResponseBody, PostBodyRequestBody};
use pib_service_facade::Service;
use crate::Result;
pub(crate) mod by_body_id;
pub(crate) async fn get(
State(service): State<Arc<dyn Service>>,
Extension(user): Extension<UserInfo>,
) -> Result<Json<GetBodyListResponseBody>> {
Ok(Json(service.body_get(user).await?))
}
pub(crate) async fn post(
State(service): State<Arc<dyn Service>>,
Extension(user): Extension<UserInfo>,
Json(body): Json<PostBodyRequestBody>,
) -> Result<Redirect> {
let body_id = service.body_post(user, body).await?;
Ok(Redirect::to(&format!("/body/{body_id}")))
}