Skip to main content

plexus_engine/
storage.rs

1use crate::Value;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
4pub enum EntityRef {
5    Node(u64),
6    Rel(u64),
7}
8
9/// Optional adapter trait for storage-backed engines that map Plexus refs
10/// to internal storage handles/IDs.
11pub trait StorageAdapter {
12    type Error: std::error::Error + Send + Sync + 'static;
13
14    fn resolve(&self, entity: EntityRef) -> Result<Option<u64>, Self::Error>;
15    fn get_property(&self, entity: EntityRef, key: &str) -> Result<Value, Self::Error>;
16    fn set_property(
17        &mut self,
18        entity: EntityRef,
19        key: &str,
20        value: Value,
21    ) -> Result<(), Self::Error>;
22    fn remove_property(&mut self, entity: EntityRef, key: &str) -> Result<(), Self::Error>;
23}