use crate::protocol::problem::{Result, request_instance};
use crate::protocol::stream_name::StreamName;
use crate::storage::Storage;
use axum::{
extract::{OriginalUri, State},
http::StatusCode,
response::{IntoResponse, Response},
};
use std::sync::Arc;
pub async fn delete_stream<S: Storage>(
State(storage): State<Arc<S>>,
StreamName(name): StreamName,
original_uri: OriginalUri,
) -> Result<Response> {
let instance = request_instance(&original_uri);
let result = (|| -> Result<Response> {
storage.delete(&name)?;
Ok(StatusCode::NO_CONTENT.into_response())
})();
result.map_err(|problem| problem.with_instance(instance))
}