19 个重大版本发布
0.20.0 | 2024年4月24日 |
---|---|
0.19.0 | 2024年1月5日 |
0.18.0 | 2023年12月8日 |
0.17.0 | 2023年11月3日 |
0.1.0 | 2022年1月25日 |
#113 in 网页编程
每月下载 2,265 次
505KB
12K SLoC
azure_data_cosmos
Cosmos DB 库。
azure-data-cosmos
提供了与 Cosmos DB 交互所需的功能。作为对 Cosmos DB Rest API 的抽象,通过该 Rest API 可实现的功能也应通过此库实现。
示例
// Using the prelude module of the Cosmos crate makes easier to use the Rust Azure SDK for Cosmos DB.
use azure_data_cosmos::prelude::*;
use azure_core::Context;
use serde::{Deserialize, Serialize};
// This is the stuct we want to use in our sample.
// Make sure to have a collection with partition key "number" for this example to
// work (you can create with this SDK too, check the examples folder for that task).
#[derive(Serialize, Deserialize, Debug)]
struct MySampleStruct {
id: String,
string: String,
number: u64,
}
impl azure_data_cosmos::CosmosEntity for MySampleStruct {
type Entity = u64;
fn partition_key(&self) -> Self::Entity {
self.number
}
}
#[tokio::main]
async fn main() -> azure_core::Result<()> {
// Let's get Cosmos primary key and account name from env variables.
let primary_key =
std::env::var("COSMOS_PRIMARY_KEY").expect("Set env variable COSMOS_PRIMARY_KEY first!");
let account = std::env::var("COSMOS_ACCOUNT").expect("Set env variable COSMOS_ACCOUNT first!");
let database_name = std::env::args()
.nth(1)
.expect("please specify the database name as the first command line parameter");
let collection_name = std::env::args()
.nth(2)
.expect("please specify the collection name as the second command line parameter");
// First, create an authorization token. There are two types of tokens: primary and resource constrained.
// Please check the Azure documentation or the examples folder on how to create and use token-based permissions.
let authorization_token = AuthorizationToken::primary_key(&primary_key)?;
// Next we will create a Cosmos client.
let client = CosmosClient::new(account, authorization_token);
// We know the database so we can obtain a database client.
let database = client.database_client(database_name);
// We know the collection so we can obtain a collection client.
let collection = database.collection_client(collection_name);
// Insert 10 documents
println!("Inserting 10 documents...");
for i in 0..10 {
// define the document.
let document_to_insert = MySampleStruct {
id: format!("unique_id{}", i),
string: "Something here".to_owned(),
number: i * 100, // this is the partition key
};
// insert it
collection
.create_document(document_to_insert)
.is_upsert(true)
.await?;
}
Ok(())
}
许可证:MIT
依赖项
~7–20MB
~306K SLoC