pub struct FjallEngine { /* private fields */ }Available on crate feature
fjall only.Expand description
Fjall-backed storage engine implementing all 6 storage traits.
Data directory layout:
objects:{collection}\0{id}→ serializedMemoryObjectevents:{stream}\0{seq:8BE}→ serializedMemoryEventqueue_jobs:{queue}\0{id}→ serializedQueueJoblinks_by_id:{link_id}→ serializedLinklinks_from:{from_ref}\0{type}\0{link_id}→()links_to:{to_ref}\0{type}\0{link_id}→()
Implementations§
Trait Implementations§
Source§impl AggregateStore for FjallEngine
impl AggregateStore for FjallEngine
Source§fn aggregate(
&self,
collection: &str,
options: &AggregateOptions,
) -> ThingdResult<AggregateResult>
fn aggregate( &self, collection: &str, options: &AggregateOptions, ) -> ThingdResult<AggregateResult>
Run a general aggregation query over objects in a collection. Read more
Source§fn timeseries(
&self,
collection: &str,
options: &TimeSeriesOptions,
) -> ThingdResult<TimeSeriesResult>
fn timeseries( &self, collection: &str, options: &TimeSeriesOptions, ) -> ThingdResult<TimeSeriesResult>
Run a time-bucketed aggregation query. Read more
Source§impl EventLog for FjallEngine
impl EventLog for FjallEngine
Source§fn is_protected_stream(&self, stream: &str) -> bool
fn is_protected_stream(&self, stream: &str) -> bool
Returns
true if the stream is protected from deletion and external
mutation. Protected streams (e.g. "__thingd:mcp:audit") reject
delete_last_event and delete_stream calls.Source§fn append_event(&mut self, event: MemoryEvent) -> ThingdResult<MemoryEvent>
fn append_event(&mut self, event: MemoryEvent) -> ThingdResult<MemoryEvent>
Append an event to a stream. Read more
Source§fn append_events_batch(
&mut self,
events: Vec<MemoryEvent>,
) -> ThingdResult<Vec<MemoryEvent>>
fn append_events_batch( &mut self, events: Vec<MemoryEvent>, ) -> ThingdResult<Vec<MemoryEvent>>
Append multiple events to a stream in a single transaction. Read more
Source§fn list_events(
&self,
stream: Option<&str>,
options: ListEventsOptions,
) -> ThingdResult<Vec<MemoryEvent>>
fn list_events( &self, stream: Option<&str>, options: ListEventsOptions, ) -> ThingdResult<Vec<MemoryEvent>>
List events, optionally filtered by stream, with pagination. Read more
Source§fn delete_last_event(
&mut self,
stream: &str,
) -> ThingdResult<Option<MemoryEvent>>
fn delete_last_event( &mut self, stream: &str, ) -> ThingdResult<Option<MemoryEvent>>
Delete the most recent event from a stream. Read more
Source§fn delete_stream(&mut self, stream: &str) -> ThingdResult<u64>
fn delete_stream(&mut self, stream: &str) -> ThingdResult<u64>
Delete all events in a stream. Read more
Source§fn count_events(&self) -> ThingdResult<u64>
fn count_events(&self) -> ThingdResult<u64>
Count total events across all streams. Read more
Source§fn list_streams(&self) -> ThingdResult<Vec<String>>
fn list_streams(&self) -> ThingdResult<Vec<String>>
List all unique stream names. Read more
Source§impl LinkStore for FjallEngine
impl LinkStore for FjallEngine
Source§fn create_link(&mut self, link: Link) -> ThingdResult<Link>
fn create_link(&mut self, link: Link) -> ThingdResult<Link>
Create a new graph link. Read more
Source§fn delete_link(&mut self, id: &str) -> ThingdResult<bool>
fn delete_link(&mut self, id: &str) -> ThingdResult<bool>
Delete a graph link by id. Read more
Source§fn get_neighbors(
&self,
reference: &str,
direction: LinkDirection,
options: LinkQueryOptions,
) -> ThingdResult<Vec<Link>>
fn get_neighbors( &self, reference: &str, direction: LinkDirection, options: LinkQueryOptions, ) -> ThingdResult<Vec<Link>>
Get neighbors of a reference (outgoing, incoming, or both). Read more
Source§fn count_links(&self) -> ThingdResult<u64>
fn count_links(&self) -> ThingdResult<u64>
Count total links. Read more
Source§impl ObjectStore for FjallEngine
impl ObjectStore for FjallEngine
Source§fn put_object(&mut self, object: MemoryObject) -> ThingdResult<MemoryObject>
fn put_object(&mut self, object: MemoryObject) -> ThingdResult<MemoryObject>
Insert or replace an object. Read more
Source§fn put_object_with_options(
&mut self,
object: MemoryObject,
options: PutObjectOptions,
) -> ThingdResult<MemoryObject>
fn put_object_with_options( &mut self, object: MemoryObject, options: PutObjectOptions, ) -> ThingdResult<MemoryObject>
Insert or replace an object with explicit options. Read more
Source§fn get_object(
&self,
collection: &str,
id: &str,
) -> ThingdResult<Option<MemoryObject>>
fn get_object( &self, collection: &str, id: &str, ) -> ThingdResult<Option<MemoryObject>>
Read an object by collection and id. Read more
Source§fn get_objects_batch(
&self,
collection: &str,
ids: &[String],
) -> ThingdResult<Vec<Option<MemoryObject>>>
fn get_objects_batch( &self, collection: &str, ids: &[String], ) -> ThingdResult<Vec<Option<MemoryObject>>>
Read multiple objects by collection and id in a single query. Read more
Source§fn list_objects(
&self,
collections: Option<&[String]>,
options: &ListObjectsOptions,
) -> ThingdResult<Vec<MemoryObject>>
fn list_objects( &self, collections: Option<&[String]>, options: &ListObjectsOptions, ) -> ThingdResult<Vec<MemoryObject>>
List objects in one or more collections, with optional filtering, limit, and offset. Read more
Source§fn delete_object(&mut self, collection: &str, id: &str) -> ThingdResult<bool>
fn delete_object(&mut self, collection: &str, id: &str) -> ThingdResult<bool>
Delete an object by collection and id. Read more
Source§fn delete_objects_batch(
&mut self,
keys: &[(String, String)],
) -> ThingdResult<u64>
fn delete_objects_batch( &mut self, keys: &[(String, String)], ) -> ThingdResult<u64>
Delete multiple objects in a single transaction. Read more
Source§fn count_objects(&self) -> ThingdResult<u64>
fn count_objects(&self) -> ThingdResult<u64>
Count total objects across all collections. Read more
Source§fn count_objects_in_collection(&self, collection: &str) -> ThingdResult<u64>
fn count_objects_in_collection(&self, collection: &str) -> ThingdResult<u64>
Count objects in a specific collection. Read more
Source§fn list_collections(&self) -> ThingdResult<Vec<String>>
fn list_collections(&self) -> ThingdResult<Vec<String>>
List all unique collection names. Read more
Source§fn create_index(&mut self, _collection: &str, _field: &str) -> ThingdResult<()>
fn create_index(&mut self, _collection: &str, _field: &str) -> ThingdResult<()>
Create a functional index on a JSON body field for a collection. Read more
Source§fn list_indexes(&self) -> ThingdResult<Vec<(String, String)>>
fn list_indexes(&self) -> ThingdResult<Vec<(String, String)>>
List all custom functional indexes. Read more
Source§fn schema(
&self,
collection: Option<&str>,
options: &SchemaOptions,
) -> ThingdResult<Vec<CollectionSchema>>
fn schema( &self, collection: Option<&str>, options: &SchemaOptions, ) -> ThingdResult<Vec<CollectionSchema>>
Reflect the schema of all or one collection by sampling stored objects. Read more
Source§fn put_objects_batch(
&mut self,
objects: Vec<MemoryObject>,
) -> ThingdResult<Vec<MemoryObject>>
fn put_objects_batch( &mut self, objects: Vec<MemoryObject>, ) -> ThingdResult<Vec<MemoryObject>>
Insert or replace multiple objects in a single transaction. Read more
Source§impl QueueStore for FjallEngine
impl QueueStore for FjallEngine
Source§fn push_job(&mut self, job: QueueJob) -> ThingdResult<QueueJob>
fn push_job(&mut self, job: QueueJob) -> ThingdResult<QueueJob>
Push a job onto a queue. Read more
Source§fn push_jobs_batch(
&mut self,
jobs: Vec<QueueJob>,
) -> ThingdResult<Vec<QueueJob>>
fn push_jobs_batch( &mut self, jobs: Vec<QueueJob>, ) -> ThingdResult<Vec<QueueJob>>
Push multiple jobs onto a queue in a single transaction. Read more
Source§fn claim_job_with_options(
&mut self,
queue: &str,
options: QueueClaimOptions,
) -> ThingdResult<Option<QueueJob>>
fn claim_job_with_options( &mut self, queue: &str, options: QueueClaimOptions, ) -> ThingdResult<Option<QueueJob>>
Claim the next ready job from a queue with explicit options. Read more
Source§fn ack_job(&mut self, queue: &str, id: &str) -> ThingdResult<Option<QueueJob>>
fn ack_job(&mut self, queue: &str, id: &str) -> ThingdResult<Option<QueueJob>>
Acknowledge a leased job as completed. Read more
Source§fn nack_job_with_options(
&mut self,
queue: &str,
id: &str,
options: QueueNackOptions,
) -> ThingdResult<Option<QueueJob>>
fn nack_job_with_options( &mut self, queue: &str, id: &str, options: QueueNackOptions, ) -> ThingdResult<Option<QueueJob>>
Reject a leased job for retry or dead-letter routing with explicit options. Read more
Source§fn list_jobs(&self, queue: &str) -> ThingdResult<Vec<QueueJob>>
fn list_jobs(&self, queue: &str) -> ThingdResult<Vec<QueueJob>>
List all jobs in a queue. Read more
Source§fn list_dead_jobs(&self, queue: &str) -> ThingdResult<Vec<QueueJob>>
fn list_dead_jobs(&self, queue: &str) -> ThingdResult<Vec<QueueJob>>
List dead-letter jobs in a queue. Read more
Source§fn list_queues(&self) -> ThingdResult<Vec<String>>
fn list_queues(&self) -> ThingdResult<Vec<String>>
List all unique queue names. Read more
Source§fn count_active_jobs(&self) -> ThingdResult<u64>
fn count_active_jobs(&self) -> ThingdResult<u64>
Count total active jobs across all queues. Read more
Source§fn count_dead_jobs(&self) -> ThingdResult<u64>
fn count_dead_jobs(&self) -> ThingdResult<u64>
Count total dead-letter jobs across all queues. Read more
Source§fn claim_job(&mut self, queue: &str) -> ThingdResult<Option<QueueJob>>
fn claim_job(&mut self, queue: &str) -> ThingdResult<Option<QueueJob>>
Claim the next ready job from a queue. Read more
Source§fn claim_and_ack(
&mut self,
queue: &str,
options: QueueClaimOptions,
) -> ThingdResult<Option<QueueJob>>
fn claim_and_ack( &mut self, queue: &str, options: QueueClaimOptions, ) -> ThingdResult<Option<QueueJob>>
Claim and immediately ack a job in a single transaction. Read more
Source§impl Searcher for FjallEngine
impl Searcher for FjallEngine
Source§fn search(
&self,
query: &str,
options: SearchOptions,
) -> ThingdResult<Vec<SearchHit>>
fn search( &self, query: &str, options: SearchOptions, ) -> ThingdResult<Vec<SearchHit>>
Search memory objects and event logs by query text. Read more
Auto Trait Implementations§
impl !Freeze for FjallEngine
impl !RefUnwindSafe for FjallEngine
impl !UnwindSafe for FjallEngine
impl Send for FjallEngine
impl Sync for FjallEngine
impl Unpin for FjallEngine
impl UnsafeUnpin for FjallEngine
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Converts
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Converts
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> Fruit for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more