20 breaking releases

new 0.21.0 Oct 15, 2024
0.20.0 Apr 24, 2024
0.19.0 Jan 5, 2024
0.18.1 Dec 11, 2023
0.1.0 Jan 25, 2022

#318 in Network programming

Download history 1173/week @ 2024-07-02 1109/week @ 2024-07-09 1602/week @ 2024-07-16 1468/week @ 2024-07-23 1698/week @ 2024-07-30 1078/week @ 2024-08-06 1032/week @ 2024-08-13 986/week @ 2024-08-20 989/week @ 2024-08-27 1530/week @ 2024-09-03 904/week @ 2024-09-10 1001/week @ 2024-09-17 1852/week @ 2024-09-24 1490/week @ 2024-10-01 572/week @ 2024-10-08 587/week @ 2024-10-15

4,715 downloads per month
Used in azure-storage-cli

MIT license

380KB
9K SLoC

azure_data_tables

Microsoft is developing the official Azure SDK for Rust crates and has no plans to update this unofficial crate. In the future we may release an official version that may have a different package name. If releasing an official version of this crate is important to you let us know.

Source for this crate can now be found in https://github.com/Azure/azure-sdk-for-rust/tree/legacy. To monitor for an official, supported version of this crate, see https://aka.ms/azsdk/releases.

This crate is from the Azure SDK for Rust. It supports Azure Table storage.

use azure_core::StatusCode;
use azure_data_tables::{operations::InsertEntityResponse, prelude::*};
use azure_storage::prelude::*;
use futures::stream::StreamExt;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
struct MyEntity {
    #[serde(rename = "PartitionKey")]
    pub city: String,
    pub name: String,
    #[serde(rename = "RowKey")]
    pub surname: String,
}

#[tokio::main]
async fn main() -> azure_core::Result<()> {
    tracing_subscriber::fmt().init();

    // First we retrieve the account name and access key from environment variables.
    let account =
        std::env::var("STORAGE_ACCOUNT").expect("Set env variable STORAGE_ACCOUNT first!");
    let access_key =
        std::env::var("STORAGE_ACCESS_KEY").expect("Set env variable STORAGE_ACCESS_KEY first!");
    let table_name = std::env::var("STORAGE_TABLE_NAME").expect("Set env variable STORAGE_TABLE_NAME first!");

    let storage_credentials = StorageCredentials::access_key(account.clone(), access_key);
    let table_service = TableServiceClient::new(account, storage_credentials);

    let table_client = table_service.table_client(table_name);
    table_client.create().await?;

    let entity = MyEntity {
        city: "Milan".to_owned(),
        name: "Francesco".to_owned(),
        surname: "A".to_owned(),
    };

    let _: InsertEntityResponse<MyEntity> = table_client.insert(&entity)?.await?;

    // Get a client that refers to the above entity
    let entity_client = table_client.partition_key_client(&entity.city).entity_client(&entity.surname);

    // Get an entity from the table
    let response = entity_client.get().await?;
    let mut entity: MyEntity = response.entity;

    // update the entity in the table
    entity.name = "Ryan".to_owned();
    entity_client.update(&entity, response.etag.into())?.await?;
    entity_client.delete().await?;

    /// delete the client now that we're done
    table_client.delete().await?;
    Ok(())
}

License: MIT

Dependencies

~8–22MB
~330K SLoC