From 96ea060450518e96127dc255bacf936612b9d781 Mon Sep 17 00:00:00 2001 From: perf3ct Date: Tue, 29 Jul 2025 21:27:40 +0000 Subject: [PATCH] fix(sync): fix issue where the webdav tasks weren't inserting source metadata into db --- src/db/documents/crud.rs | 14 ++++++++++---- src/db/documents/management.rs | 16 +++++++--------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/db/documents/crud.rs b/src/db/documents/crud.rs index e48b8a8..39d1b4a 100644 --- a/src/db/documents/crud.rs +++ b/src/db/documents/crud.rs @@ -11,8 +11,8 @@ impl Database { pub async fn create_document(&self, document: Document) -> Result { let query_str = format!( r#" - INSERT INTO documents (id, filename, original_filename, file_path, file_size, mime_type, content, ocr_text, ocr_confidence, ocr_word_count, ocr_processing_time_ms, ocr_status, ocr_error, ocr_completed_at, ocr_retry_count, ocr_failure_reason, tags, created_at, updated_at, user_id, file_hash, original_created_at, original_modified_at, source_metadata) - VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24) + INSERT INTO documents (id, filename, original_filename, file_path, file_size, mime_type, content, ocr_text, ocr_confidence, ocr_word_count, ocr_processing_time_ms, ocr_status, ocr_error, ocr_completed_at, ocr_retry_count, ocr_failure_reason, tags, created_at, updated_at, user_id, file_hash, original_created_at, original_modified_at, source_path, source_type, source_id, file_permissions, file_owner, file_group, source_metadata) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $30) RETURNING {} "#, DOCUMENT_FIELDS @@ -42,6 +42,12 @@ impl Database { .bind(&document.file_hash) .bind(document.original_created_at) .bind(document.original_modified_at) + .bind(&document.source_path) + .bind(&document.source_type) + .bind(document.source_id) + .bind(document.file_permissions) + .bind(&document.file_owner) + .bind(&document.file_group) .bind(&document.source_metadata) .fetch_one(&self.pool) .await?; @@ -179,7 +185,7 @@ impl Database { r#" SELECT {} FROM documents - WHERE user_id = $1 AND source_metadata->>'source_id' = $2 + WHERE user_id = $1 AND source_id = $2 ORDER BY created_at DESC LIMIT $3 "#, @@ -188,7 +194,7 @@ impl Database { let rows = sqlx::query(&query_str) .bind(user_id) - .bind(source_id.to_string()) + .bind(source_id) .bind(limit) .fetch_all(&self.pool) .await?; diff --git a/src/db/documents/management.rs b/src/db/documents/management.rs index 4a6624e..b1764d3 100644 --- a/src/db/documents/management.rs +++ b/src/db/documents/management.rs @@ -188,11 +188,11 @@ impl Database { COUNT(*) as total_documents, COUNT(CASE WHEN ocr_text IS NOT NULL THEN 1 END) as total_documents_ocr FROM documents - WHERE user_id = $1 AND source_metadata->>'source_id' = $2 + WHERE user_id = $1 AND source_id = $2 "# ) .bind(user_id) - .bind(source_id.to_string()) + .bind(source_id) .fetch_one(&self.pool) .await?; @@ -205,27 +205,25 @@ impl Database { return Ok(Vec::new()); } - let source_id_strings: Vec = source_ids.iter().map(|id| id.to_string()).collect(); let rows = sqlx::query( r#" SELECT - source_metadata->>'source_id' as source_id_str, + source_id, COUNT(*) as total_documents, COUNT(CASE WHEN ocr_text IS NOT NULL THEN 1 END) as total_documents_ocr FROM documents - WHERE user_id = $1 AND source_metadata->>'source_id' = ANY($2) - GROUP BY source_metadata->>'source_id' + WHERE user_id = $1 AND source_id = ANY($2) + GROUP BY source_id "# ) .bind(user_id) - .bind(&source_id_strings) + .bind(source_ids) .fetch_all(&self.pool) .await?; Ok(rows.into_iter().map(|row| { - let source_id_str: String = row.get("source_id_str"); - let source_id = Uuid::parse_str(&source_id_str).unwrap_or_default(); + let source_id: Uuid = row.get("source_id"); let total_documents: i64 = row.get("total_documents"); let total_documents_ocr: i64 = row.get("total_documents_ocr"); (source_id, total_documents, total_documents_ocr)