use falkordb::{FalkorClientBuilder, FalkorResult, ReadPreference};
fn main() -> FalkorResult<()> {
let connection_info = std::env::var("FALKORDB_CONNECTION")
.unwrap_or_else(|_| "falkor://127.0.0.1:6379".to_string());
let client = FalkorClientBuilder::new()
.with_connection_info(connection_info.as_str().try_into()?)
.with_read_preference(ReadPreference::PreferReplica)
.build()?;
if client.replica_reads_available() {
println!("Replica connections are available; read-only queries may be served from them.");
} else {
println!("No readable replicas detected; read-only queries use the primary.");
}
println!("Default read preference: {:?}", client.read_preference());
let mut graph = client.select_graph("readonly_example");
graph
.query("CREATE (:Greeting {text: 'hello'})")
.execute()?;
let mut greetings = graph
.ro_query("MATCH (g:Greeting) RETURN g.text")
.execute()?;
for row in greetings.data.by_ref() {
println!("replica-preferring read: {row:?}");
}
let mut fresh = graph
.ro_query("MATCH (g:Greeting) RETURN g.text")
.primary_only()
.execute()?;
for row in fresh.data.by_ref() {
println!("primary (fresh) read: {row:?}");
}
graph.delete()?;
Ok(())
}