This commit is contained in:
2025-10-27 22:45:16 +01:00
parent 2d80515ad5
commit ed0f0fb759
6 changed files with 31 additions and 51 deletions
+28 -9
View File
@@ -20,7 +20,7 @@ use uuid::Uuid;
use super::folders::gather_descendant_folder_ids;
use crate::auth::TenantScopedConn;
use crate::error::{AppError, AppResult};
use crate::jobs::{enqueue_job, JOB_ANALYZE_DOCUMENT};
use crate::jobs::{enqueue_job, JOB_ANALYZE_DOCUMENT, JOB_INDEX_DOCUMENT_TEXT};
use crate::models::{
Correspondent, Document, DocumentAsset, DocumentAssetObject, DocumentCorrespondent,
DocumentVersion, NewDocument, NewDocumentCorrespondent, NewDocumentTag, NewDocumentVersion,
@@ -138,8 +138,6 @@ pub struct DocumentVersionResponse {
pub checksum: String,
pub created_at: String,
pub metadata: Value,
#[serde(skip_serializing_if = "Option::is_none")]
pub operations_summary: Option<Value>,
}
#[derive(Serialize, Clone, ToSchema)]
@@ -749,7 +747,7 @@ pub async fn get_document(
drop(conn);
let assets = load_asset_responses(&state, tenant_id, version_id).await?;
let version_response = to_version_response(current_version, true);
let version_response = to_version_response(current_version);
Ok(Json(DocumentDetailResponse {
document: to_document_response(
@@ -1303,6 +1301,7 @@ pub async fn update_document(
let mut changes = DocumentUpdateChangeset::default();
let mut has_changes = false;
let mut title_changed = false;
if let Some(ref candidate) = title {
let trimmed = candidate.trim();
@@ -1317,6 +1316,7 @@ pub async fn update_document(
changes.filename = Some(new_filename);
}
has_changes = true;
title_changed = true;
}
}
@@ -1391,13 +1391,33 @@ pub async fn update_document(
.find(document.current_version_id)
.first(&mut conn)?;
if title_changed {
if let Err(err) = enqueue_job(
&mut conn,
tenant_id,
JOB_INDEX_DOCUMENT_TEXT,
json!({
"document_id": document.id,
"document_version_id": current_version.id,
}),
None,
) {
warn!(
document_id = %document.id,
version_id = %current_version.id,
error = %err,
"failed to enqueue reindex job after title change"
);
}
}
let tags_map = load_tags_for_documents(&mut conn, &[document_id])?;
let mut correspondents_map = load_correspondents_for_documents(&mut conn, &[document_id])?;
let version_id = current_version.id;
drop(conn);
let assets = load_asset_responses(&state, tenant_id, version_id).await?;
let version_response = to_version_response(current_version, true);
let version_response = to_version_response(current_version);
Ok(Json(DocumentDetailResponse {
document: to_document_response(
@@ -2133,7 +2153,7 @@ async fn process_upload(
let correspondents = correspondents_map.remove(&document.id).unwrap_or_default();
drop(conn);
let assets = load_asset_responses(state, tenant_id, version.id).await?;
let version_response = to_version_response(version.clone(), true);
let version_response = to_version_response(version.clone());
info!(
document_id = %document.id,
@@ -2204,7 +2224,6 @@ async fn process_upload(
size_bytes,
checksum: checksum_hex.clone(),
metadata: Value::Object(Default::default()),
operations_summary: Value::Object(Default::default()),
tenant_id,
};
@@ -2250,7 +2269,7 @@ async fn process_upload(
document,
tags,
correspondents,
Some((to_version_response(version.clone(), true), Vec::new())),
Some((to_version_response(version.clone()), Vec::new())),
)?,
}
};
@@ -2538,7 +2557,7 @@ pub(crate) async fn load_primary_assets(
for (doc_id, version_id) in doc_to_version {
if let Some(version) = version_map.remove(&version_id) {
let assets = assets_by_version.remove(&version_id).unwrap_or_default();
result.insert(doc_id, (to_version_response(version, false), assets));
result.insert(doc_id, (to_version_response(version), assets));
}
}
+1 -9
View File
@@ -24,10 +24,7 @@ pub fn build_download_path(
.map_err(|err| AppError::internal(format!("failed to generate download token: {err}")))
}
pub fn to_version_response(
version: DocumentVersion,
include_operations_summary: bool,
) -> DocumentVersionResponse {
pub fn to_version_response(version: DocumentVersion) -> DocumentVersionResponse {
DocumentVersionResponse {
id: version.id,
version_number: version.version_number,
@@ -36,11 +33,6 @@ pub fn to_version_response(
checksum: version.checksum,
created_at: to_iso(version.created_at),
metadata: version.metadata,
operations_summary: if include_operations_summary {
Some(version.operations_summary)
} else {
None
},
}
}