From a21e7b79db127820a809dab83d23878e70a370ca Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Tue, 15 Jul 2025 21:47:27 -0400 Subject: [PATCH] update tasks --- ...7ab4529eac2192475be7d08589886703ba1cb.json | 12 +++++++ .../storyteller_task_polling_thread.rs | 7 ++++ .../list_tasks_by_provider_and_tokens.rs | 9 ++--- .../database/sqlite_tasks/src/queries/mod.rs | 3 +- .../src/queries/update_task_status.rs | 33 +++++++++++++++++++ 5 files changed, 56 insertions(+), 8 deletions(-) create mode 100644 .sqlx/query-dc0367e9e43c3d7dda3623e77337ab4529eac2192475be7d08589886703ba1cb.json create mode 100644 crates/schema/database/sqlite_tasks/src/queries/update_task_status.rs diff --git a/.sqlx/query-dc0367e9e43c3d7dda3623e77337ab4529eac2192475be7d08589886703ba1cb.json b/.sqlx/query-dc0367e9e43c3d7dda3623e77337ab4529eac2192475be7d08589886703ba1cb.json new file mode 100644 index 0000000000..b4ed499639 --- /dev/null +++ b/.sqlx/query-dc0367e9e43c3d7dda3623e77337ab4529eac2192475be7d08589886703ba1cb.json @@ -0,0 +1,12 @@ +{ + "db_name": "SQLite", + "query": "\n UPDATE tasks\n SET task_status = ?\n WHERE id = ?\n ", + "describe": { + "columns": [], + "parameters": { + "Right": 2 + }, + "nullable": [] + }, + "hash": "dc0367e9e43c3d7dda3623e77337ab4529eac2192475be7d08589886703ba1cb" +} diff --git a/crates/desktop/artcraft/src/services/storyteller/threads/storyteller_task_polling_thread.rs b/crates/desktop/artcraft/src/services/storyteller/threads/storyteller_task_polling_thread.rs index 362b2cc72a..c076f31231 100644 --- a/crates/desktop/artcraft/src/services/storyteller/threads/storyteller_task_polling_thread.rs +++ b/crates/desktop/artcraft/src/services/storyteller/threads/storyteller_task_polling_thread.rs @@ -28,6 +28,7 @@ use storyteller_client::jobs::list_session_jobs::{list_session_jobs, States}; use storyteller_client::media_files::upload_image_media_file_from_file::upload_image_media_file_from_file; use tauri::AppHandle; use tempdir::TempDir; +use sqlite_tasks::queries::update_task_status::{update_task_status, UpdateTaskArgs}; pub async fn storyteller_task_polling_thread( app_handle: AppHandle, @@ -124,6 +125,12 @@ async fn polling_loop( TaskStatus::CompleteSuccess => continue, _ => {} // Fall-through. } + + update_task_status(UpdateTaskArgs { + db: task_database.get_connection(), + task_id: task.id.clone(), + status: TaskStatus::CompleteSuccess, + }).await?; let event = GenerationCompleteEvent { //media_file_token: result.media_file_token, diff --git a/crates/schema/database/sqlite_tasks/src/queries/list_tasks_by_provider_and_tokens.rs b/crates/schema/database/sqlite_tasks/src/queries/list_tasks_by_provider_and_tokens.rs index ff579d683c..bb60ee90ad 100644 --- a/crates/schema/database/sqlite_tasks/src/queries/list_tasks_by_provider_and_tokens.rs +++ b/crates/schema/database/sqlite_tasks/src/queries/list_tasks_by_provider_and_tokens.rs @@ -3,8 +3,7 @@ use crate::error::SqliteTasksError; use enums::common::generation_provider::GenerationProvider; use enums::tauri::tasks::task_status::TaskStatus; use enums::tauri::tasks::task_type::TaskType; -use log::info; -use sqlx::{Execute, QueryBuilder, Sqlite}; +use sqlx::{QueryBuilder, Sqlite}; use tokens::tokens::sqlite::tasks::TaskId; pub struct ListTasksArgs<'a> { @@ -62,7 +61,6 @@ pub async fn list_tasks_by_provider_and_tokens( query_builder.push_bind(provider); - /* if let Some(provider_job_ids) = args.provider_job_ids { query_builder.push(" AND provider_job_id IN ("); let mut separated = query_builder.separated(", "); @@ -73,13 +71,10 @@ pub async fn list_tasks_by_provider_and_tokens( separated.push_unseparated(") "); } - */ - - //let query = query_builder.build(); let query = query_builder.build_query_as::(); - info!("Query: {:?}", query.sql()); + // info!("Query: {:?}", query.sql()); let results = query.fetch_all(args.db.get_pool()).await?; diff --git a/crates/schema/database/sqlite_tasks/src/queries/mod.rs b/crates/schema/database/sqlite_tasks/src/queries/mod.rs index 4f1fbc7424..1c9eb91946 100644 --- a/crates/schema/database/sqlite_tasks/src/queries/mod.rs +++ b/crates/schema/database/sqlite_tasks/src/queries/mod.rs @@ -1,2 +1,3 @@ pub mod create_task; -pub mod list_tasks_by_provider_and_tokens; \ No newline at end of file +pub mod list_tasks_by_provider_and_tokens; +pub mod update_task_status; \ No newline at end of file diff --git a/crates/schema/database/sqlite_tasks/src/queries/update_task_status.rs b/crates/schema/database/sqlite_tasks/src/queries/update_task_status.rs new file mode 100644 index 0000000000..5534260b3a --- /dev/null +++ b/crates/schema/database/sqlite_tasks/src/queries/update_task_status.rs @@ -0,0 +1,33 @@ +use crate::connection::TaskDbConnection; +use crate::error::SqliteTasksError; +use enums::tauri::tasks::task_status::TaskStatus; +use tokens::tokens::sqlite::tasks::TaskId; + +pub struct UpdateTaskArgs<'a> { + pub db: &'a TaskDbConnection, + pub task_id: TaskId, + pub status: TaskStatus, +} + +pub async fn update_task_status( + args: UpdateTaskArgs<'_>, +) -> Result<(), SqliteTasksError> { + + // TODO(bt,2025-07-12): Fix this. The sqlx mysql queries never required temporaries + let task_id_temp = args.task_id.as_str(); + let status_temp = args.status.to_str(); + + // TODO(bt,2025-07-15): We can't use a LIMIT without a certain compiler flag ? + let query = sqlx::query!(r#" + UPDATE tasks + SET task_status = ? + WHERE id = ? + "#, + task_id_temp, + status_temp, + ); + + let _r = query.execute(args.db.get_pool()).await?; + + Ok(()) +}