graph_d 1.3.2

A native graph database implementation in Rust with built-in JSON support and SQLite-like simplicity
Documentation
use graph_d::{Graph, Result};
use serde_json::json;
use std::collections::HashMap;

fn main() -> Result<()> {
    println!("Graph Database v{}", graph_d::VERSION);

    // Create a new graph
    let mut graph = Graph::new()?;

    // Create some nodes
    let alice_id = graph.create_node(
        [
            ("name".to_string(), json!("Alice")),
            ("age".to_string(), json!(30)),
            ("city".to_string(), json!("New York")),
        ]
        .into(),
    )?;

    let bob_id = graph.create_node(
        [
            ("name".to_string(), json!("Bob")),
            ("age".to_string(), json!(25)),
            ("city".to_string(), json!("San Francisco")),
        ]
        .into(),
    )?;

    let charlie_id = graph.create_node(
        [
            ("name".to_string(), json!("Charlie")),
            ("age".to_string(), json!(35)),
            ("city".to_string(), json!("Seattle")),
        ]
        .into(),
    )?;

    println!(
        "Created nodes: Alice ({}), Bob ({}), Charlie ({})",
        alice_id, bob_id, charlie_id
    );

    // Create relationships
    let rel1_id = graph.create_relationship(
        alice_id,
        bob_id,
        "KNOWS".to_string(),
        [("since".to_string(), json!("2020"))].into(),
    )?;

    let rel2_id = graph.create_relationship(
        bob_id,
        charlie_id,
        "WORKS_WITH".to_string(),
        [("project".to_string(), json!("GraphDB"))].into(),
    )?;

    println!(
        "Created relationships: {} (Alice knows Bob), {} (Bob works with Charlie)",
        rel1_id, rel2_id
    );

    // Query the graph
    if let Some(alice) = graph.get_node(alice_id)? {
        println!("Alice's data: {:?}", alice.properties);

        let relationships = graph.get_relationships_for_node(alice_id)?;
        println!("Alice has {} relationships", relationships.len());

        for rel in relationships {
            println!(
                "  -> {} relationship {} to node {}",
                rel.rel_type, rel.id, rel.to_id
            );
        }
    }

    println!("Graph database demo completed successfully!");
    Ok(())
}