iota_rest_kv/routes/
kv_store.rs1use axum::{body::Body, extract::State, http::StatusCode, response::IntoResponse};
5
6use crate::{errors::ApiError, extractors::ExtractPath, types::SharedKvStoreClient};
7
8pub async fn data_as_bytes(
20 ExtractPath(key): ExtractPath,
21 State(kv_store_client): State<SharedKvStoreClient>,
22) -> Result<impl IntoResponse, ApiError> {
23 match kv_store_client.get(key).await {
24 Ok(Some(bytes)) => Ok(bytes.into_response()),
25 Ok(None) => Ok((StatusCode::NO_CONTENT, Body::empty()).into_response()),
26 Err(err) => {
27 tracing::error!("cannot fetch data from kv store: {err}");
28 Err(ApiError::InternalServerError)
29 }
30 }
31}