docbox_core/files/
index_file.rs

1use docbox_database::models::{document_box::DocumentBoxScopeRaw, file::CreateFile};
2use docbox_processing::ProcessingIndexMetadata;
3use docbox_search::{
4    TenantSearchIndex,
5    models::{SearchIndexData, SearchIndexType},
6};
7
8use super::upload_file::UploadFileError;
9
10pub async fn store_file_index(
11    search: &TenantSearchIndex,
12    file: &CreateFile,
13    document_box: &DocumentBoxScopeRaw,
14    index_metadata: Option<ProcessingIndexMetadata>,
15) -> Result<(), UploadFileError> {
16    let index = SearchIndexData {
17        ty: SearchIndexType::File,
18        item_id: file.id,
19        folder_id: file.folder_id,
20        name: file.name.to_string(),
21        mime: Some(file.mime.clone()),
22        content: None,
23        created_at: file.created_at,
24        created_by: file.created_by.clone(),
25        document_box: document_box.clone(),
26        pages: index_metadata.and_then(|value| value.pages),
27    };
28
29    search
30        .add_data(vec![index])
31        .await
32        .map_err(UploadFileError::CreateIndex)?;
33
34    Ok(())
35}