use falkordb::{EmbeddedConfig, FalkorClientBuilder, FalkorConnectionInfo, FalkorResult};
fn main() -> FalkorResult<()> {
println!("Starting embedded FalkorDB example...");
let embedded_config = EmbeddedConfig::default();
println!("Creating client with embedded FalkorDB server...");
let client = FalkorClientBuilder::new()
.with_connection_info(FalkorConnectionInfo::Embedded(embedded_config))
.build()?;
println!("Connected to embedded FalkorDB server!");
let mut graph = client.select_graph("social");
println!("Creating nodes...");
graph
.query("CREATE (:Person {name: 'Alice', age: 30})")
.execute()?;
graph
.query("CREATE (:Person {name: 'Bob', age: 25})")
.execute()?;
graph
.query("CREATE (:Person {name: 'Charlie', age: 35})")
.execute()?;
println!("Creating relationships...");
graph
.query(
"MATCH (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'}) CREATE (a)-[:KNOWS]->(b)",
)
.execute()?;
graph
.query(
"MATCH (b:Person {name: 'Bob'}), (c:Person {name: 'Charlie'}) CREATE (b)-[:KNOWS]->(c)",
)
.execute()?;
println!("\nQuerying the graph:");
let result = graph
.query("MATCH (p:Person) RETURN p.name, p.age ORDER BY p.age")
.execute()?;
println!("Found {} results:", result.data.len());
for row in result.data {
println!(" {:?}", row);
}
println!("\nQuerying relationships:");
let result = graph
.query("MATCH (a:Person)-[:KNOWS]->(b:Person) RETURN a.name, b.name")
.execute()?;
println!("Found {} relationships:", result.data.len());
for row in result.data {
println!(" {:?}", row);
}
println!("\nDeleting graph...");
graph.delete()?;
println!("Example completed successfully!");
println!("The embedded server will be automatically shut down when the client is dropped.");
Ok(())
}