rust_az_wrapper 0.2.0

Type-safe Rust wrapper for Azure CLI focused on Cosmos DB operations
Documentation
# ๐Ÿ” Rust Azure CLI Wrapper - Read-Only Cosmos DB

[![Rust](https://img.shields.io/badge/rust-1.70+-orange.svg)](https://www.rust-lang.org)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Azure CLI](https://img.shields.io/badge/Azure_CLI-Required-blue.svg)](https://docs.microsoft.com/en-us/cli/azure/)

## ๐ŸŽฏ About

This library provides a **safe, read-only interface** to Azure Cosmos DB via the Azure CLI. It's designed for exploration, monitoring, and data discovery without the risk of accidental modifications.

## โœจ Key Features

- ๐Ÿ”’ **Read-Only Design** - Zero risk of accidental resource changes
- ๐Ÿ“Š **Type-Safe Models** - All Azure responses as Rust structs
- ๐Ÿงญ **Cosmos DB Focused** - SQL API, MongoDB, keys, throughput
- โšก **Async/Await** - Modern async Rust with Tokio
- ๐ŸŒ **Multi-Subscription** - Work across Azure subscriptions
- ๐Ÿ“„ **JSON Serializable** - Easy integration with other tools

## ๐Ÿš€ Quick Start

### Prerequisites

- **Azure CLI** installed and authenticated (`az login`)
- **Rust 1.70+**

### Basic Usage

```rust
use rust_az_wrapper::AzureClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = AzureClient::new()?;
    
    // Verify Azure CLI authentication
    client.verify_authentication().await?;
    
    // Explore your Cosmos DB accounts
    let accounts = client.list_cosmos_accounts(None).await?;
    
    for account in accounts {
        println!("๐ŸŒ Account: {} ({})", account.name, account.location);
        
        // Get account details
        let keys = client.list_cosmos_keys(&account.name, &account.resource_group).await?;
        println!("๐Ÿ”‘ Has keys: Yes");
        
        // List databases
        let databases = client.list_sql_databases(&account.name, &account.resource_group).await?;
        println!("๐Ÿ“š Databases: {}", databases.len());
        
        for db in databases {
            // List containers in each database
            let containers = client.list_sql_containers(
                &account.name, 
                &account.resource_group, 
                &db.name
            ).await?;
            println!("  ๐Ÿ“ฆ {}: {} containers", db.name, containers.len());
        }
    }
    
    Ok(())
}
```

## ๐Ÿ“‹ Available Operations

### Subscriptions & Resource Groups
- `list_subscriptions()` - List all Azure subscriptions
- `show_current_subscription()` - Show current subscription details
- `list_resource_groups()` - List resource groups
- `show_resource_group()` - Show resource group details

### Cosmos DB Accounts
- `list_cosmos_accounts()` - List all Cosmos DB accounts
- `show_cosmos_account()` - Show account details
- `list_cosmos_keys()` - Get master keys
- `list_cosmos_read_only_keys()` - Get read-only keys
- `list_cosmos_connection_strings()` - Get connection strings

### SQL API
- `list_sql_databases()` - List SQL databases
- `show_sql_database()` - Show database details
- `list_sql_containers()` - List containers
- `show_sql_container()` - Show container details
- `get_database_throughput()` - Get database throughput
- `get_container_throughput()` - Get container throughput

### MongoDB API
- `list_mongodb_databases()` - List MongoDB databases
- `list_mongodb_collections()` - List collections

## ๐Ÿ—๏ธ Architecture

```
src/
โ”œโ”€โ”€ lib.rs          # Main API and exports
โ”œโ”€โ”€ client.rs       # Unified Azure client
โ”œโ”€โ”€ commands/
โ”‚   โ”œโ”€โ”€ account.rs  # Subscription/resource group operations
โ”‚   โ””โ”€โ”€ cosmos.rs   # Cosmos DB operations
โ”œโ”€โ”€ models.rs       # Azure resource models
โ”œโ”€โ”€ utils.rs        # CLI utilities
โ””โ”€โ”€ error.rs        # Error handling
```

## ๐Ÿ›ก๏ธ Safety by Design

This library is **intentionally read-only**. It provides no methods to:
- Create resources
- Modify existing resources  
- Delete resources
- Change configurations
- Regenerate keys

This makes it perfect for:
- ๐Ÿ” **Discovery** - Explore your Azure environment safely
- ๐Ÿ“Š **Monitoring** - Build dashboards and reports
- ๐Ÿงพ **Inventory** - Catalog your Cosmos DB resources
- ๐Ÿ”„ **Integration** - Feed data to other systems


## ๐Ÿค Contributing

Contributions are welcome!

## ๐Ÿ“„ License

MIT License - see LICENSE file for details