diff --git a/.sqlx/query-4a50b7bf06061f05e769a41e547cb927bd2b3a6f67c8ceb37883b744237ba34c.json b/.sqlx/query-1b69f192c3bb51bd249f97d37f209ae271d498bb46c978351b2c1d8759338bab.json similarity index 87% rename from .sqlx/query-4a50b7bf06061f05e769a41e547cb927bd2b3a6f67c8ceb37883b744237ba34c.json rename to .sqlx/query-1b69f192c3bb51bd249f97d37f209ae271d498bb46c978351b2c1d8759338bab.json index 6202e1380c..1af9cf6866 100644 --- a/.sqlx/query-4a50b7bf06061f05e769a41e547cb927bd2b3a6f67c8ceb37883b744237ba34c.json +++ b/.sqlx/query-1b69f192c3bb51bd249f97d37f209ae271d498bb46c978351b2c1d8759338bab.json @@ -1,6 +1,6 @@ { "db_name": "MySQL", - "query": "\nSELECT\n p.token as `token: tokens::tokens::prompts::PromptToken`,\n\n p.prompt_type as `prompt_type: enums::by_table::prompts::prompt_type::PromptType`,\n\n p.maybe_model_type as `maybe_model_type: enums::common::generation::common_model_type::CommonModelType`,\n p.maybe_generation_provider as `maybe_generation_provider: enums::common::generation_provider::GenerationProvider`,\n\n p.maybe_creator_user_token as `maybe_creator_user_token: tokens::tokens::users::UserToken`,\n\n p.maybe_positive_prompt,\n p.maybe_negative_prompt,\n\n p.maybe_generation_mode as `maybe_generation_mode: enums::common::generation::common_generation_mode::CommonGenerationMode`,\n p.maybe_aspect_ratio as `maybe_aspect_ratio: enums::common::generation::common_aspect_ratio::CommonAspectRatio`,\n p.maybe_resolution as `maybe_resolution: enums::common::generation::common_resolution::CommonResolution`,\n p.maybe_batch_count as `maybe_batch_count: u8`,\n p.maybe_generate_audio as `maybe_generate_audio: bool`,\n p.maybe_duration_seconds as `maybe_duration_seconds: u32`,\n\n p.maybe_other_args,\n\n p.creator_ip_address,\n p.created_at\n\nFROM prompts as p\nWHERE\n p.token = ?\n ", + "query": "\nSELECT\n p.token as `token: tokens::tokens::prompts::PromptToken`,\n\n p.prompt_type as `prompt_type: enums::by_table::prompts::prompt_type::PromptType`,\n\n p.maybe_model_type as `maybe_model_type: enums::common::generation::common_model_type::CommonModelType`,\n p.maybe_generation_provider as `maybe_generation_provider: enums::common::generation_provider::GenerationProvider`,\n\n p.maybe_creator_user_token as `maybe_creator_user_token: tokens::tokens::users::UserToken`,\n\n p.maybe_positive_prompt,\n p.maybe_negative_prompt,\n\n p.maybe_generation_mode as `maybe_generation_mode: enums::common::generation::common_generation_mode::CommonGenerationMode`,\n p.maybe_aspect_ratio as `maybe_aspect_ratio: enums::common::generation::common_aspect_ratio::CommonAspectRatio`,\n p.maybe_resolution as `maybe_resolution: enums::common::generation::common_resolution::CommonResolution`,\n p.maybe_bitrate as `maybe_bitrate: enums::common::generation::common_bitrate::CommonBitrate`,\n p.maybe_batch_count as `maybe_batch_count: u8`,\n p.maybe_generate_audio as `maybe_generate_audio: bool`,\n p.maybe_duration_seconds as `maybe_duration_seconds: u32`,\n\n p.maybe_other_args,\n\n p.creator_ip_address,\n p.created_at\n\nFROM prompts as p\nWHERE\n p.token = ?\n ", "describe": { "columns": [ { @@ -105,6 +105,16 @@ }, { "ordinal": 10, + "name": "maybe_bitrate: enums::common::generation::common_bitrate::CommonBitrate", + "type_info": { + "type": "VarString", + "flags": "BINARY", + "char_set": 224, + "max_size": 64 + } + }, + { + "ordinal": 11, "name": "maybe_batch_count: u8", "type_info": { "type": "Tiny", @@ -114,7 +124,7 @@ } }, { - "ordinal": 11, + "ordinal": 12, "name": "maybe_generate_audio: bool", "type_info": { "type": "Tiny", @@ -124,7 +134,7 @@ } }, { - "ordinal": 12, + "ordinal": 13, "name": "maybe_duration_seconds: u32", "type_info": { "type": "Long", @@ -134,7 +144,7 @@ } }, { - "ordinal": 13, + "ordinal": 14, "name": "maybe_other_args", "type_info": { "type": "Blob", @@ -144,7 +154,7 @@ } }, { - "ordinal": 14, + "ordinal": 15, "name": "creator_ip_address", "type_info": { "type": "VarString", @@ -154,7 +164,7 @@ } }, { - "ordinal": 15, + "ordinal": 16, "name": "created_at", "type_info": { "type": "Timestamp", @@ -182,9 +192,10 @@ true, true, true, + true, false, false ] }, - "hash": "4a50b7bf06061f05e769a41e547cb927bd2b3a6f67c8ceb37883b744237ba34c" + "hash": "1b69f192c3bb51bd249f97d37f209ae271d498bb46c978351b2c1d8759338bab" } diff --git a/.sqlx/query-ccf92ebe0328d3019ac6b01be4b442df706a183362fa7e5c331f5a4bf1a74a00.json b/.sqlx/query-7519c1dcc2946f4c31a8aad995bbb66a5519f6ee571797a6c0f597c9e57986a7.json similarity index 61% rename from .sqlx/query-ccf92ebe0328d3019ac6b01be4b442df706a183362fa7e5c331f5a4bf1a74a00.json rename to .sqlx/query-7519c1dcc2946f4c31a8aad995bbb66a5519f6ee571797a6c0f597c9e57986a7.json index c4f101dd57..d807bc048c 100644 --- a/.sqlx/query-ccf92ebe0328d3019ac6b01be4b442df706a183362fa7e5c331f5a4bf1a74a00.json +++ b/.sqlx/query-7519c1dcc2946f4c31a8aad995bbb66a5519f6ee571797a6c0f597c9e57986a7.json @@ -1,12 +1,12 @@ { "db_name": "MySQL", - "query": "\nINSERT INTO prompts\nSET\n token = ?,\n prompt_type = ?,\n\n maybe_creator_user_token = ?,\n \n maybe_model_type = ?,\n maybe_generation_provider = ?,\n\n maybe_positive_prompt = ?,\n maybe_negative_prompt = ?,\n\n maybe_generation_mode = ?,\n maybe_aspect_ratio = ?,\n maybe_resolution = ?,\n maybe_batch_count = ?,\n maybe_generate_audio = ?,\n maybe_duration_seconds = ?,\n\n maybe_other_args = ?,\n\n creator_ip_address = ?\n ", + "query": "\nINSERT INTO prompts\nSET\n token = ?,\n prompt_type = ?,\n\n maybe_creator_user_token = ?,\n \n maybe_model_type = ?,\n maybe_generation_provider = ?,\n\n maybe_positive_prompt = ?,\n maybe_negative_prompt = ?,\n\n maybe_generation_mode = ?,\n maybe_aspect_ratio = ?,\n maybe_resolution = ?,\n maybe_bitrate = ?,\n maybe_batch_count = ?,\n maybe_generate_audio = ?,\n maybe_duration_seconds = ?,\n\n maybe_other_args = ?,\n\n creator_ip_address = ?\n ", "describe": { "columns": [], "parameters": { - "Right": 15 + "Right": 16 }, "nullable": [] }, - "hash": "ccf92ebe0328d3019ac6b01be4b442df706a183362fa7e5c331f5a4bf1a74a00" + "hash": "7519c1dcc2946f4c31a8aad995bbb66a5519f6ee571797a6c0f597c9e57986a7" } diff --git a/_database/sql/migrations/2026-06-22-122536-0000_alter_prompts_add_bitrate/down.sql b/_database/sql/migrations/2026-06-22-122536-0000_alter_prompts_add_bitrate/down.sql new file mode 100644 index 0000000000..1fd7dc026d --- /dev/null +++ b/_database/sql/migrations/2026-06-22-122536-0000_alter_prompts_add_bitrate/down.sql @@ -0,0 +1,6 @@ +-- noinspection SqlDialectInspectionForFile +-- noinspection SqlNoDataSourceInspectionForFile +-- noinspection SqlResolveForFile + +ALTER TABLE prompts + DROP COLUMN maybe_bitrate; diff --git a/_database/sql/migrations/2026-06-22-122536-0000_alter_prompts_add_bitrate/up.sql b/_database/sql/migrations/2026-06-22-122536-0000_alter_prompts_add_bitrate/up.sql new file mode 100644 index 0000000000..9b59d25066 --- /dev/null +++ b/_database/sql/migrations/2026-06-22-122536-0000_alter_prompts_add_bitrate/up.sql @@ -0,0 +1,8 @@ +-- noinspection SqlDialectInspectionForFile +-- noinspection SqlNoDataSourceInspectionForFile +-- noinspection SqlResolveForFile + +-- Add bitrate parameter to prompts table. +-- Represented by the enum `CommonBitrate` (normal, high). +ALTER TABLE prompts + ADD COLUMN maybe_bitrate VARCHAR(16) DEFAULT NULL; diff --git a/_database/sql/migrations_squashed/prompts/prompts.sql b/_database/sql/migrations_squashed/prompts/prompts.sql index 84b78b4e29..c173571c70 100644 --- a/_database/sql/migrations_squashed/prompts/prompts.sql +++ b/_database/sql/migrations_squashed/prompts/prompts.sql @@ -72,6 +72,10 @@ CREATE TABLE prompts ( -- The quality setting (eg. high, medium, low) maybe_quality VARCHAR(16) DEFAULT NULL, + -- Represented by the enum `CommonBitrate`. + -- The output bitrate setting (eg. normal, high) + maybe_bitrate VARCHAR(16) DEFAULT NULL, + -- The duration in seconds maybe_duration_seconds INT UNSIGNED DEFAULT NULL, diff --git a/crates/api_clients/artcraft/artcraft_api_defs/src/prompts/batch_get_prompts.rs b/crates/api_clients/artcraft/artcraft_api_defs/src/prompts/batch_get_prompts.rs index 707ef7b702..ba409f5a7d 100644 --- a/crates/api_clients/artcraft/artcraft_api_defs/src/prompts/batch_get_prompts.rs +++ b/crates/api_clients/artcraft/artcraft_api_defs/src/prompts/batch_get_prompts.rs @@ -2,6 +2,7 @@ use crate::prompts::get_prompt::GetPromptImageContextItem; use chrono::{DateTime, Utc}; use enums::by_table::prompts::prompt_type::PromptType; use enums::common::generation::common_aspect_ratio::CommonAspectRatio; +use enums::common::generation::common_bitrate::CommonBitrate; use enums::common::generation::common_generation_mode::CommonGenerationMode; use enums::common::generation::common_model_class::CommonModelClass; use enums::common::generation::common_model_type::CommonModelType; @@ -55,6 +56,9 @@ pub struct BatchPromptInfo { /// OPTIONAL. The resolution (eg. one_k, two_k, four_k, etc.) pub maybe_resolution: Option, + /// OPTIONAL. The output bitrate (eg. normal, high). + pub maybe_bitrate: Option, + /// OPTIONAL. The number of outputs to generate (0-255). pub maybe_batch_count: Option, diff --git a/crates/api_clients/artcraft/artcraft_api_defs/src/prompts/get_prompt.rs b/crates/api_clients/artcraft/artcraft_api_defs/src/prompts/get_prompt.rs index 77369ec369..ec096842c6 100644 --- a/crates/api_clients/artcraft/artcraft_api_defs/src/prompts/get_prompt.rs +++ b/crates/api_clients/artcraft/artcraft_api_defs/src/prompts/get_prompt.rs @@ -3,6 +3,7 @@ use chrono::{DateTime, Utc}; use enums::by_table::prompt_context_items::prompt_context_semantic_type::PromptContextSemanticType; use enums::by_table::prompts::prompt_type::PromptType; use enums::common::generation::common_aspect_ratio::CommonAspectRatio; +use enums::common::generation::common_bitrate::CommonBitrate; use enums::common::generation::common_generation_mode::CommonGenerationMode; use enums::common::generation::common_model_type::CommonModelType; use enums::common::generation::common_resolution::CommonResolution; @@ -59,6 +60,9 @@ pub struct PromptInfo { /// OPTIONAL. The resolution (eg. one_k, two_k, four_k, etc.) pub maybe_resolution: Option, + /// OPTIONAL. The output bitrate (eg. normal, high). + pub maybe_bitrate: Option, + /// OPTIONAL. The number of outputs to generate (0-255). pub maybe_batch_count: Option, diff --git a/crates/schema/database/mysql_queries/src/queries/prompts/batch_get_prompts.rs b/crates/schema/database/mysql_queries/src/queries/prompts/batch_get_prompts.rs index d0e2bc7590..f2b9b71655 100644 --- a/crates/schema/database/mysql_queries/src/queries/prompts/batch_get_prompts.rs +++ b/crates/schema/database/mysql_queries/src/queries/prompts/batch_get_prompts.rs @@ -5,6 +5,7 @@ use sqlx::{FromRow, MySql, QueryBuilder, Row}; use enums::by_table::prompts::prompt_type::PromptType; use enums::common::generation::common_aspect_ratio::CommonAspectRatio; +use enums::common::generation::common_bitrate::CommonBitrate; use enums::common::generation::common_generation_mode::CommonGenerationMode; use enums::common::generation::common_model_type::CommonModelType; use enums::common::generation::common_resolution::CommonResolution; @@ -23,6 +24,7 @@ pub struct BatchPromptResult { pub maybe_generation_mode: Option, pub maybe_aspect_ratio: Option, pub maybe_resolution: Option, + pub maybe_bitrate: Option, pub maybe_batch_count: Option, pub maybe_generate_audio: Option, pub maybe_duration_seconds: Option, @@ -46,6 +48,8 @@ impl FromRow<'_, MySqlRow> for BatchPromptResult { .and_then(|s| CommonAspectRatio::from_str(&s).ok()), maybe_resolution: row.try_get::, _>("maybe_resolution")? .and_then(|s| CommonResolution::from_str(&s).ok()), + maybe_bitrate: row.try_get::, _>("maybe_bitrate")? + .and_then(|s| CommonBitrate::from_str(&s).ok()), maybe_batch_count: row.try_get("maybe_batch_count")?, maybe_generate_audio: row.try_get("maybe_generate_audio")?, maybe_duration_seconds: row.try_get("maybe_duration_seconds")?, @@ -73,6 +77,7 @@ SELECT p.maybe_generation_mode, p.maybe_aspect_ratio, p.maybe_resolution, + p.maybe_bitrate, p.maybe_batch_count, p.maybe_generate_audio, p.maybe_duration_seconds, diff --git a/crates/schema/database/mysql_queries/src/queries/prompts/get_prompt.rs b/crates/schema/database/mysql_queries/src/queries/prompts/get_prompt.rs index f25c8893d4..437647d740 100644 --- a/crates/schema/database/mysql_queries/src/queries/prompts/get_prompt.rs +++ b/crates/schema/database/mysql_queries/src/queries/prompts/get_prompt.rs @@ -8,6 +8,7 @@ use chrono::{DateTime, Utc}; use enums::by_table::prompts::prompt_type::PromptType; use enums::common::generation_provider::GenerationProvider; use enums::common::generation::common_aspect_ratio::CommonAspectRatio; +use enums::common::generation::common_bitrate::CommonBitrate; use enums::common::generation::common_generation_mode::CommonGenerationMode; use enums::common::generation::common_model_type::CommonModelType; use enums::common::generation::common_resolution::CommonResolution; @@ -38,6 +39,7 @@ pub struct Prompt { pub maybe_generation_mode: Option, pub maybe_aspect_ratio: Option, pub maybe_resolution: Option, + pub maybe_bitrate: Option, pub maybe_batch_count: Option, pub maybe_generate_audio: Option, pub maybe_duration_seconds: Option, @@ -67,6 +69,7 @@ pub struct PromptRaw { pub maybe_generation_mode: Option, pub maybe_aspect_ratio: Option, pub maybe_resolution: Option, + pub maybe_bitrate: Option, pub maybe_batch_count: Option, pub maybe_generate_audio: Option, pub maybe_duration_seconds: Option, @@ -114,6 +117,7 @@ pub async fn get_prompt_from_connection( maybe_generation_mode: record.maybe_generation_mode, maybe_aspect_ratio: record.maybe_aspect_ratio, maybe_resolution: record.maybe_resolution, + maybe_bitrate: record.maybe_bitrate, maybe_batch_count: record.maybe_batch_count, maybe_generate_audio: record.maybe_generate_audio, maybe_duration_seconds: record.maybe_duration_seconds, @@ -149,6 +153,7 @@ SELECT p.maybe_generation_mode as `maybe_generation_mode: enums::common::generation::common_generation_mode::CommonGenerationMode`, p.maybe_aspect_ratio as `maybe_aspect_ratio: enums::common::generation::common_aspect_ratio::CommonAspectRatio`, p.maybe_resolution as `maybe_resolution: enums::common::generation::common_resolution::CommonResolution`, + p.maybe_bitrate as `maybe_bitrate: enums::common::generation::common_bitrate::CommonBitrate`, p.maybe_batch_count as `maybe_batch_count: u8`, p.maybe_generate_audio as `maybe_generate_audio: bool`, p.maybe_duration_seconds as `maybe_duration_seconds: u32`, diff --git a/crates/schema/database/mysql_queries/src/queries/prompts/insert_prompt.rs b/crates/schema/database/mysql_queries/src/queries/prompts/insert_prompt.rs index a1cec5b011..5a463126c3 100644 --- a/crates/schema/database/mysql_queries/src/queries/prompts/insert_prompt.rs +++ b/crates/schema/database/mysql_queries/src/queries/prompts/insert_prompt.rs @@ -7,6 +7,7 @@ use sqlx::{Executor, MySql}; use enums::by_table::prompts::prompt_type::PromptType; use enums::common::generation::common_aspect_ratio::CommonAspectRatio; +use enums::common::generation::common_bitrate::CommonBitrate; use enums::common::generation::common_generation_mode::CommonGenerationMode; use enums::common::generation::common_model_type::CommonModelType; use enums::common::generation::common_resolution::CommonResolution; @@ -36,6 +37,7 @@ pub struct InsertPromptArgs<'e, 'c, E> pub maybe_generation_mode: Option, pub maybe_aspect_ratio: Option, pub maybe_resolution: Option, + pub maybe_bitrate: Option, pub maybe_batch_count: Option, pub maybe_generate_audio: Option, pub maybe_duration_seconds: Option, @@ -89,6 +91,7 @@ SET maybe_generation_mode = ?, maybe_aspect_ratio = ?, maybe_resolution = ?, + maybe_bitrate = ?, maybe_batch_count = ?, maybe_generate_audio = ?, maybe_duration_seconds = ?, @@ -107,6 +110,7 @@ SET args.maybe_generation_mode.map(|m| m.to_str()), args.maybe_aspect_ratio.map(|a| a.to_str()), args.maybe_resolution.map(|r| r.to_str()), + args.maybe_bitrate.map(|b| b.to_str()), args.maybe_batch_count, args.maybe_generate_audio, args.maybe_duration_seconds, diff --git a/crates/service/job/deprecated/inference_job/src/job/job_types/image_generation/sd/process_job_inference.rs b/crates/service/job/deprecated/inference_job/src/job/job_types/image_generation/sd/process_job_inference.rs index 55f8d266fd..50733c06fb 100644 --- a/crates/service/job/deprecated/inference_job/src/job/job_types/image_generation/sd/process_job_inference.rs +++ b/crates/service/job/deprecated/inference_job/src/job/job_types/image_generation/sd/process_job_inference.rs @@ -332,6 +332,7 @@ pub async fn process_job_inference( // NB: Don't fail the job if the query fails. let prompt_result = insert_prompt(InsertPromptArgs { + maybe_bitrate: None, maybe_apriori_prompt_token: Some(&prompt_token), prompt_type: PromptType::StableDiffusion, maybe_creator_user_token: job.maybe_creator_user_token_typed.as_ref(), diff --git a/crates/service/job/deprecated/inference_job/src/job/job_types/workflow/video_style_transfer/steps/validate_and_save_results.rs b/crates/service/job/deprecated/inference_job/src/job/job_types/workflow/video_style_transfer/steps/validate_and_save_results.rs index b08c40de50..267b1262bc 100644 --- a/crates/service/job/deprecated/inference_job/src/job/job_types/workflow/video_style_transfer/steps/validate_and_save_results.rs +++ b/crates/service/job/deprecated/inference_job/src/job/job_types/workflow/video_style_transfer/steps/validate_and_save_results.rs @@ -287,6 +287,7 @@ pub async fn validate_and_save_results(args: SaveResultsArgs<'_>) -> Result