azure_data_cosmos 0.9.0

Rust wrappers around Microsoft Azure REST APIs - Azure Cosmos DB
Documentation
use crate::{prelude::*, resources::user::UserResponse as CreateUserResponse};

operation! {
    CreateUser,
    client: UserClient,
    ?consistency_level: ConsistencyLevel
}

impl CreateUserBuilder {
    pub fn into_future(self) -> CreateUser {
        Box::pin(async move {
            let mut request = self.client.cosmos_client().request(
                &format!(
                    "dbs/{}/users",
                    self.client.database_client().database_name()
                ),
                azure_core::Method::Post,
            );

            if let Some(cl) = &self.consistency_level {
                request.insert_headers(cl);
            }
            let body = CreateUserBody {
                id: self.client.user_name(),
            };
            request.set_body(serde_json::to_vec(&body)?);
            let response = self
                .client
                .pipeline()
                .send(
                    self.context.clone().insert(ResourceType::Users),
                    &mut request,
                )
                .await?;

            CreateUserResponse::try_from(response).await
        })
    }
}

#[derive(Serialize, Debug)]
struct CreateUserBody<'a> {
    id: &'a str,
}