pub trait UnifiedSegment: Send + Sync {
Show 19 methods
// Required methods
fn id(&self) -> u64;
fn state(&self) -> SegmentState;
fn collection(&self) -> &str;
fn stats(&self) -> SegmentStats;
fn entity_count(&self) -> usize;
fn contains(&self, id: EntityId) -> bool;
fn get(&self, id: EntityId) -> Option<&UnifiedEntity>;
fn get_mut(&mut self, id: EntityId) -> Option<&mut UnifiedEntity>;
fn insert(
&mut self,
entity: UnifiedEntity,
) -> Result<EntityId, SegmentError>;
fn update(&mut self, entity: UnifiedEntity) -> Result<(), SegmentError>;
fn delete(&mut self, id: EntityId) -> Result<bool, SegmentError>;
fn get_metadata(&self, id: EntityId) -> Option<Metadata>;
fn set_metadata(
&mut self,
id: EntityId,
metadata: Metadata,
) -> Result<(), SegmentError>;
fn seal(&mut self) -> Result<(), SegmentError>;
fn should_seal(&self, config: &SegmentConfig) -> bool;
fn iter(&self) -> Box<dyn Iterator<Item = &UnifiedEntity> + '_>;
fn iter_kind(
&self,
kind_filter: &str,
) -> Box<dyn Iterator<Item = &UnifiedEntity> + '_>;
fn filter_metadata(
&self,
filters: &[(String, MetadataFilter)],
) -> Vec<EntityId>;
// Provided method
fn update_hot(
&mut self,
entity: UnifiedEntity,
modified_columns: &[String],
) -> Result<(), SegmentError> { ... }
}Expand description
A unified segment that stores all entity types
Required Methods§
Sourcefn state(&self) -> SegmentState
fn state(&self) -> SegmentState
Get current state
Sourcefn collection(&self) -> &str
fn collection(&self) -> &str
Get collection/namespace name
Sourcefn stats(&self) -> SegmentStats
fn stats(&self) -> SegmentStats
Get statistics
Sourcefn entity_count(&self) -> usize
fn entity_count(&self) -> usize
O(1) live entity count (entities minus tombstones)
Sourcefn get(&self, id: EntityId) -> Option<&UnifiedEntity>
fn get(&self, id: EntityId) -> Option<&UnifiedEntity>
Get an entity by ID
Sourcefn get_mut(&mut self, id: EntityId) -> Option<&mut UnifiedEntity>
fn get_mut(&mut self, id: EntityId) -> Option<&mut UnifiedEntity>
Get mutable reference to entity
Sourcefn insert(&mut self, entity: UnifiedEntity) -> Result<EntityId, SegmentError>
fn insert(&mut self, entity: UnifiedEntity) -> Result<EntityId, SegmentError>
Insert a new entity
Sourcefn update(&mut self, entity: UnifiedEntity) -> Result<(), SegmentError>
fn update(&mut self, entity: UnifiedEntity) -> Result<(), SegmentError>
Update an existing entity
Sourcefn get_metadata(&self, id: EntityId) -> Option<Metadata>
fn get_metadata(&self, id: EntityId) -> Option<Metadata>
Get metadata for an entity
Sourcefn set_metadata(
&mut self,
id: EntityId,
metadata: Metadata,
) -> Result<(), SegmentError>
fn set_metadata( &mut self, id: EntityId, metadata: Metadata, ) -> Result<(), SegmentError>
Set metadata for an entity
Sourcefn seal(&mut self) -> Result<(), SegmentError>
fn seal(&mut self) -> Result<(), SegmentError>
Seal the segment (make immutable)
Sourcefn should_seal(&self, config: &SegmentConfig) -> bool
fn should_seal(&self, config: &SegmentConfig) -> bool
Check if should auto-seal based on config
Sourcefn iter(&self) -> Box<dyn Iterator<Item = &UnifiedEntity> + '_>
fn iter(&self) -> Box<dyn Iterator<Item = &UnifiedEntity> + '_>
Iterate over all entities
Sourcefn iter_kind(
&self,
kind_filter: &str,
) -> Box<dyn Iterator<Item = &UnifiedEntity> + '_>
fn iter_kind( &self, kind_filter: &str, ) -> Box<dyn Iterator<Item = &UnifiedEntity> + '_>
Iterate over entities of a specific kind
Sourcefn filter_metadata(&self, filters: &[(String, MetadataFilter)]) -> Vec<EntityId>
fn filter_metadata(&self, filters: &[(String, MetadataFilter)]) -> Vec<EntityId>
Search entities by metadata filter
Provided Methods§
Sourcefn update_hot(
&mut self,
entity: UnifiedEntity,
modified_columns: &[String],
) -> Result<(), SegmentError>
fn update_hot( &mut self, entity: UnifiedEntity, modified_columns: &[String], ) -> Result<(), SegmentError>
HOT-update: like update but receives the set of field names that actually changed. Allows skipping index work when indexed columns are unaffected. Default: falls back to full update.