Skip to content

Commit a26835f

Browse files
authored
Even more into_future (#667)
* GetDocument::into_future * Remove some boxes * GetPermission::into_future * GetUser::into_future * GetCollections::into_stream * Remove unused * Update list databases * Pageable for list_users * list_collection pageable * ReplaceCollection::into_future * ReplaceDocument::into_future * Fix clippy
1 parent ee80254 commit a26835f

40 files changed

+498
-495
lines changed

sdk/data_cosmos/examples/collection.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use azure_core::prelude::*;
21
use azure_data_cosmos::prelude::*;
32
use futures::stream::StreamExt;
43
use std::error::Error;
@@ -60,12 +59,10 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
6059

6160
for db in databases.databases {
6261
let database_client = client.clone().into_database_client(db.id.clone());
63-
let collections = Box::pin(
64-
database_client.list_collections(Context::new(), ListCollectionsOptions::new()),
65-
)
66-
.next()
67-
.await
68-
.unwrap()?;
62+
let collections = Box::pin(database_client.list_collections().into_stream())
63+
.next()
64+
.await
65+
.unwrap()?;
6966
println!(
7067
"database {} has {} collection(s)",
7168
db.id,

sdk/data_cosmos/examples/create_delete_database.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use azure_core::Context;
21
use azure_data_cosmos::prelude::*;
32
use futures::stream::StreamExt;
43
use std::error::Error;
@@ -61,7 +60,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
6160
let get_collection_response = db_collection.get_collection().into_future().await?;
6261
println!("get_collection_response == {:#?}", get_collection_response);
6362

64-
let stream = db_client.list_collections(Context::new(), ListCollectionsOptions::new());
63+
let stream = db_client.list_collections().into_stream();
6564
let mut stream = Box::pin(stream);
6665
while let Some(res) = stream.next().await {
6766
let res = res?;

sdk/data_cosmos/examples/database_00.rs

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use azure_core::Context;
21
use azure_data_cosmos::prelude::*;
32
use futures::stream::StreamExt;
43
use serde_json::Value;
@@ -25,11 +24,10 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
2524
println!("database == {:?}", db);
2625
let database = client.clone().into_database_client(db.name().to_owned());
2726

28-
let collections =
29-
Box::pin(database.list_collections(Context::new(), ListCollectionsOptions::new()))
30-
.next()
31-
.await
32-
.unwrap()?;
27+
let collections = Box::pin(database.list_collections().into_stream())
28+
.next()
29+
.await
30+
.unwrap()?;
3331
for collection in collections.collections {
3432
println!("collection == {:?}", collection);
3533
let collection_client = database.clone().into_collection_client(collection.id);
@@ -66,10 +64,9 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
6664

6765
println!("\nReplacing collection");
6866
let replace_collection_response = collection_client
69-
.replace_collection(
70-
Context::new(),
71-
ReplaceCollectionOptions::new("/age").indexing_policy(indexing_policy_new),
72-
)
67+
.replace_collection("/age")
68+
.indexing_policy(indexing_policy_new)
69+
.into_future()
7370
.await?;
7471
println!(
7572
"replace_collection_response == {:#?}",

sdk/data_cosmos/examples/database_01.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use azure_core::Context;
21
use azure_data_cosmos::prelude::*;
32
use futures::stream::StreamExt;
43
use std::error::Error;
@@ -18,11 +17,10 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
1817
let database_client = client.into_database_client("pollo");
1918
println!("database_name == {}", database_client.database_name());
2019

21-
let collections =
22-
Box::pin(database_client.list_collections(Context::new(), ListCollectionsOptions::new()))
23-
.next()
24-
.await
25-
.unwrap()?;
20+
let collections = Box::pin(database_client.list_collections().into_stream())
21+
.next()
22+
.await
23+
.unwrap()?;
2624
println!("collections == {:#?}", collections);
2725

2826
let collection_client = database_client.into_collection_client("cnt");

sdk/data_cosmos/examples/document_00.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
8585
client
8686
.clone()
8787
.into_database_client(database.id.clone())
88-
.list_collections(Context::new(), ListCollectionsOptions::new()),
88+
.list_collections()
89+
.into_stream(),
8990
)
9091
.next()
9192
.await
@@ -156,7 +157,8 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
156157
let get_document_response = collection_client
157158
.clone()
158159
.into_document_client(doc.id.clone(), &doc.id)?
159-
.get_document::<MySampleStruct>(Context::new(), GetDocumentOptions::new())
160+
.get_document()
161+
.into_future::<MySampleStruct>()
160162
.await?;
161163
println!("get_document_response == {:#?}", get_document_response);
162164

@@ -170,12 +172,12 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
170172
// the etag received in the previous get_document. The etag is an opaque value that
171173
// changes every time the document is updated. If the passed etag is different in
172174
// CosmosDB it means something else updated the document before us!
173-
let options = ReplaceDocumentOptions::new()
174-
.if_match_condition(IfMatchCondition::Match(document.etag));
175175
let replace_document_response = collection_client
176176
.clone()
177177
.into_document_client(doc.id.clone(), &doc.id)?
178-
.replace_document(Context::new(), &doc, options)
178+
.replace_document(doc)
179+
.if_match_condition(IfMatchCondition::Match(document.etag))
180+
.into_future()
179181
.await?;
180182
println!(
181183
"replace_document_response == {:#?}",

sdk/data_cosmos/examples/document_entries_00.rs

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,11 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
115115
let id = format!("unique_id{}", 3);
116116
let partition_key = &id;
117117

118-
let response = client
118+
let response: GetDocumentResponse<MySampleStruct> = client
119119
.clone()
120120
.into_document_client(id.clone(), partition_key)?
121-
.get_document::<MySampleStruct>(
122-
Context::new(),
123-
GetDocumentOptions::new().consistency_level(session_token),
124-
)
121+
.get_document()
122+
.into_future()
125123
.await?;
126124

127125
assert!(matches!(response, GetDocumentResponse::Found(_)));
@@ -137,13 +135,10 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
137135
let replace_document_response = client
138136
.clone()
139137
.into_document_client(id.clone(), &id)?
140-
.replace_document(
141-
Context::new(),
142-
&doc.document,
143-
ReplaceDocumentOptions::new()
144-
.consistency_level(ConsistencyLevel::from(&response))
145-
.if_match_condition(IfMatchCondition::Match(doc.etag)), // use optimistic concurrency check
146-
)
138+
.replace_document(doc.document)
139+
.consistency_level(ConsistencyLevel::from(&response))
140+
.if_match_condition(IfMatchCondition::Match(doc.etag)) // use optimistic concurrency check
141+
.into_future()
147142
.await?;
148143

149144
println!(
@@ -155,14 +150,12 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
155150
// has_been_found == false
156151
println!("\n\nLooking for non-existing item");
157152
let id = format!("unique_id{}", 100);
158-
159-
let response = client
153+
let response: GetDocumentResponse<MySampleStruct> = client
160154
.clone()
161155
.into_document_client(id.clone(), &id)?
162-
.get_document::<MySampleStruct>(
163-
Context::new(),
164-
GetDocumentOptions::new().consistency_level(&response),
165-
)
156+
.get_document()
157+
.consistency_level(&response)
158+
.into_future()
166159
.await?;
167160

168161
assert!(matches!(response, GetDocumentResponse::NotFound(_)));

sdk/data_cosmos/examples/document_entries_01.rs

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use azure_core::Context;
21
use azure_data_cosmos::prelude::*;
32
use serde::{Deserialize, Serialize};
43
use std::error::Error;
@@ -62,20 +61,18 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
6261
let get_document_response = client
6362
.clone()
6463
.into_document_client(doc.id.clone(), &doc.id)?
65-
.get_document::<serde_json::Value>(
66-
Context::new(),
67-
GetDocumentOptions::new().consistency_level(&create_document_response),
68-
)
64+
.get_document()
65+
.consistency_level(&create_document_response)
66+
.into_future::<serde_json::Value>()
6967
.await?;
7068
println!("get_document_response == {:#?}", get_document_response);
7169

7270
let get_document_response = client
7371
.clone()
7472
.into_document_client("ciccia", &doc.id)?
75-
.get_document::<serde_json::Value>(
76-
Context::new(),
77-
GetDocumentOptions::new().consistency_level(&create_document_response),
78-
)
73+
.get_document()
74+
.consistency_level(&create_document_response)
75+
.into_future::<serde_json::Value>()
7976
.await?;
8077
println!(
8178
"get_document_response == {:#?}\n\n\n",
@@ -104,11 +101,9 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
104101

105102
let replace_document_response = client
106103
.into_document_client(doc.id.clone(), &doc.id)?
107-
.replace_document(
108-
Context::new(),
109-
&doc,
110-
ReplaceDocumentOptions::new().consistency_level(&query_documents_response),
111-
)
104+
.replace_document(doc)
105+
.consistency_level(&query_documents_response)
106+
.into_future()
112107
.await?;
113108
println!(
114109
"replace_document_response == {:#?}",

sdk/data_cosmos/examples/permission_00.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -101,12 +101,11 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
101101
);
102102

103103
let get_permission_response = permission_client
104-
.get_permission(
105-
Context::new(),
106-
GetPermissionOptions::new().consistency_level(ConsistencyLevel::Session(
107-
list_permissions_response.session_token,
108-
)),
109-
)
104+
.get_permission()
105+
.consistency_level(ConsistencyLevel::Session(
106+
list_permissions_response.session_token,
107+
))
108+
.into_future()
110109
.await
111110
.unwrap();
112111
println!("get_permission_response == {:#?}", get_permission_response);

sdk/data_cosmos/examples/user_00.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use azure_core::Context;
22
use azure_data_cosmos::prelude::*;
3-
use futures::stream::StreamExt;
3+
use futures::StreamExt;
44
use std::error::Error;
55

66
#[tokio::main]
@@ -32,16 +32,14 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
3232
let create_user_response = user_client.create_user().into_future().await?;
3333
println!("create_user_response == {:#?}", create_user_response);
3434

35-
let users = Box::pin(database_client.list_users(Context::new(), ListUsersOptions::new()))
35+
let users = Box::pin(database_client.list_users().into_stream())
3636
.next()
3737
.await
3838
.unwrap()?;
3939

4040
println!("list_users_response == {:#?}", users);
4141

42-
let get_user_response = user_client
43-
.get_user(Context::new(), GetUserOptions::new())
44-
.await?;
42+
let get_user_response = user_client.get_user().into_future().await?;
4543
println!("get_user_response == {:#?}", get_user_response);
4644

4745
let new_user = format!("{}replaced", user_name);

sdk/data_cosmos/src/clients/collection_client.rs

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ use super::{DatabaseClient, UserDefinedFunctionClient};
22
use crate::clients::*;
33
use crate::operations::*;
44
use crate::requests;
5-
use crate::resources::ResourceType;
5+
use crate::resources::collection::PartitionKey;
66
use crate::CosmosEntity;
77
use crate::ReadonlyString;
8-
use azure_core::{Context, HttpClient, Pipeline, Request};
8+
use azure_core::{HttpClient, Pipeline, Request};
99
use serde::Serialize;
1010

1111
/// A client for Cosmos collection resources.
@@ -52,21 +52,11 @@ impl CollectionClient {
5252
}
5353

5454
/// Replace a collection
55-
pub async fn replace_collection(
55+
pub fn replace_collection<P: Into<PartitionKey>>(
5656
&self,
57-
ctx: Context,
58-
options: ReplaceCollectionOptions,
59-
) -> crate::Result<ReplaceCollectionResponse> {
60-
let mut request = self.prepare_request_with_collection_name(http::Method::PUT);
61-
62-
options.decorate_request(&mut request, self.collection_name())?;
63-
64-
let response = self
65-
.pipeline()
66-
.send(ctx.clone().insert(ResourceType::Collections), &mut request)
67-
.await?;
68-
69-
Ok(ReplaceCollectionResponse::try_from(response).await?)
57+
partition_key: P,
58+
) -> ReplaceCollectionBuilder {
59+
ReplaceCollectionBuilder::new(self.clone(), partition_key.into())
7060
}
7161

7262
/// list documents in a collection

0 commit comments

Comments
 (0)