use axum::{extract::Extension, response::IntoResponse, Json};
use dialtone_common::rest::{actors::actor_exchanges::PutActorRequest, simple_exchanges::SimpleResponse};
use dialtone_sqlx::control::actor::change_default::change_default_actor;
use sqlx::{Pool, Postgres};
use crate::{
authz::authz_actor::authz_owner_or_actoradmin_for_actor,
response::response_error::ResponseError,
start_server::{Claims, SharedState},
};
pub async fn put_default_actor_handler(
claims: Claims,
Json(request): Json<PutActorRequest>,
Extension(pool): Extension<Pool<Postgres>>,
Extension(state): Extension<SharedState>,
) -> Result<impl IntoResponse, ResponseError> {
authz_owner_or_actoradmin_for_actor(&pool, &state, &request.actor_id).await?;
change_default_actor(&pool, &claims.sub, &request.actor_id)
.await?
.map(|_| Json(SimpleResponse::success()))
.ok_or(ResponseError::not_found())
}