diff options
Diffstat (limited to 'crates/rocie-server/src/storage/sql/insert/mod.rs')
| -rw-r--r-- | crates/rocie-server/src/storage/sql/insert/mod.rs | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/crates/rocie-server/src/storage/sql/insert/mod.rs b/crates/rocie-server/src/storage/sql/insert/mod.rs index 99f1e71..eec6ad2 100644 --- a/crates/rocie-server/src/storage/sql/insert/mod.rs +++ b/crates/rocie-server/src/storage/sql/insert/mod.rs @@ -8,6 +8,7 @@ use serde::{Serialize, de::DeserializeOwned}; use sqlx::{SqliteConnection, query}; pub(crate) mod product; +pub(crate) mod unit; pub(crate) trait Transactionable: Sized + std::fmt::Debug + Serialize + DeserializeOwned @@ -77,7 +78,8 @@ impl<O: Transactionable> Operations<O> { } pub(crate) mod apply { - use actix_web::ResponseError; + use actix_web::{ResponseError, http::header::HeaderValue}; + use log::error; use crate::storage::sql::insert::{Transactionable, add_operations_to_txn_log}; @@ -94,7 +96,23 @@ pub(crate) mod apply { } impl<O: Transactionable> ResponseError for Error<O> { - // TODO(@bpeetz): Actually do something with this. <2025-09-05> + fn status_code(&self) -> actix_web::http::StatusCode { + actix_web::http::StatusCode::INTERNAL_SERVER_ERROR + } + + fn error_response(&self) -> actix_web::HttpResponse<actix_web::body::BoxBody> { + error!("Emmiting `INTERNAL_SERVER_ERROR`: {self}"); + let mut res = + actix_web::HttpResponse::new(self.status_code()).set_body(self.to_string()); + + let mime = actix_web::mime::TEXT_PLAIN_UTF_8; + res.headers_mut().insert( + actix_web::http::header::CONTENT_TYPE, + HeaderValue::from_str(mime.to_string().as_str()).expect("Hard-coded conversion"), + ); + + res.set_body(actix_web::body::BoxBody::new(self.to_string())) + } } } |
