tcvectordb 0.1.9

Rust SDK for Tencent Cloud VectorDB
Documentation
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");

    // 1. 先列出现有数据库
    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);
        }
    }

    // 2. 创建数据库
    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);
            // 继续测试,可能数据库已存在
        }
    }

    // 3. 再次列出数据库
    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);
        }
    }

    // 4. 测试 exists_database
    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);
        }
    }

    // 5. 清理
    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(())
}