docbox-core 0.13.2

Docbox core business logic and functionality
Documentation
use docbox_database::models::{document_box::DocumentBoxScopeRaw, file::CreateFile};
use docbox_processing::ProcessingIndexMetadata;
use docbox_search::{
    TenantSearchIndex,
    models::{SearchIndexData, SearchIndexType},
};

use super::upload_file::UploadFileError;

pub async fn store_file_index(
    search: &TenantSearchIndex,
    file: &CreateFile,
    document_box: &DocumentBoxScopeRaw,
    index_metadata: Option<ProcessingIndexMetadata>,
) -> Result<(), UploadFileError> {
    let index = create_file_index(file, document_box, index_metadata);

    search
        .add_data(vec![index])
        .await
        .map_err(UploadFileError::CreateIndex)?;

    Ok(())
}

pub fn create_file_index(
    file: &CreateFile,
    document_box: &DocumentBoxScopeRaw,
    index_metadata: Option<ProcessingIndexMetadata>,
) -> SearchIndexData {
    SearchIndexData {
        ty: SearchIndexType::File,
        item_id: file.id,
        folder_id: file.folder_id,
        name: file.name.to_string(),
        mime: Some(file.mime.clone()),
        content: None,
        created_at: file.created_at,
        created_by: file.created_by.clone(),
        document_box: document_box.clone(),
        pages: index_metadata.and_then(|value| value.pages),
    }
}