use scylla::{Session, SessionBuilder};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let session: Session = SessionBuilder::new()
.known_node("127.0.0.1:9042")
.build()
.await?;
let cluster_data = session.get_cluster_data();
// Inspect a specific table
let keyspace_name = "my_keyspace";
let table_name = "users";
let keyspace = cluster_data.keyspaces
.get(keyspace_name)
.and_then(|r| r.as_ref().ok())
.ok_or("Keyspace not found")?;
let table = keyspace.tables
.get(table_name)
.ok_or("Table not found")?;
println!("Table: {}.{}", keyspace_name, table_name);
println!("\nPartition key:");
for col in &table.partition_key {
let column = &table.columns[col];
println!(" {} {:?}", col, column.typ);
}
println!("\nClustering key:");
for col in &table.clustering_key {
let column = &table.columns[col];
println!(" {} {:?}", col, column.typ);
}
println!("\nRegular columns:");
for (name, column) in &table.columns {
if !table.partition_key.contains(name)
&& !table.clustering_key.contains(name) {
println!(" {} {:?} ({:?})", name, column.typ, column.kind);
}
}
Ok(())
}