use tcvectordb::{enums::ReadConsistency, VectorDBClient};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("🚀 VectorDB Rust SDK - Working Example");
let server_url = std::env::var("VECTORDB_URL").unwrap_or_else(|_| {
println!("⚠️ VECTORDB_URL not set, using default: http://localhost:8100");
"http://localhost:8100".to_string()
});
let username = std::env::var("VECTORDB_USERNAME").unwrap_or_else(|_| {
println!("⚠️ VECTORDB_USERNAME not set, using default: root");
"root".to_string()
});
let api_key = std::env::var("VECTORDB_API_KEY").unwrap_or_else(|_| {
eprintln!("❌ Error: VECTORDB_API_KEY environment variable is required!");
eprintln!("Please set it with: export VECTORDB_API_KEY=your-api-key");
eprintln!("Or create a .env file based on .env.example");
std::process::exit(1);
});
println!("🔧 Configuration:");
println!(" Server: {}", server_url);
println!(" Username: {}", username);
println!(
" API Key: {}***",
&api_key[..std::cmp::min(8, api_key.len())]
);
let client = VectorDBClient::new(
&server_url,
&username,
&api_key,
ReadConsistency::EventualConsistency,
30,
)?;
println!("✅ Client created successfully");
println!("\n📊 Listing databases...");
let databases = client.list_databases().await?;
println!("Found {} database(s):", databases.len());
for (i, db) in databases.iter().enumerate() {
println!(" {}. {}", i + 1, db.name());
}
println!("\n🔧 Creating test database...");
let test_db_name = "rust_sdk_test";
let db = client.create_database_if_not_exists(test_db_name).await?;
println!("✅ Database '{}' created or exists", db.name());
println!("\n📊 Updated database list:");
let databases = client.list_databases().await?;
for (i, db) in databases.iter().enumerate() {
println!(" {}. {}", i + 1, db.name());
}
println!("\n🧹 Cleaning up test database...");
match client.drop_database(test_db_name).await {
Ok(_) => println!("✅ Test database '{}' cleaned up", test_db_name),
Err(e) => println!("⚠️ Warning: Could not clean up test database: {}", e),
}
println!("\n🎉 All operations completed successfully!");
println!("Your VectorDB Rust SDK is working correctly!");
Ok(())
}