use std::collections::HashMap;
use nodedb_types::Value;
use crate::engine::fts::maintain;
use crate::engine::fts::maintain::FtsOutbound;
use crate::error::LiteError;
use crate::nodedb::core::types::NodeDbLite;
use crate::storage::engine::StorageEngine;
impl<S: StorageEngine> NodeDbLite<S> {
fn fts_outbound_for(
&self,
collection: &str,
fields: Option<&HashMap<String, Value>>,
) -> Option<&FtsOutbound<S>> {
#[cfg(not(target_arch = "wasm32"))]
{
let gated_out = fields.is_some_and(|f| !self.should_sync_doc(collection, f));
if gated_out {
return None;
}
self.fts_outbound.as_deref()
}
#[cfg(target_arch = "wasm32")]
{
let _ = (collection, fields);
None
}
}
pub(crate) fn index_document_text(
&self,
collection: &str,
doc_id: &str,
fields: &HashMap<String, Value>,
) -> Result<(), LiteError> {
maintain::index_document(
&self.fts_state,
self.fts_outbound_for(collection, Some(fields)),
collection,
doc_id,
fields,
)
}
pub(crate) fn remove_document_text(
&self,
collection: &str,
doc_id: &str,
) -> Result<(), LiteError> {
maintain::remove_document(
&self.fts_state,
self.fts_outbound_for(collection, None),
collection,
doc_id,
)
}
pub(crate) fn reindex_documents_local<'a>(
&self,
collection: &str,
doc_ids: impl IntoIterator<Item = &'a str>,
) -> Result<(), LiteError> {
maintain::reindex_crdt_documents(
&self.fts_state,
&self.crdt,
None::<&FtsOutbound<S>>,
collection,
doc_ids,
)
}
}