diff --git a/CLAUDE.md b/CLAUDE.md index 35fef2d4..b350193e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -16,9 +16,8 @@ artcraftx/ │ ├── desktop/ # Desktop (Tauri) apps │ │ └── artcraftx/ # (Important) ArtCraftX, the desktop app │ ├── lib/ # Various utility libraries +│ ├── sqlite_database/ # Desktop app's "tasks" SQLite database: queries + embedded migrations │ ├── schema/ # Data definition layer -│ │ ├── database/ -│ │ │ └── sqlite_tasks/ # Queries for the desktop app's "tasks" SQLite database │ │ └── public/ # Token identifier and enum variant definitions │ │ ├── enums/ # Enum variants stored as strings │ │ └── tokens/ # Identifiers with Stripe-like ID prefixes, eg. "user_{entropy}" @@ -37,7 +36,7 @@ artcraftx/ - Rust with no minimum supported version - A mix of wreq and reqwest for Rust HTTP clients -- SQLx for SQLite (the desktop app's local task database in `sqlite_tasks`) +- SQLx for SQLite (the desktop app's local task database in `sqlite_database`) - Never use `println!` or `eprintln!` outside of tests; use `log` crate macros instead - When two crates export the same type name, alias imports with a suffix: `use foo::Bar as BarFoo;` - Prefer `use` imports over inline fully-qualified paths; only qualify inline for true one-offs or std collisions diff --git a/Cargo.lock b/Cargo.lock index 80c4507a..6527b59e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -271,7 +271,7 @@ dependencies = [ "serde_derive", "serde_json", "serial_test", - "sqlite_tasks", + "sqlite_database", "tauri", "tauri-build", "tauri-plugin-dialog", @@ -6320,7 +6320,7 @@ dependencies = [ ] [[package]] -name = "sqlite_tasks" +name = "sqlite_database" version = "0.0.1" dependencies = [ "anyhow", diff --git a/Cargo.toml b/Cargo.toml index ddba29f8..fa71e70f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,8 +39,8 @@ members = [ "crates/lib/url_utils", "crates/lib/uuid_utils", - # Schema (database): local task storage - "crates/schema/database/sqlite_tasks", + # Local task storage (SQLite, embedded migrations) + "crates/sqlite_database", # Schema (public): common strongly-typed tokens, ids, payloads, etc. "crates/schema/public/enums", @@ -103,7 +103,7 @@ mimetypes = { path = "crates/lib/files/mimetypes" } openai_sora_client = { path = "crates/api_clients/openai_sora_client" } primitives = { path = "crates/lib/data/primitives" } seedance2pro_client = { path = "crates/api_clients/seedance2pro_client" } -sqlite_tasks = { path = "crates/schema/database/sqlite_tasks" } +sqlite_database = { path = "crates/sqlite_database" } test_data = { path = "crates/testing/test_data" } test_utils = { path = "crates/testing/test_utils" } tokens = { path = "crates/schema/public/tokens" } diff --git a/crates/CLAUDE.md b/crates/CLAUDE.md index 828b13f2..b57da136 100644 --- a/crates/CLAUDE.md +++ b/crates/CLAUDE.md @@ -43,7 +43,7 @@ helpers go in the parent `mod tests` so sub-modules can `use super::*`. ## Building - Most crates: `cargo check -p {crate_name}` or `cargo test -p {crate_name}` -- Crates using SQLx (eg. `sqlite_tasks`): `SQLX_OFFLINE=true cargo check -p {crate_name}` +- Crates using SQLx (eg. `sqlite_database`): `SQLX_OFFLINE=true cargo check -p {crate_name}` ## Key Crates @@ -53,4 +53,4 @@ helpers go in the parent `mod tests` so sub-modules can `use super::*`. - `seedance2pro_client` — HTTP client for the Kinovi/Seedance2Pro video generation service - `enums` — enum variants stored as strings - `tokens` — identifiers with Stripe-like prefixes (e.g. `user_`, `mf_`) -- `sqlite_tasks` — SQLx queries for the desktop app's local task database +- `sqlite_database` — SQLx queries + embedded migrations for the desktop app's local task database diff --git a/crates/desktop/artcraftx/Cargo.toml b/crates/desktop/artcraftx/Cargo.toml index 44f1485e..52e08684 100644 --- a/crates/desktop/artcraftx/Cargo.toml +++ b/crates/desktop/artcraftx/Cargo.toml @@ -42,7 +42,7 @@ midjourney_client.workspace = true mimetypes.workspace = true openai_sora_client.workspace = true primitives.workspace = true -sqlite_tasks.workspace = true +sqlite_database.workspace = true tokens.workspace = true url_utils.workspace = true web_base64.workspace = true diff --git a/crates/desktop/artcraftx/src/core/commands/deprecated/image_edit/enqueue_edit_image_command.rs b/crates/desktop/artcraftx/src/core/commands/deprecated/image_edit/enqueue_edit_image_command.rs index c23b0db2..6a9e6192 100644 --- a/crates/desktop/artcraftx/src/core/commands/deprecated/image_edit/enqueue_edit_image_command.rs +++ b/crates/desktop/artcraftx/src/core/commands/deprecated/image_edit/enqueue_edit_image_command.rs @@ -40,7 +40,7 @@ use openai_sora_client::recipes::image_upload_from_file_with_session_auto_renew: use openai_sora_client::recipes::maybe_upgrade_or_renew_session::maybe_upgrade_or_renew_session; use openai_sora_client::requests::image_gen::common::{ImageSize, NumImages}; use serde_derive::{Deserialize, Serialize}; -use sqlite_tasks::queries::create_task::{create_task, CreateTaskArgs}; +use sqlite_database::queries::create_task::{create_task, CreateTaskArgs}; use std::time::Duration; use tauri::{AppHandle, Manager, State}; use tokens::tokens::media_files::MediaFileToken; diff --git a/crates/desktop/artcraftx/src/core/commands/deprecated/image_inpaint/enqueue_image_inpaint_command.rs b/crates/desktop/artcraftx/src/core/commands/deprecated/image_inpaint/enqueue_image_inpaint_command.rs index 6ab4469d..b862063b 100644 --- a/crates/desktop/artcraftx/src/core/commands/deprecated/image_inpaint/enqueue_image_inpaint_command.rs +++ b/crates/desktop/artcraftx/src/core/commands/deprecated/image_inpaint/enqueue_image_inpaint_command.rs @@ -38,7 +38,7 @@ use openai_sora_client::recipes::image_upload_from_file_with_session_auto_renew: use openai_sora_client::recipes::maybe_upgrade_or_renew_session::maybe_upgrade_or_renew_session; use openai_sora_client::requests::image_gen::common::{ImageSize, NumImages}; use serde_derive::{Deserialize, Serialize}; -use sqlite_tasks::queries::create_task::{create_task, CreateTaskArgs}; +use sqlite_database::queries::create_task::{create_task, CreateTaskArgs}; use std::time::Duration; use tauri::{AppHandle, Manager, State}; use tokens::tokens::media_files::MediaFileToken; diff --git a/crates/desktop/artcraftx/src/core/commands/deprecated/text_to_image/enqueue_text_to_image_command.rs b/crates/desktop/artcraftx/src/core/commands/deprecated/text_to_image/enqueue_text_to_image_command.rs index 9b7310b8..4cd7375f 100644 --- a/crates/desktop/artcraftx/src/core/commands/deprecated/text_to_image/enqueue_text_to_image_command.rs +++ b/crates/desktop/artcraftx/src/core/commands/deprecated/text_to_image/enqueue_text_to_image_command.rs @@ -34,7 +34,7 @@ use enums::common::generation_provider::GenerationProvider; use enums::tauri::ux::tauri_command_caller::TauriCommandCaller; use log::{error, info, warn}; use serde::{Deserialize, Serialize}; -use sqlite_tasks::queries::create_task::{create_task, CreateTaskArgs}; +use sqlite_database::queries::create_task::{create_task, CreateTaskArgs}; use tauri::{AppHandle, State}; use tokens::tokens::media_files::MediaFileToken; diff --git a/crates/desktop/artcraftx/src/core/commands/enqueue/image_bg_removal/enqueue_image_bg_removal_command.rs b/crates/desktop/artcraftx/src/core/commands/enqueue/image_bg_removal/enqueue_image_bg_removal_command.rs index d18b8521..71232901 100644 --- a/crates/desktop/artcraftx/src/core/commands/enqueue/image_bg_removal/enqueue_image_bg_removal_command.rs +++ b/crates/desktop/artcraftx/src/core/commands/enqueue/image_bg_removal/enqueue_image_bg_removal_command.rs @@ -31,7 +31,7 @@ use openai_sora_client::recipes::image_upload_from_file_with_session_auto_renew: use openai_sora_client::recipes::maybe_upgrade_or_renew_session::maybe_upgrade_or_renew_session; use openai_sora_client::requests::image_gen::common::{ImageSize, NumImages}; use serde_derive::{Deserialize, Serialize}; -use sqlite_tasks::queries::create_task::{create_task, CreateTaskArgs}; +use sqlite_database::queries::create_task::{create_task, CreateTaskArgs}; use std::time::Duration; use artcraft_client::endpoints::media_files::get_media_file::get_media_file; use artcraft_client::error::storyteller_error::StorytellerError; diff --git a/crates/desktop/artcraftx/src/core/commands/enqueue/image_to_gaussian/enqueue_image_to_gaussian_command.rs b/crates/desktop/artcraftx/src/core/commands/enqueue/image_to_gaussian/enqueue_image_to_gaussian_command.rs index 3e0c1f94..e4aa00fe 100644 --- a/crates/desktop/artcraftx/src/core/commands/enqueue/image_to_gaussian/enqueue_image_to_gaussian_command.rs +++ b/crates/desktop/artcraftx/src/core/commands/enqueue/image_to_gaussian/enqueue_image_to_gaussian_command.rs @@ -26,7 +26,7 @@ use enums::common::generation_provider::GenerationProvider; use enums::tauri::ux::tauri_command_caller::TauriCommandCaller; use log::{error, info, warn}; use serde::{Deserialize, Serialize}; -use sqlite_tasks::queries::create_task::{create_task, CreateTaskArgs}; +use sqlite_database::queries::create_task::{create_task, CreateTaskArgs}; use tauri::{AppHandle, State}; use tokens::tokens::media_files::MediaFileToken; use crate::core::state::artcraft_usage_tracker::artcraft_usage_tracker::ArtcraftUsageTracker; diff --git a/crates/desktop/artcraftx/src/core/commands/enqueue/task_enqueue_success.rs b/crates/desktop/artcraftx/src/core/commands/enqueue/task_enqueue_success.rs index 60031fb4..6391eab2 100644 --- a/crates/desktop/artcraftx/src/core/commands/enqueue/task_enqueue_success.rs +++ b/crates/desktop/artcraftx/src/core/commands/enqueue/task_enqueue_success.rs @@ -5,8 +5,8 @@ use enums::tauri::tasks::task_model_type::TaskModelType; use enums::tauri::tasks::task_status::TaskStatus; use enums::tauri::tasks::task_type::TaskType; use enums::tauri::ux::tauri_command_caller::TauriCommandCaller; -use sqlite_tasks::error::SqliteTasksError; -use sqlite_tasks::queries::create_task::{create_task, CreateTaskArgs}; +use sqlite_database::error::SqliteTasksError; +use sqlite_database::queries::create_task::{create_task, CreateTaskArgs}; use tokens::tokens::prompts::PromptToken; use tokens::tokens::sqlite::tasks::TaskId; diff --git a/crates/desktop/artcraftx/src/core/commands/task_queue/get_task_queue_command.rs b/crates/desktop/artcraftx/src/core/commands/task_queue/get_task_queue_command.rs index 89cc80c7..9ebf29fe 100644 --- a/crates/desktop/artcraftx/src/core/commands/task_queue/get_task_queue_command.rs +++ b/crates/desktop/artcraftx/src/core/commands/task_queue/get_task_queue_command.rs @@ -15,7 +15,7 @@ use enums::tauri::tasks::task_type::TaskType; use errors::AnyhowResult; use log::{debug, error, info, warn}; use serde_derive::{Deserialize, Serialize}; -use sqlite_tasks::queries::list_tasks_for_frontend::list_tasks_for_frontend; +use sqlite_database::queries::list_tasks_for_frontend::list_tasks_for_frontend; use artcraft_client::endpoints::media_files::delete_media_file::delete_media_file; use tauri::{AppHandle, State}; use enums::tauri::tasks::task_failure_type::TaskFailureType; diff --git a/crates/desktop/artcraftx/src/core/commands/task_queue/mark_task_as_dismissed_command.rs b/crates/desktop/artcraftx/src/core/commands/task_queue/mark_task_as_dismissed_command.rs index cbdeff96..b995c81c 100644 --- a/crates/desktop/artcraftx/src/core/commands/task_queue/mark_task_as_dismissed_command.rs +++ b/crates/desktop/artcraftx/src/core/commands/task_queue/mark_task_as_dismissed_command.rs @@ -11,8 +11,8 @@ use chrono::{DateTime, Utc}; use errors::AnyhowResult; use log::{error, info, warn}; use serde_derive::{Deserialize, Serialize}; -use sqlite_tasks::queries::list_tasks_for_frontend::list_tasks_for_frontend; -use sqlite_tasks::queries::mark_task_as_dismissed::mark_task_as_dismissed; +use sqlite_database::queries::list_tasks_for_frontend::list_tasks_for_frontend; +use sqlite_database::queries::mark_task_as_dismissed::mark_task_as_dismissed; use artcraft_client::endpoints::media_files::delete_media_file::delete_media_file; use tauri::{AppHandle, State}; use tokens::tokens::media_files::MediaFileToken; diff --git a/crates/desktop/artcraftx/src/core/commands/task_queue/tasks_nuke_all_command.rs b/crates/desktop/artcraftx/src/core/commands/task_queue/tasks_nuke_all_command.rs index dac2300a..08d66684 100644 --- a/crates/desktop/artcraftx/src/core/commands/task_queue/tasks_nuke_all_command.rs +++ b/crates/desktop/artcraftx/src/core/commands/task_queue/tasks_nuke_all_command.rs @@ -11,10 +11,10 @@ use chrono::{DateTime, Utc}; use errors::AnyhowResult; use log::{error, info, warn}; use serde_derive::{Deserialize, Serialize}; -use sqlite_tasks::queries::dismiss_all_tasks::dismiss_all_tasks; -use sqlite_tasks::queries::list_tasks_for_frontend::list_tasks_for_frontend; -use sqlite_tasks::queries::mark_task_as_dismissed::mark_task_as_dismissed; -use sqlite_tasks::queries::nuke_all_tasks::nuke_all_tasks; +use sqlite_database::queries::dismiss_all_tasks::dismiss_all_tasks; +use sqlite_database::queries::list_tasks_for_frontend::list_tasks_for_frontend; +use sqlite_database::queries::mark_task_as_dismissed::mark_task_as_dismissed; +use sqlite_database::queries::nuke_all_tasks::nuke_all_tasks; use artcraft_client::endpoints::media_files::delete_media_file::delete_media_file; use tauri::{AppHandle, State}; use tokens::tokens::media_files::MediaFileToken; diff --git a/crates/desktop/artcraftx/src/core/state/task_database.rs b/crates/desktop/artcraftx/src/core/state/task_database.rs index 4467785f..909c1a4a 100644 --- a/crates/desktop/artcraftx/src/core/state/task_database.rs +++ b/crates/desktop/artcraftx/src/core/state/task_database.rs @@ -1,6 +1,6 @@ use crate::core::state::data_dir::app_data_root::AppDataRoot; use errors::AnyhowResult; -use sqlite_tasks::connection::TaskDbConnection; +use sqlite_database::connection::TaskDbConnection; #[derive(Clone)] pub struct TaskDatabase { diff --git a/crates/desktop/artcraftx/src/core/threads/third_party_task_polling_thread/events/notify_frontend_of_completion.rs b/crates/desktop/artcraftx/src/core/threads/third_party_task_polling_thread/events/notify_frontend_of_completion.rs index b01ff823..a6a6059c 100644 --- a/crates/desktop/artcraftx/src/core/threads/third_party_task_polling_thread/events/notify_frontend_of_completion.rs +++ b/crates/desktop/artcraftx/src/core/threads/third_party_task_polling_thread/events/notify_frontend_of_completion.rs @@ -17,7 +17,7 @@ use enums::tauri::tasks::task_media_file_class::TaskMediaFileClass; use enums::tauri::tasks::task_model_type::TaskModelType; use enums::tauri::tasks::task_type::TaskType; use log::{error, info, warn}; -use sqlite_tasks::queries::task::Task; +use sqlite_database::queries::task::Task; use tauri::AppHandle; use reqwest::Url; use tokens::tokens::batch_generations::BatchGenerationToken; diff --git a/crates/desktop/artcraftx/src/core/threads/third_party_task_polling_thread/handlers/fal/handle_fal_complete.rs b/crates/desktop/artcraftx/src/core/threads/third_party_task_polling_thread/handlers/fal/handle_fal_complete.rs index 40b78e2e..11b6aa87 100644 --- a/crates/desktop/artcraftx/src/core/threads/third_party_task_polling_thread/handlers/fal/handle_fal_complete.rs +++ b/crates/desktop/artcraftx/src/core/threads/third_party_task_polling_thread/handlers/fal/handle_fal_complete.rs @@ -26,8 +26,8 @@ use enums::tauri::tasks::task_type::TaskType; use fal_client::polling::poll_job_response::poll_job_response::PollJobResponse; use fal_client::polling::poll_job_response::success_case_extractors::PollResponseExtractedContents; use log::{error, info, warn}; -use sqlite_tasks::queries::task::Task; -use sqlite_tasks::queries::update_successful_task_status_with_metadata::{ +use sqlite_database::queries::task::Task; +use sqlite_database::queries::update_successful_task_status_with_metadata::{ update_successful_task_status_with_metadata, UpdateSuccessfulTaskArgs, }; use std::fs::File; diff --git a/crates/desktop/artcraftx/src/core/threads/third_party_task_polling_thread/handlers/fal/handle_fal_failure.rs b/crates/desktop/artcraftx/src/core/threads/third_party_task_polling_thread/handlers/fal/handle_fal_failure.rs index 2f754eb9..9d709075 100644 --- a/crates/desktop/artcraftx/src/core/threads/third_party_task_polling_thread/handlers/fal/handle_fal_failure.rs +++ b/crates/desktop/artcraftx/src/core/threads/third_party_task_polling_thread/handlers/fal/handle_fal_failure.rs @@ -5,8 +5,8 @@ use crate::core::state::task_database::TaskDatabase; use enums::tauri::tasks::task_status::TaskStatus; use enums::tauri::tasks::task_type::TaskType; use log::{error, info}; -use sqlite_tasks::queries::task::Task; -use sqlite_tasks::queries::update_task_status::{update_task_status, UpdateTaskArgs}; +use sqlite_database::queries::task::Task; +use sqlite_database::queries::update_task_status::{update_task_status, UpdateTaskArgs}; use tauri::AppHandle; pub async fn handle_fal_failure( diff --git a/crates/desktop/artcraftx/src/core/threads/third_party_task_polling_thread/handlers/fal/poll_fal_tasks.rs b/crates/desktop/artcraftx/src/core/threads/third_party_task_polling_thread/handlers/fal/poll_fal_tasks.rs index 81f9f585..205da407 100644 --- a/crates/desktop/artcraftx/src/core/threads/third_party_task_polling_thread/handlers/fal/poll_fal_tasks.rs +++ b/crates/desktop/artcraftx/src/core/threads/third_party_task_polling_thread/handlers/fal/poll_fal_tasks.rs @@ -12,8 +12,8 @@ use fal_client::creds::fal_api_key::FalApiKey; use fal_client::polling::poll_job_response::poll_job_response::{poll_job_response, PollJobResponseArgs}; use fal_client::polling::poll_job_status::poll_job_status::{poll_job_status, FalJobStatus, PollJobStatusArgs}; use log::{error, info, warn}; -use sqlite_tasks::queries::task::Task; -use sqlite_tasks::queries::update_task_status::{update_task_status, UpdateTaskArgs}; +use sqlite_database::queries::task::Task; +use sqlite_database::queries::update_task_status::{update_task_status, UpdateTaskArgs}; use tauri::AppHandle; pub async fn poll_fal_tasks( diff --git a/crates/desktop/artcraftx/src/core/threads/third_party_task_polling_thread/third_party_task_polling_thread.rs b/crates/desktop/artcraftx/src/core/threads/third_party_task_polling_thread/third_party_task_polling_thread.rs index 552633c4..f22c46ee 100644 --- a/crates/desktop/artcraftx/src/core/threads/third_party_task_polling_thread/third_party_task_polling_thread.rs +++ b/crates/desktop/artcraftx/src/core/threads/third_party_task_polling_thread/third_party_task_polling_thread.rs @@ -7,10 +7,10 @@ use crate::core::utils::task_database_pending_statuses::TASK_DATABASE_PENDING_ST use crate::services::storyteller::state::storyteller_credential_manager::StorytellerCredentialManager; use enums::common::generation_provider::GenerationProvider; use log::{error, info, warn}; -use sqlite_tasks::queries::list_non_artcraft_pending_tasks::{ +use sqlite_database::queries::list_non_artcraft_pending_tasks::{ list_non_artcraft_pending_tasks, ListNonArtcraftPendingTasksArgs, }; -use sqlite_tasks::queries::task::Task; +use sqlite_database::queries::task::Task; use std::time::Duration; use tauri::AppHandle; @@ -120,11 +120,11 @@ async fn poll_iteration( #[derive(Debug)] enum PollError { - SqliteTasksError(sqlite_tasks::error::SqliteTasksError), + SqliteTasksError(sqlite_database::error::SqliteTasksError), } -impl From for PollError { - fn from(err: sqlite_tasks::error::SqliteTasksError) -> Self { +impl From for PollError { + fn from(err: sqlite_database::error::SqliteTasksError) -> Self { Self::SqliteTasksError(err) } } diff --git a/crates/desktop/artcraftx/src/services/grok/threads/grok_image_websocket_thread/grok_image_websocket_thread.rs b/crates/desktop/artcraftx/src/services/grok/threads/grok_image_websocket_thread/grok_image_websocket_thread.rs index a8732b53..83166599 100644 --- a/crates/desktop/artcraftx/src/services/grok/threads/grok_image_websocket_thread/grok_image_websocket_thread.rs +++ b/crates/desktop/artcraftx/src/services/grok/threads/grok_image_websocket_thread/grok_image_websocket_thread.rs @@ -26,11 +26,11 @@ use grok_consumer_client::requests::image_websocket::messages::websocket_client_ use grok_consumer_client::requests::image_websocket::prompt_websocket_image::{prompt_websocket_image, PromptWebsocketImageArgs}; use uuid_utils::uuid::generate_random_uuid; use log::{error, info, warn}; -use sqlite_tasks::queries::get_task_by_provider_and_provider_job_id::{get_task_by_provider_and_provider_job_id, GetTaskByProviderAndProviderJobIdArgs}; -use sqlite_tasks::queries::list_tasks_by_provider_and_status::{list_tasks_by_provider_and_status, ListTasksByProviderAndStatusArgs}; -use sqlite_tasks::queries::task::Task; -use sqlite_tasks::queries::update_successful_task_status_with_metadata::{update_successful_task_status_with_metadata, UpdateSuccessfulTaskArgs}; -use sqlite_tasks::queries::update_successful_task_status_with_metadata_by_provider::{update_successful_task_status_with_metadata_by_provider, UpdateSuccessfulTaskByProviderArgs}; +use sqlite_database::queries::get_task_by_provider_and_provider_job_id::{get_task_by_provider_and_provider_job_id, GetTaskByProviderAndProviderJobIdArgs}; +use sqlite_database::queries::list_tasks_by_provider_and_status::{list_tasks_by_provider_and_status, ListTasksByProviderAndStatusArgs}; +use sqlite_database::queries::task::Task; +use sqlite_database::queries::update_successful_task_status_with_metadata::{update_successful_task_status_with_metadata, UpdateSuccessfulTaskArgs}; +use sqlite_database::queries::update_successful_task_status_with_metadata_by_provider::{update_successful_task_status_with_metadata_by_provider, UpdateSuccessfulTaskByProviderArgs}; use std::time::Duration; use artcraft_client::credentials::storyteller_credential_set::StorytellerCredentialSet; use artcraft_client::endpoints::media_files::get_media_file::get_media_file; diff --git a/crates/desktop/artcraftx/src/services/grok/threads/grok_video_task_polling/grok_video_task_polling_thread.rs b/crates/desktop/artcraftx/src/services/grok/threads/grok_video_task_polling/grok_video_task_polling_thread.rs index 784b9115..f12bf9c9 100644 --- a/crates/desktop/artcraftx/src/services/grok/threads/grok_video_task_polling/grok_video_task_polling_thread.rs +++ b/crates/desktop/artcraftx/src/services/grok/threads/grok_video_task_polling/grok_video_task_polling_thread.rs @@ -31,10 +31,10 @@ use midjourney_client::endpoints::imagine::{imagine, ImagineItem, ImagineRequest use midjourney_client::utils::get_image_url::get_image_url; use midjourney_client::utils::image_downloader_client::ImageDownloaderClient; use once_cell::sync::Lazy; -use sqlite_tasks::queries::list_tasks_by_provider_and_status::{list_tasks_by_provider_and_status, ListTasksByProviderAndStatusArgs, TaskList}; -use sqlite_tasks::queries::task::Task; -use sqlite_tasks::queries::update_successful_task_status_with_metadata::{update_successful_task_status_with_metadata, UpdateSuccessfulTaskArgs}; -use sqlite_tasks::queries::update_task_status::{update_task_status, UpdateTaskArgs}; +use sqlite_database::queries::list_tasks_by_provider_and_status::{list_tasks_by_provider_and_status, ListTasksByProviderAndStatusArgs, TaskList}; +use sqlite_database::queries::task::Task; +use sqlite_database::queries::update_successful_task_status_with_metadata::{update_successful_task_status_with_metadata, UpdateSuccessfulTaskArgs}; +use sqlite_database::queries::update_task_status::{update_task_status, UpdateTaskArgs}; use std::collections::{HashMap, HashSet}; use std::fs::File; use std::io::Write; diff --git a/crates/desktop/artcraftx/src/services/midjourney/threads/events/maybe_handle_text_to_image_complete_event.rs b/crates/desktop/artcraftx/src/services/midjourney/threads/events/maybe_handle_text_to_image_complete_event.rs index 49e7bd25..8de4457b 100644 --- a/crates/desktop/artcraftx/src/services/midjourney/threads/events/maybe_handle_text_to_image_complete_event.rs +++ b/crates/desktop/artcraftx/src/services/midjourney/threads/events/maybe_handle_text_to_image_complete_event.rs @@ -7,8 +7,8 @@ use enums::tauri::tasks::task_type::TaskType; use enums::tauri::ux::tauri_command_caller::TauriCommandCaller; use errors::AnyhowResult; use log::{error, warn}; -use sqlite_tasks::queries::list_tasks_by_provider_and_status::{list_tasks_by_provider_and_status, ListTasksByProviderAndStatusArgs, TaskList}; -use sqlite_tasks::queries::task::Task; +use sqlite_database::queries::list_tasks_by_provider_and_status::{list_tasks_by_provider_and_status, ListTasksByProviderAndStatusArgs, TaskList}; +use sqlite_database::queries::task::Task; use artcraft_client::credentials::storyteller_credential_set::StorytellerCredentialSet; use artcraft_client::endpoints::media_files::list_batch_generated_redux_media_files::list_batch_generated_redux_media_files; use tauri::AppHandle; diff --git a/crates/desktop/artcraftx/src/services/midjourney/threads/midjourney_long_polling_thread.rs b/crates/desktop/artcraftx/src/services/midjourney/threads/midjourney_long_polling_thread.rs index 4ebcf662..47bf2c15 100644 --- a/crates/desktop/artcraftx/src/services/midjourney/threads/midjourney_long_polling_thread.rs +++ b/crates/desktop/artcraftx/src/services/midjourney/threads/midjourney_long_polling_thread.rs @@ -25,10 +25,10 @@ use midjourney_client::endpoints::imagine::{imagine, ImagineItem, ImagineRequest use midjourney_client::utils::get_image_url::get_image_url; use midjourney_client::utils::image_downloader_client::ImageDownloaderClient; use once_cell::sync::Lazy; -use sqlite_tasks::queries::list_tasks_by_provider_and_status::{list_tasks_by_provider_and_status, ListTasksByProviderAndStatusArgs, TaskList}; -use sqlite_tasks::queries::task::Task; -use sqlite_tasks::queries::update_successful_task_status_with_metadata::{update_successful_task_status_with_metadata, UpdateSuccessfulTaskArgs}; -use sqlite_tasks::queries::update_task_status::{update_task_status, UpdateTaskArgs}; +use sqlite_database::queries::list_tasks_by_provider_and_status::{list_tasks_by_provider_and_status, ListTasksByProviderAndStatusArgs, TaskList}; +use sqlite_database::queries::task::Task; +use sqlite_database::queries::update_successful_task_status_with_metadata::{update_successful_task_status_with_metadata, UpdateSuccessfulTaskArgs}; +use sqlite_database::queries::update_task_status::{update_task_status, UpdateTaskArgs}; use std::collections::{HashMap, HashSet}; use std::fs::File; use std::io::Write; diff --git a/crates/desktop/artcraftx/src/services/sora/threads/sora_task_polling/helpers/handle_failed_generations.rs b/crates/desktop/artcraftx/src/services/sora/threads/sora_task_polling/helpers/handle_failed_generations.rs index f5635c1c..93360364 100644 --- a/crates/desktop/artcraftx/src/services/sora/threads/sora_task_polling/helpers/handle_failed_generations.rs +++ b/crates/desktop/artcraftx/src/services/sora/threads/sora_task_polling/helpers/handle_failed_generations.rs @@ -11,8 +11,8 @@ use errors::AnyhowResult; use log::info; use openai_sora_client::requests::common::task_id::TaskId; use openai_sora_client::requests::list_classic_tasks::list_classic_tasks::PartialTaskResponse; -use sqlite_tasks::queries::task::Task; -use sqlite_tasks::queries::update_task_status::{update_task_status, UpdateTaskArgs}; +use sqlite_database::queries::task::Task; +use sqlite_database::queries::update_task_status::{update_task_status, UpdateTaskArgs}; use std::collections::HashMap; use artcraft_client::credentials::storyteller_credential_set::StorytellerCredentialSet; use tauri::AppHandle; @@ -24,14 +24,14 @@ pub struct FailedGeneration { pub async fn handle_classic_failed_generations( app_handle: &AppHandle, task_database: &TaskDatabase, - local_sqlite_tasks_by_sora_task_id: &HashMap, + local_sqlite_database_by_sora_task_id: &HashMap, sora_failed_tasks_by_id: &HashMap, sora_task_queue: &SoraTaskQueue, ) -> AnyhowResult<()> { for (task_id, task) in sora_failed_tasks_by_id.iter() { // Emit events for failed tasks. - if local_sqlite_tasks_by_sora_task_id.contains_key(task_id.as_str()) { + if local_sqlite_database_by_sora_task_id.contains_key(task_id.as_str()) { let event = GenerationFailedEvent { action: GenerationAction::GenerateImage, service: GenerationServiceProvider::Sora, @@ -43,7 +43,7 @@ pub async fn handle_classic_failed_generations( } // Clear from SQLite task database. - if let Some(local_task) = local_sqlite_tasks_by_sora_task_id.get(task_id.as_str()) { + if let Some(local_task) = local_sqlite_database_by_sora_task_id.get(task_id.as_str()) { info!("Marking local task as failed: {:?}", local_task.id); let _updated = update_task_status(UpdateTaskArgs { diff --git a/crates/desktop/artcraftx/src/services/sora/threads/sora_task_polling/helpers/handle_successful_generations.rs b/crates/desktop/artcraftx/src/services/sora/threads/sora_task_polling/helpers/handle_successful_generations.rs index e8efc5d7..47e1808b 100644 --- a/crates/desktop/artcraftx/src/services/sora/threads/sora_task_polling/helpers/handle_successful_generations.rs +++ b/crates/desktop/artcraftx/src/services/sora/threads/sora_task_polling/helpers/handle_successful_generations.rs @@ -27,10 +27,10 @@ use openai_sora_client::recipes::list_classic_sora_tasks_with_session_auto_renew use openai_sora_client::requests::common::task_id::TaskId; use openai_sora_client::requests::list_classic_tasks::list_classic_tasks::{PartialGeneration, PartialTaskResponse}; use reqwest::Url; -use sqlite_tasks::queries::list_tasks_by_provider_and_status::{list_tasks_by_provider_and_status, ListTasksByProviderAndStatusArgs, TaskList}; -use sqlite_tasks::queries::task::Task; -use sqlite_tasks::queries::update_successful_task_status_with_metadata::{update_successful_task_status_with_metadata, UpdateSuccessfulTaskArgs}; -use sqlite_tasks::queries::update_task_status::{update_task_status, UpdateTaskArgs}; +use sqlite_database::queries::list_tasks_by_provider_and_status::{list_tasks_by_provider_and_status, ListTasksByProviderAndStatusArgs, TaskList}; +use sqlite_database::queries::task::Task; +use sqlite_database::queries::update_successful_task_status_with_metadata::{update_successful_task_status_with_metadata, UpdateSuccessfulTaskArgs}; +use sqlite_database::queries::update_task_status::{update_task_status, UpdateTaskArgs}; use std::collections::{HashMap, HashSet}; use std::fs::File; use std::io::Write; @@ -62,12 +62,12 @@ pub async fn handle_classic_successful_generations( task_database: &TaskDatabase, storyteller_creds: &StorytellerCredentialSet, succeeded_tasks_by_id: &HashMap, - sqlite_tasks_by_sora_task_id: &HashMap, + sqlite_database_by_sora_task_id: &HashMap, recommended_download_extension: DownloadExtension, ) -> AnyhowResult<()> { for (task_id, generation) in succeeded_tasks_by_id.iter() { - if !sqlite_tasks_by_sora_task_id.contains_key(task_id.as_str()) { + if !sqlite_database_by_sora_task_id.contains_key(task_id.as_str()) { continue; // Task is irrelevant - previously completed, generated elsewhere, etc. } @@ -128,7 +128,7 @@ pub async fn handle_classic_successful_generations( } // Clear from SQLite task database. - if let Some(local_task) = sqlite_tasks_by_sora_task_id.get(task_id.as_str()) { + if let Some(local_task) = sqlite_database_by_sora_task_id.get(task_id.as_str()) { info!("Marking local task as succeeded: {:?}", local_task.id); let generation_class = match generation_type { diff --git a/crates/desktop/artcraftx/src/services/sora/threads/sora_task_polling/helpers/poll_classic_sora_tasks.rs b/crates/desktop/artcraftx/src/services/sora/threads/sora_task_polling/helpers/poll_classic_sora_tasks.rs index 18a67296..81648b69 100644 --- a/crates/desktop/artcraftx/src/services/sora/threads/sora_task_polling/helpers/poll_classic_sora_tasks.rs +++ b/crates/desktop/artcraftx/src/services/sora/threads/sora_task_polling/helpers/poll_classic_sora_tasks.rs @@ -25,9 +25,9 @@ use openai_sora_client::recipes::list_classic_sora_tasks_with_session_auto_renew use openai_sora_client::requests::common::task_id::TaskId; use openai_sora_client::requests::list_classic_tasks::list_classic_tasks::TaskStatus; use reqwest::Url; -use sqlite_tasks::queries::list_tasks_by_provider_and_status::{list_tasks_by_provider_and_status, ListTasksByProviderAndStatusArgs, TaskList}; -use sqlite_tasks::queries::task::Task; -use sqlite_tasks::queries::update_task_status::{update_task_status, UpdateTaskArgs}; +use sqlite_database::queries::list_tasks_by_provider_and_status::{list_tasks_by_provider_and_status, ListTasksByProviderAndStatusArgs, TaskList}; +use sqlite_database::queries::task::Task; +use sqlite_database::queries::update_task_status::{update_task_status, UpdateTaskArgs}; use std::collections::{HashMap, HashSet}; use std::fs::File; use std::io::Write; @@ -46,7 +46,7 @@ pub async fn poll_classic_sora_tasks( storyteller_creds_manager: &StorytellerCredentialManager, sora_task_queue: &SoraTaskQueue, app_data_root: &AppDataRoot, - local_sqlite_tasks_by_sora_task_id: &HashMap, + local_sqlite_database_by_sora_task_id: &HashMap, ) -> AnyhowResult<()> { let (sora_response, maybe_new_creds) = @@ -103,7 +103,7 @@ pub async fn poll_classic_sora_tasks( handle_classic_failed_generations( &app_handle, &task_database, - &local_sqlite_tasks_by_sora_task_id, + &local_sqlite_database_by_sora_task_id, &sora_failed_tasks_by_id, &sora_task_queue, ).await?; @@ -116,7 +116,7 @@ pub async fn poll_classic_sora_tasks( &task_database, &storyteller_creds, &sora_succeeded_tasks_by_id, - &local_sqlite_tasks_by_sora_task_id, + &local_sqlite_database_by_sora_task_id, DownloadExtension::Png, ).await?; diff --git a/crates/desktop/artcraftx/src/services/sora/threads/sora_task_polling/helpers/poll_sora_2_tasks.rs b/crates/desktop/artcraftx/src/services/sora/threads/sora_task_polling/helpers/poll_sora_2_tasks.rs index 4c31784f..30367d17 100644 --- a/crates/desktop/artcraftx/src/services/sora/threads/sora_task_polling/helpers/poll_sora_2_tasks.rs +++ b/crates/desktop/artcraftx/src/services/sora/threads/sora_task_polling/helpers/poll_sora_2_tasks.rs @@ -27,9 +27,9 @@ use openai_sora_client::requests::common::task_id::TaskId; use openai_sora_client::requests::list_classic_tasks::list_classic_tasks::TaskStatus; use openai_sora_client::requests::list_sora2_drafts::list_sora2_drafts::Draft; use reqwest::Url; -use sqlite_tasks::queries::list_tasks_by_provider_and_status::{list_tasks_by_provider_and_status, ListTasksByProviderAndStatusArgs, TaskList}; -use sqlite_tasks::queries::task::Task; -use sqlite_tasks::queries::update_task_status::{update_task_status, UpdateTaskArgs}; +use sqlite_database::queries::list_tasks_by_provider_and_status::{list_tasks_by_provider_and_status, ListTasksByProviderAndStatusArgs, TaskList}; +use sqlite_database::queries::task::Task; +use sqlite_database::queries::update_task_status::{update_task_status, UpdateTaskArgs}; use std::collections::{HashMap, HashSet}; use std::fs::File; use std::io::Write; @@ -48,7 +48,7 @@ pub async fn poll_sora_2_tasks( storyteller_creds_manager: &StorytellerCredentialManager, sora_task_queue: &SoraTaskQueue, app_data_root: &AppDataRoot, - local_sqlite_tasks_by_sora_task_id: &HashMap, + local_sqlite_database_by_sora_task_id: &HashMap, ) -> AnyhowResult<()> { let (sora_response, maybe_new_creds) = @@ -95,7 +95,7 @@ pub async fn poll_sora_2_tasks( handle_classic_failed_generations( &app_handle, &task_database, - &local_sqlite_tasks_by_sora_task_id, + &local_sqlite_database_by_sora_task_id, &sora_failed_drafts_by_id, &sora_task_queue, ).await?; @@ -108,7 +108,7 @@ pub async fn poll_sora_2_tasks( &task_database, &storyteller_creds, &sora_succeeded_drafts_by_id, - &local_sqlite_tasks_by_sora_task_id, + &local_sqlite_database_by_sora_task_id, DownloadExtension::Mp4, ).await?; diff --git a/crates/desktop/artcraftx/src/services/sora/threads/sora_task_polling/sora_task_polling_thread.rs b/crates/desktop/artcraftx/src/services/sora/threads/sora_task_polling/sora_task_polling_thread.rs index 0f2e2bf5..d13ab3db 100644 --- a/crates/desktop/artcraftx/src/services/sora/threads/sora_task_polling/sora_task_polling_thread.rs +++ b/crates/desktop/artcraftx/src/services/sora/threads/sora_task_polling/sora_task_polling_thread.rs @@ -26,9 +26,9 @@ use openai_sora_client::recipes::list_classic_sora_tasks_with_session_auto_renew use openai_sora_client::requests::common::task_id::TaskId; use openai_sora_client::requests::list_classic_tasks::list_classic_tasks::TaskStatus; use reqwest::Url; -use sqlite_tasks::queries::list_tasks_by_provider_and_status::{list_tasks_by_provider_and_status, ListTasksByProviderAndStatusArgs, TaskList}; -use sqlite_tasks::queries::task::Task; -use sqlite_tasks::queries::update_task_status::{update_task_status, UpdateTaskArgs}; +use sqlite_database::queries::list_tasks_by_provider_and_status::{list_tasks_by_provider_and_status, ListTasksByProviderAndStatusArgs, TaskList}; +use sqlite_database::queries::task::Task; +use sqlite_database::queries::update_task_status::{update_task_status, UpdateTaskArgs}; use std::collections::{HashMap, HashSet}; use std::fs::File; use std::io::Write; @@ -74,13 +74,13 @@ async fn local_task_polling_loop( app_data_root: &AppDataRoot, ) -> AnyhowResult<()> { loop { - let local_sqlite_tasks = list_tasks_by_provider_and_status(ListTasksByProviderAndStatusArgs { + let local_sqlite_database = list_tasks_by_provider_and_status(ListTasksByProviderAndStatusArgs { db: task_database.get_connection(), provider: GenerationProvider::Sora, task_statuses: &TASK_DATABASE_PENDING_STATUSES, }).await?; - if local_sqlite_tasks.tasks.is_empty() { + if local_sqlite_database.tasks.is_empty() { // No need to poll if we don't have pending tasks. tokio::time::sleep(std::time::Duration::from_millis(2_000)).await; continue; @@ -89,7 +89,7 @@ async fn local_task_polling_loop( let creds = sora_creds_manager.get_credentials_required()?; // Map of Sora Task ID to Local Task. - let local_sqlite_tasks_by_sora_task_id = local_sqlite_tasks.tasks.iter() + let local_sqlite_database_by_sora_task_id = local_sqlite_database.tasks.iter() .filter_map(|task| { if let Some(provider_job_id) = &task.provider_job_id { Some((provider_job_id.clone(), task.clone())) @@ -110,7 +110,7 @@ async fn local_task_polling_loop( &storyteller_creds_manager, &sora_task_queue, &app_data_root, - &local_sqlite_tasks_by_sora_task_id, + &local_sqlite_database_by_sora_task_id, ).await?; // TODO: Only poll if we have new items @@ -124,7 +124,7 @@ async fn local_task_polling_loop( &storyteller_creds_manager, &sora_task_queue, &app_data_root, - &local_sqlite_tasks_by_sora_task_id, + &local_sqlite_database_by_sora_task_id, ).await?; tokio::time::sleep(std::time::Duration::from_millis(2_000)).await; diff --git a/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_activity_thread.rs b/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_activity_thread.rs index 67717ea4..7256dbea 100644 --- a/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_activity_thread.rs +++ b/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_activity_thread.rs @@ -9,7 +9,7 @@ use artcraft_client::error::api_error::ApiError; use artcraft_client::error::storyteller_error::StorytellerError; use errors::AnyhowResult; use log::{debug, error, info}; -use sqlite_tasks::queries::list_tasks_by_provider_and_tokens::{list_tasks_by_provider_and_tokens, ListTasksArgs}; +use sqlite_database::queries::list_tasks_by_provider_and_tokens::{list_tasks_by_provider_and_tokens, ListTasksArgs}; use std::time::Instant; use tokens::tokens::app_session::AppSessionToken; diff --git a/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/events/maybe_handle_frontend_caller_notification.rs b/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/events/maybe_handle_frontend_caller_notification.rs index e65b7b64..d4accc29 100644 --- a/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/events/maybe_handle_frontend_caller_notification.rs +++ b/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/events/maybe_handle_frontend_caller_notification.rs @@ -12,8 +12,8 @@ use artcraft_client::api_defs::utils::media_links_to_thumbnail_template::media_l use enums::tauri::tasks::task_type::TaskType; use errors::AnyhowResult; use log::{error, warn}; -use sqlite_tasks::queries::list_tasks_by_provider_and_tokens::{list_tasks_by_provider_and_tokens, ListTasksArgs}; -use sqlite_tasks::queries::task::Task; +use sqlite_database::queries::list_tasks_by_provider_and_tokens::{list_tasks_by_provider_and_tokens, ListTasksArgs}; +use sqlite_database::queries::task::Task; use artcraft_client::credentials::storyteller_credential_set::StorytellerCredentialSet; use artcraft_client::endpoints::media_files::list_batch_generated_redux_media_files::list_batch_generated_redux_media_files; use tauri::AppHandle; diff --git a/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/events/maybe_handle_inpainting_complete_event.rs b/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/events/maybe_handle_inpainting_complete_event.rs index 4fc64738..02d87b59 100644 --- a/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/events/maybe_handle_inpainting_complete_event.rs +++ b/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/events/maybe_handle_inpainting_complete_event.rs @@ -9,8 +9,8 @@ use enums::tauri::tasks::task_type::TaskType; use enums::tauri::ux::tauri_command_caller::TauriCommandCaller; use errors::AnyhowResult; use log::{error, warn}; -use sqlite_tasks::queries::list_tasks_by_provider_and_tokens::{list_tasks_by_provider_and_tokens, ListTasksArgs}; -use sqlite_tasks::queries::task::Task; +use sqlite_database::queries::list_tasks_by_provider_and_tokens::{list_tasks_by_provider_and_tokens, ListTasksArgs}; +use sqlite_database::queries::task::Task; use artcraft_client::credentials::storyteller_credential_set::StorytellerCredentialSet; use artcraft_client::endpoints::media_files::list_batch_generated_redux_media_files::list_batch_generated_redux_media_files; use tauri::AppHandle; diff --git a/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/events/maybe_handle_text_to_image_complete_event.rs b/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/events/maybe_handle_text_to_image_complete_event.rs index b092de65..f81297c6 100644 --- a/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/events/maybe_handle_text_to_image_complete_event.rs +++ b/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/events/maybe_handle_text_to_image_complete_event.rs @@ -7,8 +7,8 @@ use enums::tauri::tasks::task_type::TaskType; use enums::tauri::ux::tauri_command_caller::TauriCommandCaller; use errors::AnyhowResult; use log::{error, warn}; -use sqlite_tasks::queries::list_tasks_by_provider_and_tokens::{list_tasks_by_provider_and_tokens, ListTasksArgs}; -use sqlite_tasks::queries::task::Task; +use sqlite_database::queries::list_tasks_by_provider_and_tokens::{list_tasks_by_provider_and_tokens, ListTasksArgs}; +use sqlite_database::queries::task::Task; use artcraft_client::credentials::storyteller_credential_set::StorytellerCredentialSet; use artcraft_client::endpoints::media_files::list_batch_generated_redux_media_files::list_batch_generated_redux_media_files; use tauri::AppHandle; diff --git a/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/events/maybe_send_background_removal_complete_event.rs b/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/events/maybe_send_background_removal_complete_event.rs index 047689a8..2a2884e2 100644 --- a/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/events/maybe_send_background_removal_complete_event.rs +++ b/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/events/maybe_send_background_removal_complete_event.rs @@ -6,8 +6,8 @@ use enums::tauri::tasks::task_type::TaskType; use enums::tauri::ux::tauri_command_caller::TauriCommandCaller; use errors::AnyhowResult; use log::error; -use sqlite_tasks::queries::list_tasks_by_provider_and_tokens::{list_tasks_by_provider_and_tokens, ListTasksArgs}; -use sqlite_tasks::queries::task::Task; +use sqlite_database::queries::list_tasks_by_provider_and_tokens::{list_tasks_by_provider_and_tokens, ListTasksArgs}; +use sqlite_database::queries::task::Task; use tokens::tokens::media_files::MediaFileToken; pub async fn maybe_send_background_removal_complete_event( diff --git a/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/handle_storyteller_failed_job.rs b/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/handle_storyteller_failed_job.rs index ae5e89ea..fd4ad5d8 100644 --- a/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/handle_storyteller_failed_job.rs +++ b/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/handle_storyteller_failed_job.rs @@ -7,11 +7,11 @@ use artcraft_client::api_defs::jobs::list_session_jobs::ListSessionJobsItem; use enums::tauri::tasks::task_status::TaskStatus; use errors::AnyhowResult; use log::info; -use sqlite_tasks::queries::task::Task; -use sqlite_tasks::queries::update_task_status::{update_task_status, UpdateTaskArgs}; +use sqlite_database::queries::task::Task; +use sqlite_database::queries::update_task_status::{update_task_status, UpdateTaskArgs}; use tauri::AppHandle; use enums::tauri::tasks::task_failure_type::TaskFailureType; -use sqlite_tasks::queries::update_task_status_with_rich_failure::{update_task_status_with_rich_failure, UpdateTaskWithRichFailureArgs}; +use sqlite_database::queries::update_task_status_with_rich_failure::{update_task_status_with_rich_failure, UpdateTaskWithRichFailureArgs}; pub async fn handle_failed_job( app_handle: &AppHandle, diff --git a/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/handle_storyteller_successful_job.rs b/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/handle_storyteller_successful_job.rs index 00561fe9..2c3060f4 100644 --- a/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/handle_storyteller_successful_job.rs +++ b/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/handle_storyteller_successful_job.rs @@ -15,8 +15,8 @@ use enums::tauri::tasks::task_media_file_class::TaskMediaFileClass; use errors::AnyhowResult; use log::error; use log::info; -use sqlite_tasks::queries::task::Task; -use sqlite_tasks::queries::update_successful_task_status_with_metadata::{update_successful_task_status_with_metadata, UpdateSuccessfulTaskArgs}; +use sqlite_database::queries::task::Task; +use sqlite_database::queries::update_successful_task_status_with_metadata::{update_successful_task_status_with_metadata, UpdateSuccessfulTaskArgs}; use tauri::AppHandle; use tokens::tokens::media_files::MediaFileToken; diff --git a/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/storyteller_task_polling_thread.rs b/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/storyteller_task_polling_thread.rs index ee94c674..f9e58c80 100644 --- a/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/storyteller_task_polling_thread.rs +++ b/crates/desktop/artcraftx/src/services/storyteller/threads/storyteller_task_polling_thread/storyteller_task_polling_thread.rs @@ -12,8 +12,8 @@ use enums::common::job_status_plus::JobStatusPlus; use enums::tauri::tasks::task_status::TaskStatus; use errors::AnyhowResult; use log::error; -use sqlite_tasks::queries::list_tasks_by_provider_and_tokens::{list_tasks_by_provider_and_tokens, ListTasksArgs}; -use sqlite_tasks::queries::task::Task; +use sqlite_database::queries::list_tasks_by_provider_and_tokens::{list_tasks_by_provider_and_tokens, ListTasksArgs}; +use sqlite_database::queries::task::Task; use std::collections::HashMap; use tauri::AppHandle; diff --git a/crates/desktop/artcraftx/src/services/worldlabs/threads/worldlabs_marble_task_polling.rs b/crates/desktop/artcraftx/src/services/worldlabs/threads/worldlabs_marble_task_polling.rs index d0099ab5..f4820320 100644 --- a/crates/desktop/artcraftx/src/services/worldlabs/threads/worldlabs_marble_task_polling.rs +++ b/crates/desktop/artcraftx/src/services/worldlabs/threads/worldlabs_marble_task_polling.rs @@ -33,10 +33,10 @@ use midjourney_client::endpoints::imagine::{imagine, ImagineItem, ImagineRequest use midjourney_client::utils::get_image_url::get_image_url; use midjourney_client::utils::image_downloader_client::ImageDownloaderClient; use once_cell::sync::Lazy; -use sqlite_tasks::queries::list_tasks_by_provider_and_status::{list_tasks_by_provider_and_status, ListTasksByProviderAndStatusArgs, TaskList}; -use sqlite_tasks::queries::task::Task; -use sqlite_tasks::queries::update_successful_task_status_with_metadata::{update_successful_task_status_with_metadata, UpdateSuccessfulTaskArgs}; -use sqlite_tasks::queries::update_task_status::{update_task_status, UpdateTaskArgs}; +use sqlite_database::queries::list_tasks_by_provider_and_status::{list_tasks_by_provider_and_status, ListTasksByProviderAndStatusArgs, TaskList}; +use sqlite_database::queries::task::Task; +use sqlite_database::queries::update_successful_task_status_with_metadata::{update_successful_task_status_with_metadata, UpdateSuccessfulTaskArgs}; +use sqlite_database::queries::update_task_status::{update_task_status, UpdateTaskArgs}; use std::collections::{HashMap, HashSet}; use std::fs::File; use std::io::Write; diff --git a/crates/schema/database/sqlite_tasks/Cargo.toml b/crates/sqlite_database/Cargo.toml similarity index 95% rename from crates/schema/database/sqlite_tasks/Cargo.toml rename to crates/sqlite_database/Cargo.toml index 7937087d..31c8fc90 100644 --- a/crates/schema/database/sqlite_tasks/Cargo.toml +++ b/crates/sqlite_database/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "sqlite_tasks" +name = "sqlite_database" edition = "2024" version = "0.0.1" publish = false @@ -8,7 +8,7 @@ publish = false normal = ["workspace-build-acceleration"] [lib] -name = "sqlite_tasks" +name = "sqlite_database" path = "src/lib.rs" [dependencies] diff --git a/crates/schema/database/sqlite_tasks/build.rs b/crates/sqlite_database/build.rs similarity index 100% rename from crates/schema/database/sqlite_tasks/build.rs rename to crates/sqlite_database/build.rs diff --git a/_database/sql/artcraft_migrations/20250708000000_create_tasks_table.sql b/crates/sqlite_database/migrations/20250708000000_create_tasks_table.sql similarity index 100% rename from _database/sql/artcraft_migrations/20250708000000_create_tasks_table.sql rename to crates/sqlite_database/migrations/20250708000000_create_tasks_table.sql diff --git a/crates/schema/database/sqlite_tasks/src/connection.rs b/crates/sqlite_database/src/connection.rs similarity index 88% rename from crates/schema/database/sqlite_tasks/src/connection.rs rename to crates/sqlite_database/src/connection.rs index bd9af2bb..04a25ed2 100644 --- a/crates/schema/database/sqlite_tasks/src/connection.rs +++ b/crates/sqlite_database/src/connection.rs @@ -28,9 +28,9 @@ impl TaskDbConnection { // NB: Scope change here is an attempt to drop the open file connection for Windows. // On Windows, we've observed that the file might still be open, preventing deletion: - // [2025-08-08][06:42:29][sqlite_tasks::connection][INFO] Deleting and recreating SQLite + // [2025-08-08][06:42:29][sqlite_database::connection][INFO] Deleting and recreating SQLite // database at "C:\Users\User\Artcraft\state\tasks_v2.sqlite" - // [2025-08-08][06:42:29][sqlite_tasks::connection][ERROR] Error deleting SQLite database + // [2025-08-08][06:42:29][sqlite_database::connection][ERROR] Error deleting SQLite database // file: Os { code: 32, kind: Uncategorized, message: "The process cannot access the file // because it is being used by another process." } } @@ -58,7 +58,7 @@ async fn run_migrations>(database_file: P) -> Result