dialtone_axum 0.1.0

Dialtone Axum Back-end
Documentation
use axum::{response::IntoResponse, Extension, Json};
use dialtone_common::rest::{
    ap_objects::ap_object_exchanges::PutApObjectSysData, simple_exchanges::SimpleResponse,
};
use dialtone_sqlx::db::ap_object::update_system_data::update_ap_object_system_data;
use sqlx::{Pool, Postgres};

use crate::{
    authz::authz_ap_object::authz_contentadmin_for_ap_object,
    response::response_error::ResponseError,
    start_server::{Claims, SharedState},
};

pub async fn put_ap_object_sysdata_handler(
    Json(request): Json<PutApObjectSysData>,
    _: Claims,
    Extension(pool): Extension<Pool<Postgres>>,
    Extension(state): Extension<SharedState>,
) -> Result<impl IntoResponse, ResponseError> {
    authz_contentadmin_for_ap_object(&state, &request.ap_object_id).await?;
    update_ap_object_system_data(&pool, &request.ap_object_id, &request.system_data)
        .await?
        .map(|_| Json(SimpleResponse::success()))
        .ok_or(ResponseError::not_found())
}