use tcvectordb::{VectorDBClient, Result, enums::ReadConsistency};
#[tokio::main]
async fn main() -> Result<()> {
let url = std::env::var("VECTORDB_URL").expect("VECTORDB_URL not set");
let username = std::env::var("VECTORDB_USERNAME").expect("VECTORDB_USERNAME not set");
let api_key = std::env::var("VECTORDB_API_KEY").expect("VECTORDB_API_KEY not set");
let client = VectorDBClient::new(&url, &username, &api_key, ReadConsistency::EventualConsistency, 30)?;
println!("✅ Client created successfully");
println!("\n📊 Listing existing databases...");
match client.list_databases().await {
Ok(databases) => {
println!("Found {} database(s):", databases.len());
for (i, db) in databases.iter().enumerate() {
println!(" {}. {}", i + 1, db.name());
}
}
Err(e) => {
println!("❌ Failed to list databases: {}", e);
return Err(e);
}
}
let db_name = "debug_test_db";
println!("\n🔧 Creating database: {}", db_name);
match client.create_database(db_name).await {
Ok(db) => {
println!("✅ Database '{}' created successfully", db.name());
}
Err(e) => {
println!("❌ Failed to create database: {}", e);
}
}
println!("\n📊 Listing databases after creation...");
match client.list_databases().await {
Ok(databases) => {
println!("Found {} database(s):", databases.len());
for (i, db) in databases.iter().enumerate() {
println!(" {}. {}", i + 1, db.name());
}
let found = databases.iter().any(|db| db.name() == db_name);
println!("Database '{}' found in list: {}", db_name, found);
}
Err(e) => {
println!("❌ Failed to list databases: {}", e);
return Err(e);
}
}
println!("\n🔍 Testing exists_database...");
match client.exists_database(db_name).await {
Ok(exists) => {
println!("Database '{}' exists: {}", db_name, exists);
}
Err(e) => {
println!("❌ Failed to check database existence: {}", e);
}
}
println!("\n🧹 Cleaning up...");
match client.drop_database(db_name).await {
Ok(_) => {
println!("✅ Database '{}' dropped successfully", db_name);
}
Err(e) => {
println!("❌ Failed to drop database: {}", e);
}
}
Ok(())
}