use falkordb::{Backoff, FalkorClientBuilder, FalkorResult, RetryPolicy};
use std::time::Duration;
fn main() -> FalkorResult<()> {
let connection_info = std::env::var("FALKORDB_CONNECTION")
.unwrap_or_else(|_| "falkor://127.0.0.1:6379".to_string());
let policy = RetryPolicy::read_only()
.max_attempts(4)
.backoff(Backoff::exponential(Duration::from_millis(50)).max_delay(Duration::from_secs(1)));
let client = FalkorClientBuilder::new()
.with_connection_info(connection_info.as_str().try_into()?)
.with_retry_policy(policy)
.build()?;
let mut graph = client.select_graph("retry_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!("read-only result: {row:?}");
}
graph.delete()?;
Ok(())
}