add style name to inference status endpoints

This commit is contained in:
Brandon Thomas committed 2024-04-22 21:56:14 -04:00
1 parent 6701da597d
commit b6aee8d970
4 files changed
+67

No files matched your search

@@ -7,6 +7,7 @@ use sqlx::pool::PoolConnection;
use enums::by_table::generic_inference_jobs::frontend_failure_category::FrontendFailureCategory;
use enums::by_table::generic_inference_jobs::inference_category::InferenceCategory;
use enums::common::job_status_plus::JobStatusPlus;
use enums::no_table::style_transfer::style_transfer_name::StyleTransferName;
use enums::traits::mysql_from_row::MySqlFromRow;
use errors::AnyhowResult;
use tokens::tokens::anonymous_visitor_tracking::AnonymousVisitorTrackingToken;
@@ -15,6 +16,7 @@ use tokens::tokens::users::UserToken;
use tokens::traits::mysql_token_from_row::MySqlTokenFromRow;
use crate::helpers::boolean_converters::i8_to_bool;
use crate::payloads::generic_inference_args::generic_inference_args::{GenericInferenceArgs, PolymorphicInferenceArgs};
// NB: Serialization is for internal endpoints, not for returning to end-users.
#[derive(Debug, Default, Serialize)]
@@ -53,6 +55,10 @@ pub struct RequestDetails {
/// TTS input. In the future, perhaps voice conversion SST
pub maybe_raw_inference_text: Option<String>,
/// For Comfy / Video Style Transfer jobs, this might include
/// the name of the selected style.
pub maybe_style_name: Option<StyleTransferName>,
}
/// NB: Serialize is for internal moderator-only endpoints
@@ -154,6 +160,7 @@ SELECT
jobs.maybe_model_type,
jobs.maybe_model_token,
jobs.maybe_raw_inference_text,
jobs.maybe_inference_args,
jobs.frontend_failure_category as maybe_frontend_failure_category,
@@ -198,6 +205,24 @@ LEFT OUTER JOIN media_files ON jobs.on_success_result_entity_token = media_files
fn raw_records_to_public_result(records: Vec<RawGenericInferenceJobStatus>) -> Vec<GenericInferenceJobStatus> {
records.into_iter()
.map(|record| {
let maybe_args = record.maybe_inference_args
.as_deref()
.map(|args| GenericInferenceArgs::from_json(args))
.transpose()
.ok() // NB: Fail open in this case.
.flatten()
.map(|generic_args| generic_args.args)
.flatten();
let mut maybe_style_name = None;
match maybe_args {
Some(PolymorphicInferenceArgs::Cu(workflow_args)) => {
maybe_style_name = workflow_args.style_name;
}
_ => {}
}
let mut maybe_model_title = None;
if let Some(title) = record.maybe_model_weights_title.as_deref() {
@@ -277,6 +302,7 @@ fn raw_records_to_public_result(records: Vec<RawGenericInferenceJobStatus>) -> V
maybe_model_token: record.maybe_model_token,
maybe_model_title: maybe_model_title.map(|title| title.to_string()),
maybe_raw_inference_text: record.maybe_raw_inference_text,
maybe_style_name,
},
maybe_result_details,
user_details: UserDetails {
@@ -307,6 +333,7 @@ struct RawGenericInferenceJobStatus {
pub maybe_model_type: Option<String>,
pub maybe_model_token: Option<String>,
pub maybe_raw_inference_text: Option<String>,
pub maybe_inference_args: Option<String>,
pub maybe_result_entity_type: Option<String>,
pub maybe_result_entity_token: Option<String>,
@@ -360,6 +387,7 @@ impl FromRow<'_, MySqlRow> for RawGenericInferenceJobStatus {
maybe_model_type: row.try_get("maybe_model_type")?,
maybe_model_token: row.try_get("maybe_model_token")?,
maybe_raw_inference_text: row.try_get("maybe_raw_inference_text")?,
maybe_inference_args: row.try_get("maybe_inference_args")?,
maybe_result_entity_type: row.try_get("maybe_result_entity_type")?,
maybe_result_entity_token: row.try_get("maybe_result_entity_token")?,
maybe_model_weights_title: row.try_get("maybe_model_weights_title")?,
@@ -8,12 +8,14 @@ use sqlx::pool::PoolConnection;
use enums::by_table::generic_inference_jobs::frontend_failure_category::FrontendFailureCategory;
use enums::by_table::generic_inference_jobs::inference_category::InferenceCategory;
use enums::common::job_status_plus::JobStatusPlus;
use enums::no_table::style_transfer::style_transfer_name::StyleTransferName;
use errors::AnyhowResult;
use tokens::tokens::anonymous_visitor_tracking::AnonymousVisitorTrackingToken;
use tokens::tokens::generic_inference_jobs::InferenceJobToken;
use tokens::tokens::users::UserToken;
use crate::helpers::boolean_converters::i8_to_bool;
use crate::payloads::generic_inference_args::generic_inference_args::{GenericInferenceArgs, PolymorphicInferenceArgs};
// NB: Serialization is for internal endpoints, not for returning to end-users.
#[derive(Debug, Default, Serialize)]
@@ -52,6 +54,10 @@ pub struct RequestDetails {
/// TTS input. In the future, perhaps voice conversion SST
pub maybe_raw_inference_text: Option<String>,
/// For Comfy / Video Style Transfer jobs, this might include
/// the name of the selected style.
pub maybe_style_name: Option<StyleTransferName>,
}
/// NB: Serialize is for internal moderator-only endpoints
@@ -119,6 +125,7 @@ SELECT
jobs.maybe_model_type,
jobs.maybe_model_token,
jobs.maybe_raw_inference_text,
jobs.maybe_inference_args,
jobs.frontend_failure_category as `maybe_frontend_failure_category: enums::by_table::generic_inference_jobs::frontend_failure_category::FrontendFailureCategory`,
@@ -180,6 +187,24 @@ WHERE jobs.token = ?
/// Map the internal record type (since we query over several result tables)
fn raw_record_to_public_result(record: RawGenericInferenceJobStatus) -> GenericInferenceJobStatus {
let maybe_args = record.maybe_inference_args
.as_deref()
.map(|args| GenericInferenceArgs::from_json(args))
.transpose()
.ok() // NB: Fail open in this case.
.flatten()
.map(|generic_args| generic_args.args)
.flatten();
let mut maybe_style_name = None;
match maybe_args {
Some(PolymorphicInferenceArgs::Cu(workflow_args)) => {
maybe_style_name = workflow_args.style_name;
}
_ => {}
}
let mut maybe_model_title = None;
if let Some(title) = record.maybe_model_weights_title.as_deref() {
@@ -259,6 +284,7 @@ fn raw_record_to_public_result(record: RawGenericInferenceJobStatus) -> GenericI
maybe_model_token: record.maybe_model_token,
maybe_model_title: maybe_model_title.map(|title| title.to_string()),
maybe_raw_inference_text: record.maybe_raw_inference_text,
maybe_style_name,
},
maybe_result_details,
user_details: UserDetails {
@@ -287,6 +313,7 @@ struct RawGenericInferenceJobStatus {
pub maybe_model_type: Option<String>,
pub maybe_model_token: Option<String>,
pub maybe_raw_inference_text: Option<String>,
pub maybe_inference_args: Option<String>,
pub maybe_result_entity_type: Option<String>,
pub maybe_result_entity_token: Option<String>,
@@ -17,6 +17,7 @@ use buckets::public::voice_conversion_results::bucket_file_path::VoiceConversion
use enums::by_table::generic_inference_jobs::frontend_failure_category::FrontendFailureCategory;
use enums::by_table::generic_inference_jobs::inference_category::InferenceCategory;
use enums::common::job_status_plus::JobStatusPlus;
use enums::no_table::style_transfer::style_transfer_name::StyleTransferName;
use mysql_queries::queries::generic_inference::web::batch_get_inference_job_status::{batch_get_inference_job_status, GenericInferenceJobStatus};
use redis_common::redis_keys::RedisKeys;
use tokens::tokens::generic_inference_jobs::InferenceJobToken;
@@ -76,6 +77,10 @@ pub struct BatchRequestDetailsResponse {
/// If the result was TTS, this is the raw inference text.
pub maybe_raw_inference_text: Option<String>,
/// For Comfy / Video Style Transfer jobs, this might include
/// the name of the selected style.
pub maybe_style_name: Option<StyleTransferName>,
}
/// Details about the ongoing job status
@@ -259,6 +264,7 @@ fn db_record_to_response_payload(
maybe_model_token: record.request_details.maybe_model_token,
maybe_model_title: record.request_details.maybe_model_title,
maybe_raw_inference_text: record.request_details.maybe_raw_inference_text,
maybe_style_name: record.request_details.maybe_style_name,
},
status: BatchStatusDetailsResponse {
status: record.status,
@@ -15,6 +15,7 @@ use buckets::public::voice_conversion_results::bucket_file_path::VoiceConversion
use enums::by_table::generic_inference_jobs::frontend_failure_category::FrontendFailureCategory;
use enums::by_table::generic_inference_jobs::inference_category::InferenceCategory;
use enums::common::job_status_plus::JobStatusPlus;
use enums::no_table::style_transfer::style_transfer_name::StyleTransferName;
use mysql_queries::queries::generic_inference::web::get_inference_job_status::{GenericInferenceJobStatus, get_inference_job_status};
use redis_common::redis_keys::RedisKeys;
use tokens::tokens::generic_inference_jobs::InferenceJobToken;
@@ -64,6 +65,10 @@ pub struct RequestDetailsResponse {
/// If the result was TTS, this is the raw inference text.
pub maybe_raw_inference_text: Option<String>,
/// For Comfy / Video Style Transfer jobs, this might include
/// the name of the selected style.
pub maybe_style_name: Option<StyleTransferName>,
}
/// Details about the ongoing job status
@@ -250,6 +255,7 @@ fn record_to_payload(
maybe_model_token: record.request_details.maybe_model_token,
maybe_model_title: record.request_details.maybe_model_title,
maybe_raw_inference_text: record.request_details.maybe_raw_inference_text,
maybe_style_name: record.request_details.maybe_style_name,
},
status: StatusDetailsResponse {
status: record.status,