diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/batch_get_inference_job_status_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/batch_get_inference_job_status_handler.rs index 405e0f61a8..cba4fcc99b 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/batch_get_inference_job_status_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/batch_get_inference_job_status_handler.rs @@ -5,7 +5,7 @@ use std::sync::Arc; use actix_web::{HttpMessage, HttpRequest, HttpResponse, web}; use actix_web::error::ResponseError; use actix_web::http::StatusCode; -use actix_web::web::Path; +use actix_web::web::{Json, Path}; use actix_web_lab::extract::Query; use chrono::{DateTime, Utc}; use log::error; @@ -174,8 +174,9 @@ impl fmt::Display for BatchGetInferenceJobStatusError { pub async fn batch_get_inference_job_status_handler( http_request: HttpRequest, query: Query, - server_state: web::Data>) -> Result -{ + server_state: web::Data> +) -> Result, BatchGetInferenceJobStatusError> { + let tokens = query.tokens.iter() .map(|token| token.trim()) // NB: A bunch of Python clients use our API and can fail in this manner. @@ -186,7 +187,7 @@ pub async fn batch_get_inference_job_status_handler( .collect::>(); if tokens.is_empty() { - return records_to_response(Vec::new()); + return Ok(records_to_response(Vec::new())); } // NB: Since this is publicly exposed, we don't query sensitive data. @@ -230,30 +231,20 @@ pub async fn batch_get_inference_job_status_handler( }; } - records_to_response(records) + Ok(records_to_response(records)) } -fn records_to_response(records: Vec) -> Result { - let records = records.into_iter() - .map(|record| { - db_record_to_response_payload(record, None) - }) - .collect::>(); - - let response = BatchGetInferenceJobStatusSuccessResponse { +fn records_to_response(records: Vec) + -> Json +{ + Json(BatchGetInferenceJobStatusSuccessResponse { success: true, - job_states: records, - }; - - let body = serde_json::to_string(&response) - .map_err(|e| { - error!("error returning response: {:?}", e); - BatchGetInferenceJobStatusError::ServerError - })?; - - Ok(HttpResponse::Ok() - .content_type("application/json") - .body(body)) + job_states: records.into_iter() + .map(|record| { + db_record_to_response_payload(record, None) + }) + .collect::>(), + }) } fn db_record_to_response_payload( diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get_inference_job_status_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get_inference_job_status_handler.rs index 79b36f3294..f2fcb21549 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get_inference_job_status_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get_inference_job_status_handler.rs @@ -4,7 +4,7 @@ use std::sync::Arc; use actix_web::{HttpMessage, HttpRequest, HttpResponse, web}; use actix_web::error::ResponseError; use actix_web::http::StatusCode; -use actix_web::web::Path; +use actix_web::web::{Json, Path}; use chrono::{DateTime, Utc}; use log::error; use r2d2_redis::redis::{Commands, RedisResult}; @@ -162,7 +162,7 @@ impl fmt::Display for GetInferenceJobStatusError { pub async fn get_inference_job_status_handler( http_request: HttpRequest, path: Path, - server_state: web::Data>) -> Result + server_state: web::Data>) -> Result, GetInferenceJobStatusError> { if path.token.as_str().trim() == "None" { // NB: A bunch of Python clients use our API and can fail in this manner. @@ -231,20 +231,10 @@ pub async fn get_inference_job_status_handler( let record_for_response = record_to_payload( record, maybe_extra_status_description); - let response = GetInferenceJobStatusSuccessResponse { + Ok(Json(GetInferenceJobStatusSuccessResponse { success: true, state: record_for_response, - }; - - let body = serde_json::to_string(&response) - .map_err(|e| { - error!("error returning response: {:?}", e); - GetInferenceJobStatusError::ServerError - })?; - - Ok(HttpResponse::Ok() - .content_type("application/json") - .body(body)) + })) } fn record_to_payload( diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/list_session_jobs_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/list_session_jobs_handler.rs index ee58c05f0f..538b4e81c3 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/list_session_jobs_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/list_session_jobs_handler.rs @@ -5,7 +5,7 @@ use std::sync::Arc; use actix_web::{HttpMessage, HttpRequest, HttpResponse, web}; use actix_web::error::ResponseError; use actix_web::http::StatusCode; -use actix_web::web::Path; +use actix_web::web::{Json, Path}; use actix_web_lab::extract::Query; use chrono::{DateTime, Duration, Utc}; use log::{error, warn}; @@ -188,8 +188,9 @@ impl fmt::Display for ListSessionJobsError { pub async fn list_session_jobs_handler( http_request: HttpRequest, query: Query, - server_state: web::Data>) -> Result -{ + server_state: web::Data> +) -> Result, ListSessionJobsError> { + let mut mysql_connection = server_state.mysql_pool .acquire() .await @@ -277,7 +278,7 @@ pub async fn list_session_jobs_handler( records_to_response(records) } -fn records_to_response(records: Vec) -> Result { +fn records_to_response(records: Vec) -> Result, ListSessionJobsError> { let mut records = records.into_iter() .map(|record| { db_record_to_response_payload(record, None) @@ -296,20 +297,10 @@ fn records_to_response(records: Vec) -> Result