docbox_core/files/
index_file.rs1use 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}