From e61db1036e50231893aca4202f75fa4d31f03a19 Mon Sep 17 00:00:00 2001 From: perf3ct Date: Fri, 13 Jun 2025 14:19:45 +0000 Subject: [PATCH] feat(migrations): try to fix the migrations service --- ...r_queue.sql => 20240101000001_add_ocr_queue.sql} | 0 ...l => 20240101000002_add_enhanced_ocr_fields.sql} | 0 ...ql => 20240101000003_add_ocr_queue_function.sql} | 0 ... => 20240101000004_update_settings_defaults.sql} | 0 ...=> 20240101000005_create_ocr_analytics_view.sql} | 0 src/db.rs | 12 ++++++------ src/lib.rs | 1 - src/main.rs | 13 ++++++++----- 8 files changed, 14 insertions(+), 12 deletions(-) rename migrations/{001_add_ocr_queue.sql => 20240101000001_add_ocr_queue.sql} (100%) rename migrations/{002_add_enhanced_ocr_fields.sql => 20240101000002_add_enhanced_ocr_fields.sql} (100%) rename migrations/{003_add_ocr_queue_function.sql => 20240101000003_add_ocr_queue_function.sql} (100%) rename migrations/{004_update_settings_defaults.sql => 20240101000004_update_settings_defaults.sql} (100%) rename migrations/{005_create_ocr_analytics_view.sql => 20240101000005_create_ocr_analytics_view.sql} (100%) diff --git a/migrations/001_add_ocr_queue.sql b/migrations/20240101000001_add_ocr_queue.sql similarity index 100% rename from migrations/001_add_ocr_queue.sql rename to migrations/20240101000001_add_ocr_queue.sql diff --git a/migrations/002_add_enhanced_ocr_fields.sql b/migrations/20240101000002_add_enhanced_ocr_fields.sql similarity index 100% rename from migrations/002_add_enhanced_ocr_fields.sql rename to migrations/20240101000002_add_enhanced_ocr_fields.sql diff --git a/migrations/003_add_ocr_queue_function.sql b/migrations/20240101000003_add_ocr_queue_function.sql similarity index 100% rename from migrations/003_add_ocr_queue_function.sql rename to migrations/20240101000003_add_ocr_queue_function.sql diff --git a/migrations/004_update_settings_defaults.sql b/migrations/20240101000004_update_settings_defaults.sql similarity index 100% rename from migrations/004_update_settings_defaults.sql rename to migrations/20240101000004_update_settings_defaults.sql diff --git a/migrations/005_create_ocr_analytics_view.sql b/migrations/20240101000005_create_ocr_analytics_view.sql similarity index 100% rename from migrations/005_create_ocr_analytics_view.sql rename to migrations/20240101000005_create_ocr_analytics_view.sql diff --git a/src/db.rs b/src/db.rs index 704d7c8..0cee394 100644 --- a/src/db.rs +++ b/src/db.rs @@ -7,7 +7,7 @@ use crate::models::{CreateUser, Document, SearchRequest, SearchMode, SearchSnipp #[derive(Clone)] pub struct Database { - pool: PgPool, + pub pool: PgPool, } impl Database { @@ -365,7 +365,7 @@ impl Database { pub async fn get_documents_by_user(&self, user_id: Uuid, limit: i64, offset: i64) -> Result> { let rows = sqlx::query( r#" - SELECT id, filename, original_filename, file_path, file_size, mime_type, content, ocr_text, tags, created_at, updated_at, user_id + SELECT id, filename, original_filename, file_path, file_size, mime_type, content, ocr_text, ocr_confidence, ocr_word_count, ocr_processing_time_ms, ocr_status, tags, created_at, updated_at, user_id FROM documents WHERE user_id = $1 ORDER BY created_at DESC @@ -406,7 +406,7 @@ impl Database { pub async fn find_documents_by_filename(&self, filename: &str) -> Result> { let rows = sqlx::query( r#" - SELECT id, filename, original_filename, file_path, file_size, mime_type, content, ocr_text, tags, created_at, updated_at, user_id + SELECT id, filename, original_filename, file_path, file_size, mime_type, content, ocr_text, ocr_confidence, ocr_word_count, ocr_processing_time_ms, ocr_status, tags, created_at, updated_at, user_id FROM documents WHERE filename = $1 OR original_filename = $1 ORDER BY created_at DESC @@ -444,7 +444,7 @@ impl Database { pub async fn search_documents(&self, user_id: Uuid, search: SearchRequest) -> Result<(Vec, i64)> { let mut query_builder = sqlx::QueryBuilder::new( r#" - SELECT id, filename, original_filename, file_path, file_size, mime_type, content, ocr_text, tags, created_at, updated_at, user_id, + SELECT id, filename, original_filename, file_path, file_size, mime_type, content, ocr_text, ocr_confidence, ocr_word_count, ocr_processing_time_ms, ocr_status, tags, created_at, updated_at, user_id, ts_rank(to_tsvector('english', COALESCE(content, '') || ' ' || COALESCE(ocr_text, '')), plainto_tsquery('english', "# ); @@ -536,7 +536,7 @@ impl Database { // Use trigram similarity for substring matching let mut builder = sqlx::QueryBuilder::new( r#" - SELECT id, filename, original_filename, file_path, file_size, mime_type, content, ocr_text, tags, created_at, updated_at, user_id, + SELECT id, filename, original_filename, file_path, file_size, mime_type, content, ocr_text, ocr_confidence, ocr_word_count, ocr_processing_time_ms, ocr_status, tags, created_at, updated_at, user_id, GREATEST( similarity(filename, "# ); @@ -575,7 +575,7 @@ impl Database { let mut builder = sqlx::QueryBuilder::new(&format!( r#" - SELECT id, filename, original_filename, file_path, file_size, mime_type, content, ocr_text, tags, created_at, updated_at, user_id, + SELECT id, filename, original_filename, file_path, file_size, mime_type, content, ocr_text, ocr_confidence, ocr_word_count, ocr_processing_time_ms, ocr_status, tags, created_at, updated_at, user_id, GREATEST( CASE WHEN filename ILIKE '%' || "# )); diff --git a/src/lib.rs b/src/lib.rs index 40ea325..cdcf625 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,7 +4,6 @@ pub mod config; pub mod db; pub mod enhanced_ocr; pub mod file_service; -pub mod migrations; pub mod models; pub mod ocr; pub mod ocr_queue; diff --git a/src/main.rs b/src/main.rs index 9f17cb3..1223288 100644 --- a/src/main.rs +++ b/src/main.rs @@ -43,11 +43,14 @@ async fn main() -> Result<(), Box> { db.migrate().await?; - // Run automatic migrations - if let Err(e) = readur::migrations::run_startup_migrations(&config.database_url, "migrations").await { - error!("Failed to run migrations: {}", e); - return Err(e.into()); - } + // Run SQLx migrations + sqlx::migrate!("./migrations") + .run(&db.pool) + .await + .map_err(|e| { + error!("Failed to run migrations: {}", e); + e + })?; // Seed admin user seed::seed_admin_user(&db).await?;