use std::time::Duration;
use falkordb::{
EntityType, FalkorClientBuilder, FalkorDBError, FalkorResult, IndexType, WaitOptions,
};
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()?)
.build()?;
let mut graph = client.select_graph("waiting_ops_example");
graph
.create_index_op(IndexType::Range, EntityType::Node, "Person", &["age"], None)
.execute()?;
graph
.create_index_op(
IndexType::Range,
EntityType::Node,
"Person",
&["name"],
None,
)
.wait()?;
match graph
.create_unique_constraint_op(EntityType::Node, "Person", &["email"])
.wait_with(WaitOptions::with_timeout(Duration::from_secs(10)))
{
Ok(()) => println!("constraint is enforced"),
Err(FalkorDBError::ConstraintFailed { .. }) => println!("data violates the constraint"),
Err(other) => return Err(other),
}
let _copy = client
.copy_graph_op("waiting_ops_example", "waiting_ops_backup")
.wait()?;
client.select_graph("waiting_ops_backup").delete()?;
graph.delete()?;
Ok(())
}