Skip to main content

SqliteGraphStore

Struct SqliteGraphStore 

Source
pub struct SqliteGraphStore { /* private fields */ }
Expand description

SQLite implementation of GraphStore

Integrates with existing openfang-memory schema by adding two tables:

  • ainl_graph_nodes: stores node payloads
  • ainl_graph_edges: stores graph edges

Implementations§

Source§

impl SqliteGraphStore

Source

pub fn ensure_schema(conn: &Connection) -> Result<(), Error>

Ensure the AINL graph schema exists in the database

Source

pub fn open(path: &Path) -> Result<Self, String>

Open/create a graph store at the given path

Source

pub fn from_connection(conn: Connection) -> Result<Self, String>

Create from an existing connection (for integration with openfang-memory pool)

Source

pub fn insert_graph_edge( &self, from_id: Uuid, to_id: Uuid, label: &str, ) -> Result<(), String>

Insert a directed edge between two node IDs (separate from per-node edge payloads).

Source

pub fn query_nodes_by_type_since( &self, node_type: &str, since_timestamp: i64, limit: usize, ) -> Result<Vec<AinlMemoryNode>, String>

Nodes of a given node_type with timestamp >= since_timestamp, most recent first.

Trait Implementations§

Source§

impl GraphStore for SqliteGraphStore

Source§

fn write_node(&self, node: &AinlMemoryNode) -> Result<(), String>

Persists the full node JSON under id via INSERT OR REPLACE (upsert). Backfill pattern: read_node → patch fields (e.g. episodic signals) → write_node, preserving loaded edges.

Source§

fn read_node(&self, id: Uuid) -> Result<Option<AinlMemoryNode>, String>

Read a node by ID
Source§

fn query_episodes_since( &self, since_timestamp: i64, limit: usize, ) -> Result<Vec<AinlMemoryNode>, String>

Query episodes since a given timestamp
Source§

fn find_by_type(&self, type_name: &str) -> Result<Vec<AinlMemoryNode>, String>

Find nodes by type
Source§

fn walk_edges( &self, from_id: Uuid, label: &str, ) -> Result<Vec<AinlMemoryNode>, String>

Walk edges from a node with a given label

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.