Skip to content

test IntoFuture before stabilization #687

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 12 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -16,7 +16,7 @@ jobs:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
toolchain: nightly
profile: minimal
override: true
components: rustfmt, clippy
@@ -44,7 +44,7 @@ jobs:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
toolchain: nightly
profile: minimal
override: true
components: rustfmt
@@ -57,7 +57,7 @@ jobs:
cargo fmt --all -- --check
./eng/scripts/check_json_format.sh
cargo fmt --manifest-path services/Cargo.toml --all -- --check
if: matrix.rust == 'stable'
if: matrix.rust == 'nightly'

- name: check core for wasm
run: cargo check -p azure_core --target=wasm32-unknown-unknown
@@ -85,7 +85,7 @@ jobs:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
toolchain: nightly
profile: minimal
override: true
components: rustfmt, clippy
@@ -112,7 +112,7 @@ jobs:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
toolchain: nightly
profile: minimal
override: true
components: rustfmt
@@ -136,7 +136,7 @@ jobs:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
toolchain: nightly
profile: minimal
override: true
components: rustfmt
@@ -167,7 +167,7 @@ jobs:
- name: install rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
toolchain: nightly
profile: minimal
override: true
components: rustfmt, clippy
2 changes: 1 addition & 1 deletion .github/workflows/services-all-features.yml
Original file line number Diff line number Diff line change
@@ -17,7 +17,7 @@ jobs:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
toolchain: nightly
profile: minimal
override: true

2 changes: 1 addition & 1 deletion sdk/core/src/macros.rs
Original file line number Diff line number Diff line change
@@ -29,7 +29,7 @@ macro_rules! setters {
#[allow(clippy::redundant_field_names)]
#[allow(clippy::needless_update)]
// TODO: Declare using idiomatic with_$name when https://github.com/Azure/azure-sdk-for-rust/issues/292 is resolved.
pub fn $name<T: ::std::convert::Into<$typ>>(self, $name: T) -> Self {
pub fn $name<_T: ::std::convert::Into<$typ>>(self, $name: _T) -> Self {
let $name: $typ = $name.into();
Self {
$name: $transform,
25 changes: 6 additions & 19 deletions sdk/data_cosmos/examples/attachments_00.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![feature(into_future)]

use azure_data_cosmos::prelude::*;
use futures::StreamExt;
use serde::{Deserialize, Serialize};
@@ -52,7 +54,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
};

// let's add an entity.
match client.create_document(doc.clone()).into_future().await {
match client.create_document(doc.clone()).await {
Ok(_) => {
println!("document created");
}
@@ -81,19 +83,14 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
"image/jpeg",
)
.consistency_level(ret)
.into_future()
.await?;
println!("create reference == {:#?}", resp);

// we pass the consistency level to make
// sure to find the just created attachment
let session_token: ConsistencyLevel = resp.into();

let resp = attachment
.get()
.consistency_level(session_token)
.into_future()
.await?;
let resp = attachment.get().consistency_level(session_token).await?;

println!("get attachment == {:#?}", resp);
let session_token: ConsistencyLevel = resp.into();
@@ -106,16 +103,11 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
"image/jpeg",
)
.consistency_level(session_token)
.into_future()
.await?;
println!("replace reference == {:#?}", resp);

println!("deleting");
let resp_delete = attachment
.delete()
.consistency_level(&resp)
.into_future()
.await?;
let resp_delete = attachment.delete().consistency_level(&resp).await?;
println!("delete attachment == {:#?}", resp_delete);

// slug attachment
@@ -125,17 +117,12 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
.create_slug("FFFFF".into())
.consistency_level(&resp_delete)
.content_type("text/plain")
.into_future()
.await?;

println!("create slug == {:#?}", resp);

println!("deleting");
let resp_delete = attachment
.delete()
.consistency_level(&resp)
.into_future()
.await?;
let resp_delete = attachment.delete().consistency_level(&resp).await?;
println!("delete attachment == {:#?}", resp_delete);

Ok(())
1 change: 1 addition & 0 deletions sdk/data_cosmos/examples/cancellation.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#![feature(into_future)]
use azure_data_cosmos::prelude::*;
use stop_token::prelude::*;
use stop_token::StopSource;
8 changes: 2 additions & 6 deletions sdk/data_cosmos/examples/collection.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#![feature(into_future)]
use azure_data_cosmos::prelude::*;
use futures::stream::StreamExt;
use std::error::Error;
@@ -47,11 +48,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
// try get on the first database (if any)
if let Some(db) = databases.databases.first() {
println!("getting info of database {}", &db.id);
let db = client
.database_client(db.id.clone())
.get_database()
.into_future()
.await?;
let db = client.database_client(db.id.clone()).get_database().await?;
println!("db {} found == {:?}", &db.database.id, &db);
}

@@ -78,7 +75,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
let collection_response = database
.collection_client(collection.id)
.get_collection()
.into_future()
.await?;

println!("\tcollection_response {:?}", collection_response);
13 changes: 5 additions & 8 deletions sdk/data_cosmos/examples/create_delete_database.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#![feature(into_future)]
use azure_data_cosmos::prelude::*;
use futures::stream::StreamExt;
use std::error::Error;
@@ -39,16 +40,13 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
}
drop(list_databases_stream);

let db = client.create_database(&database_name).into_future().await?;
let db = client.create_database(&database_name).await?;
println!("created database = {:#?}", db);

// create collection!
{
let database = client.database_client(database_name.clone());
let create_collection_response = database
.create_collection("panzadoro", "/id")
.into_future()
.await?;
let create_collection_response = database.create_collection("panzadoro", "/id").await?;

println!(
"create_collection_response == {:#?}",
@@ -57,7 +55,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {

let db_collection = database.collection_client("panzadoro");

let get_collection_response = db_collection.get_collection().into_future().await?;
let get_collection_response = db_collection.get_collection().await?;
println!("get_collection_response == {:#?}", get_collection_response);

let mut stream = database.list_collections().into_stream();
@@ -66,14 +64,13 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
println!("res == {:#?}", res);
}

let delete_response = db_collection.delete_collection().into_future().await?;
let delete_response = db_collection.delete_collection().await?;
println!("collection deleted: {:#?}", delete_response);
}

let resp = client
.database_client(database_name)
.delete_database()
.into_future()
.await?;
println!("database deleted. resp == {:#?}", resp);

3 changes: 1 addition & 2 deletions sdk/data_cosmos/examples/database_00.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#![feature(into_future)]
use azure_data_cosmos::prelude::*;
use futures::stream::StreamExt;
use serde_json::Value;
@@ -56,7 +57,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
.create_document(document)
.is_upsert(true)
.partition_key(&43u32)?
.into_future()
.await?;

println!("resp == {:?}", resp);
@@ -70,7 +70,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
let replace_collection_response = collection
.replace_collection("/age")
.indexing_policy(indexing_policy_new)
.into_future()
.await?;
println!(
"replace_collection_response == {:#?}",
7 changes: 2 additions & 5 deletions sdk/data_cosmos/examples/database_01.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#![feature(into_future)]
use azure_data_cosmos::prelude::*;
use futures::stream::StreamExt;
use std::error::Error;
@@ -25,11 +26,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
.unwrap()?;
println!("collections == {:#?}", collections);

let collection = database
.collection_client("cnt")
.get_collection()
.into_future()
.await?;
let collection = database.collection_client("cnt").get_collection().await?;
println!("collection == {:#?}", collection);

Ok(())
21 changes: 4 additions & 17 deletions sdk/data_cosmos/examples/document_00.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#![feature(into_future)]
use futures::stream::StreamExt;
use serde::{Deserialize, Serialize};
// Using the prelude module of the Cosmos crate makes easier to use the Rust Azure SDK for Cosmos
@@ -69,13 +70,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
// If the requested database is not found we create it.
let database = match db {
Some(db) => db,
None => {
client
.create_database(DATABASE)
.into_future()
.await?
.database
}
None => client.create_database(DATABASE).await?.database,
};
println!("database == {:?}", database);

@@ -102,7 +97,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
.clone()
.database_client(database.id.clone())
.create_collection(COLLECTION, "/id")
.into_future()
.await?
.collection
}
@@ -131,10 +125,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
// The method create_document will return, upon success,
// the document attributes.

let create_document_response = collection
.create_document(doc.clone())
.into_future()
.await?;
let create_document_response = collection.create_document(doc.clone()).await?;
println!(
"create_document_response == {:#?}",
create_document_response
@@ -159,8 +150,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
let get_document_response = collection
.clone()
.document_client(doc.id.clone(), &doc.id)?
.get_document()
.into_future::<MySampleStruct>()
.get_document::<MySampleStruct>()
.await?;
println!("get_document_response == {:#?}", get_document_response);

@@ -179,7 +169,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
.document_client(doc.id.clone(), &doc.id)?
.replace_document(doc)
.if_match_condition(IfMatchCondition::Match(document.etag))
.into_future()
.await?;
println!(
"replace_document_response == {:#?}",
@@ -192,15 +181,13 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
.database_client(DATABASE.to_owned())
.collection_client(COLLECTION.to_owned())
.delete_collection()
.into_future()
.await?;
println!("collection deleted");

// And then we delete the database.
client
.database_client(database.id)
.delete_database()
.into_future()
.await?;
println!("database deleted");

5 changes: 2 additions & 3 deletions sdk/data_cosmos/examples/document_entries_00.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#![feature(into_future)]
use azure_core::prelude::*;
use azure_data_cosmos::prelude::*;
use futures::stream::StreamExt;
@@ -52,7 +53,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
};

// let's add an entity.
response = Some(client.create_document(doc.clone()).into_future().await?);
response = Some(client.create_document(doc.clone()).await?);
}

println!("Created 5 documents.");
@@ -128,7 +129,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
.replace_document(doc.document)
.consistency_level(ConsistencyLevel::from(&response))
.if_match_condition(IfMatchCondition::Match(doc.etag)) // use optimistic concurrency check
.into_future()
.await?;

println!(
@@ -155,7 +155,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
client
.document_client(id.clone(), &id)?
.delete_document()
.into_future()
.await?;
}
println!("Cleaned up");
14 changes: 4 additions & 10 deletions sdk/data_cosmos/examples/document_entries_01.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#![feature(into_future)]
use azure_data_cosmos::prelude::*;
use futures::StreamExt;
use serde::{Deserialize, Serialize};
@@ -48,11 +49,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
};

// let's add an entity.
let create_document_response = client
.create_document(doc.clone())
.is_upsert(true)
.into_future()
.await?;
let create_document_response = client.create_document(doc.clone()).is_upsert(true).await?;

println!(
"create_document_response == {:#?}\n\n\n",
@@ -61,17 +58,15 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {

let get_document_response = client
.document_client(doc.id.clone(), &doc.id)?
.get_document()
.get_document::<serde_json::Value>()
.consistency_level(&create_document_response)
.into_future::<serde_json::Value>()
.await?;
println!("get_document_response == {:#?}", get_document_response);

let get_document_response = client
.document_client("ciccia", &doc.id)?
.get_document()
.get_document::<serde_json::Value>()
.consistency_level(&create_document_response)
.into_future::<serde_json::Value>()
.await?;
println!(
"get_document_response == {:#?}\n\n\n",
@@ -106,7 +101,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
.document_client(doc.id.clone(), &doc.id)?
.replace_document(doc)
.consistency_level(&query_documents_response)
.into_future()
.await?;
println!(
"replace_document_response == {:#?}",
7 changes: 2 additions & 5 deletions sdk/data_cosmos/examples/get_database.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#![feature(into_future)]
use azure_core::prelude::*;
use azure_core::CustomHeaders;
use azure_data_cosmos::prelude::*;
@@ -37,11 +38,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {

context.insert(custom_headers);

let response = database
.get_database()
.context(context)
.into_future()
.await?;
let response = database.get_database().context(context).await?;
println!("response == {:?}", response);

Ok(())
3 changes: 2 additions & 1 deletion sdk/data_cosmos/examples/key_ranges_00.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#![feature(into_future)]
use azure_data_cosmos::prelude::*;
use std::error::Error;

@@ -26,7 +27,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
.database_client(database)
.collection_client(collection);

let resp = client.get_partition_key_ranges().into_future().await?;
let resp = client.get_partition_key_ranges().await?;
println!("resp == {:#?}", resp);

Ok(())
15 changes: 5 additions & 10 deletions sdk/data_cosmos/examples/permission_00.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#![feature(into_future)]
use azure_data_cosmos::prelude::*;
use futures::StreamExt;
use std::error::Error;
@@ -36,19 +37,19 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
let collection2 = database.collection_client(collection_name2);
let user = database.user_client(user_name);

let get_database_response = database.get_database().into_future().await?;
let get_database_response = database.get_database().await?;
println!("get_database_response == {:#?}", get_database_response);

let get_collection_response = collection.get_collection().into_future().await?;
let get_collection_response = collection.get_collection().await?;
println!("get_collection_response == {:#?}", get_collection_response);

let get_collection2_response = collection2.get_collection().into_future().await?;
let get_collection2_response = collection2.get_collection().await?;
println!(
"get_collection2_response == {:#?}",
get_collection2_response
);

let create_user_response = user.create_user().into_future().await?;
let create_user_response = user.create_user().await?;
println!("create_user_response == {:#?}", create_user_response);

// create the first permission!
@@ -59,7 +60,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
.create_permission(permission_mode)
.consistency_level(&create_user_response)
.expiry_seconds(18000u64)
.into_future()
.await
.unwrap();
println!(
@@ -74,7 +74,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
let create_permission2_response = permission
.create_permission(permission_mode)
.consistency_level(&create_user_response)
.into_future()
.await
.unwrap();

@@ -103,7 +102,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
.consistency_level(ConsistencyLevel::Session(
list_permissions_response.session_token,
))
.into_future()
.await
.unwrap();
println!("get_permission_response == {:#?}", get_permission_response);
@@ -117,7 +115,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
.consistency_level(ConsistencyLevel::Session(
get_permission_response.session_token,
))
.into_future()
.await
.unwrap();
println!(
@@ -130,7 +127,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
.consistency_level(ConsistencyLevel::Session(
replace_permission_response.session_token,
))
.into_future()
.await
.unwrap();

@@ -144,7 +140,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
.consistency_level(ConsistencyLevel::Session(
delete_permission_response.session_token,
))
.into_future()
.await?;
println!("delete_user_response == {:#?}", delete_user_response);

1 change: 1 addition & 0 deletions sdk/data_cosmos/examples/query_document_00.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#![feature(into_future)]
use azure_data_cosmos::prelude::*;
use futures::StreamExt;
use serde::{Deserialize, Serialize};
2 changes: 0 additions & 2 deletions sdk/data_cosmos/examples/readme.rs
Original file line number Diff line number Diff line change
@@ -80,7 +80,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
collection
.create_document(document_to_insert.clone())
.is_upsert(true)
.into_future()
.await?
.session_token, // get only the session token, if everything else was ok!
);
@@ -150,7 +149,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
.delete_document()
.consistency_level(session_token.clone())
.if_match_condition(&document.document_attributes)
.into_future()
.await?;
}

2 changes: 1 addition & 1 deletion sdk/data_cosmos/examples/remove_all_documents.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#![feature(into_future)]
use azure_data_cosmos::prelude::*;
use futures::stream::StreamExt;
use serde_json::Value;
@@ -73,7 +74,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
client
.document_client(id.clone(), &partition_key)?
.delete_document()
.into_future()
.await?;
}

1 change: 1 addition & 0 deletions sdk/data_cosmos/examples/stored_proc_00.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#![feature(into_future)]
/// This sample showcases execution of stored procedure
/// Create stored procedure called test_proc, like so:
/// function f(personToGreet) {
7 changes: 2 additions & 5 deletions sdk/data_cosmos/examples/stored_proc_01.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#![feature(into_future)]
/// This sample showcases execution of stored procedure
/// Create stored procedure called test_proc, like so:
/// function f(personToGreet) {
@@ -58,7 +59,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {

let create_stored_procedure_response = stored_procedure
.create_stored_procedure(function_body)
.into_future()
.await?;
println!(
"create_stored_procedure_response == {:#?}",
@@ -80,10 +80,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
execute_stored_procedure_response.payload
);

let delete_stored_procedure_response = stored_procedure
.delete_stored_procedure()
.into_future()
.await?;
let delete_stored_procedure_response = stored_procedure.delete_stored_procedure().await?;
println!(
"delete_stored_procedure_response == {:#?}",
delete_stored_procedure_response
4 changes: 1 addition & 3 deletions sdk/data_cosmos/examples/trigger_00.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#![feature(into_future)]
use azure_data_cosmos::prelude::*;
use azure_data_cosmos::resources::trigger::{TriggerOperation, TriggerType};
use futures::stream::StreamExt;
@@ -63,14 +64,12 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {

let ret = trigger
.create_trigger("something", TriggerType::Post, TriggerOperation::All)
.into_future()
.await?;
println!("Create response object:\n{:#?}", ret);

let ret = trigger
.replace_trigger(TRIGGER_BODY, TriggerType::Post, TriggerOperation::All)
.consistency_level(ret)
.into_future()
.await?;
println!("Replace response object:\n{:#?}", ret);

@@ -93,7 +92,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
let ret = trigger
.delete_trigger()
.consistency_level(last_session_token.unwrap())
.into_future()
.await?;
println!("Delete response object:\n{:#?}", ret);

9 changes: 5 additions & 4 deletions sdk/data_cosmos/examples/user_00.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#![feature(into_future)]
use azure_data_cosmos::prelude::*;
use futures::StreamExt;
use std::error::Error;
@@ -28,24 +29,24 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
let database = client.database_client(database_name);
let user = database.user_client(user_name.clone());

let create_user_response = user.create_user().into_future().await?;
let create_user_response = user.create_user().await?;
println!("create_user_response == {:#?}", create_user_response);

let users = database.list_users().into_stream().next().await.unwrap()?;

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

let get_user_response = user.get_user().into_future().await?;
let get_user_response = user.get_user().await?;
println!("get_user_response == {:#?}", get_user_response);

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

let replace_user_response = user.replace_user(new_user.clone()).into_future().await?;
let replace_user_response = user.replace_user(new_user.clone()).await?;
println!("replace_user_response == {:#?}", replace_user_response);

let user = database.user_client(new_user);

let delete_user_response = user.delete_user().into_future().await?;
let delete_user_response = user.delete_user().await?;
println!("delete_user_response == {:#?}", delete_user_response);

Ok(())
4 changes: 1 addition & 3 deletions sdk/data_cosmos/examples/user_defined_function_00.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#![feature(into_future)]
use azure_data_cosmos::prelude::*;
use futures::stream::StreamExt;
use std::error::Error;
@@ -41,7 +42,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {

let ret = user_defined_function
.create_user_defined_function("body")
.into_future()
.await?;
println!("Creeate response object:\n{:#?}", ret);

@@ -61,7 +61,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
let ret = user_defined_function
.replace_user_defined_function(FN_BODY)
.consistency_level(&ret)
.into_future()
.await?;
println!("Replace response object:\n{:#?}", ret);

@@ -93,7 +92,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
let ret = user_defined_function
.delete_user_defined_function()
.consistency_level(&ret)
.into_future()
.await?;

println!("Delete response object:\n{:#?}", ret);
13 changes: 5 additions & 8 deletions sdk/data_cosmos/examples/user_permission_token.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#![feature(into_future)]
use azure_data_cosmos::prelude::*;
use futures::StreamExt;
use std::error::Error;
@@ -32,10 +33,10 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
let collection = database.collection_client(collection_name.clone());
let user = database.user_client(user_name);

let get_collection_response = collection.get_collection().into_future().await?;
let get_collection_response = collection.get_collection().await?;
println!("get_collection_response == {:#?}", get_collection_response);

let create_user_response = user.create_user().into_future().await?;
let create_user_response = user.create_user().await?;
println!("create_user_response == {:#?}", create_user_response);

// test list documents
@@ -58,7 +59,6 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
let create_permission_response = permission
.create_permission(permission_mode)
.expiry_seconds(18000u64) // 5 hours, max!
.into_future()
.await
.unwrap();
println!(
@@ -115,21 +115,19 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
.create_document(document.clone())
.is_upsert(true)
.partition_key(&"Gianluigi Bombatomica")?
.into_future()
.await
{
Ok(_) => panic!("this should not happen!"),
Err(error) => println!("Insert failed: {:#?}", error),
}

permission.delete_permission().into_future().await?;
permission.delete_permission().await?;

// All includes read and write.
let permission_mode = get_collection_response.collection.all_permission();
let create_permission_response = permission
.create_permission(permission_mode)
.expiry_seconds(18000u64)
.into_future()
.await
.unwrap();
println!(
@@ -156,15 +154,14 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
.create_document(document)
.is_upsert(true)
.partition_key(&"Gianluigi Bombatomica")?
.into_future()
.await?;
println!(
"create_document_response == {:#?}",
create_document_response
);

println!("Cleaning up user.");
let delete_user_response = user.delete_user().into_future().await?;
let delete_user_response = user.delete_user().await?;
println!("delete_user_response == {:#?}", delete_user_response);

Ok(())
2 changes: 1 addition & 1 deletion sdk/data_cosmos/src/clients/document.rs
Original file line number Diff line number Diff line change
@@ -62,7 +62,7 @@ impl DocumentClient {
}

/// Get a document
pub fn get_document(&self) -> GetDocumentBuilder {
pub fn get_document<T>(&self) -> GetDocumentBuilder<T> {
GetDocumentBuilder::new(self.clone())
}

3 changes: 2 additions & 1 deletion sdk/data_cosmos/src/lib.rs
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@
#![allow(clippy::new_without_default)]
#![allow(clippy::module_inception)]
#![cfg_attr(feature = "into_future", feature(into_future))]
#![feature(into_future)]

/*!
# The Cosmos DB crate.
@@ -83,7 +84,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
collection
.create_document(document_to_insert)
.is_upsert(true)
.into_future()
.await?;
}
// wow that was easy and fast, wasn't it? :)
1 change: 0 additions & 1 deletion sdk/data_cosmos/src/operations/create_collection.rs
Original file line number Diff line number Diff line change
@@ -65,7 +65,6 @@ impl CreateCollectionBuilder {
}
}

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for CreateCollectionBuilder {
type IntoFuture = CreateCollection;
type Output = <CreateCollection as std::future::Future>::Output;
1 change: 0 additions & 1 deletion sdk/data_cosmos/src/operations/create_database.rs
Original file line number Diff line number Diff line change
@@ -63,7 +63,6 @@ impl CreateDatabaseBuilder {
}
}

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for CreateDatabaseBuilder {
type IntoFuture = CreateDatabase;
type Output = <CreateDatabase as std::future::Future>::Output;
1 change: 0 additions & 1 deletion sdk/data_cosmos/src/operations/create_document.rs
Original file line number Diff line number Diff line change
@@ -97,7 +97,6 @@ impl<D: Serialize + CosmosEntity + Send + 'static> CreateDocumentBuilder<D> {
pub type CreateDocument =
futures::future::BoxFuture<'static, crate::Result<CreateDocumentResponse>>;

#[cfg(feature = "into_future")]
impl<D: Serialize + CosmosEntity + Send + 'static> std::future::IntoFuture
for CreateDocumentBuilder<D>
{
Original file line number Diff line number Diff line change
@@ -88,7 +88,6 @@ impl CreateOrReplaceAttachmentBuilder {
pub type CreateOrReplaceAttachment =
futures::future::BoxFuture<'static, crate::Result<CreateOrReplaceAttachmentResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for CreateOrReplaceAttachmentBuilder {
type IntoFuture = CreateOrReplaceAttachment;
type Output = <CreateOrReplaceAttachment as std::future::Future>::Output;
Original file line number Diff line number Diff line change
@@ -94,7 +94,6 @@ impl CreateOrReplaceSlugAttachmentBuilder {
pub type CreateOrReplaceSlugAttachment =
futures::future::BoxFuture<'static, crate::Result<CreateOrReplaceSlugAttachmentResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for CreateOrReplaceSlugAttachmentBuilder {
type IntoFuture = CreateOrReplaceSlugAttachment;
type Output = <CreateOrReplaceSlugAttachment as std::future::Future>::Output;
Original file line number Diff line number Diff line change
@@ -90,7 +90,6 @@ impl CreateOrReplaceTriggerBuilder {
pub type CreateOrReplaceTrigger =
futures::future::BoxFuture<'static, crate::Result<CreateOrReplaceTriggerResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for CreateOrReplaceTriggerBuilder {
type IntoFuture = CreateOrReplaceTrigger;
type Output = <CreateOrReplaceTrigger as std::future::Future>::Output;
Original file line number Diff line number Diff line change
@@ -72,7 +72,6 @@ impl CreateOrReplaceUserDefinedFunctionBuilder {
pub type CreateOrReplaceUserDefinedFunction =
futures::future::BoxFuture<'static, crate::Result<CreateOrReplaceUserDefinedFunctionResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for CreateOrReplaceUserDefinedFunctionBuilder {
type IntoFuture = CreateOrReplaceUserDefinedFunction;
type Output = <CreateOrReplaceUserDefinedFunction as std::future::Future>::Output;
1 change: 0 additions & 1 deletion sdk/data_cosmos/src/operations/create_permission.rs
Original file line number Diff line number Diff line change
@@ -75,7 +75,6 @@ impl CreatePermissionBuilder {
/// The future returned by calling `into_future` on the builder.
pub type CreatePermission = futures::future::BoxFuture<'static, crate::Result<PermissionResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for CreatePermissionBuilder {
type IntoFuture = CreatePermission;
type Output = <CreatePermission as std::future::Future>::Output;
Original file line number Diff line number Diff line change
@@ -60,7 +60,6 @@ impl CreateStoredProcedureBuilder {
}
}

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for CreateStoredProcedureBuilder {
type IntoFuture = CreateStoredProcedure;
type Output = <CreateStoredProcedure as std::future::Future>::Output;
1 change: 0 additions & 1 deletion sdk/data_cosmos/src/operations/create_user.rs
Original file line number Diff line number Diff line change
@@ -54,7 +54,6 @@ impl CreateUserBuilder {
/// The future returned by calling `into_future` on the builder.
pub type CreateUser = futures::future::BoxFuture<'static, crate::Result<UserResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for CreateUserBuilder {
type IntoFuture = CreateUser;
type Output = <CreateUser as std::future::Future>::Output;
1 change: 0 additions & 1 deletion sdk/data_cosmos/src/operations/delete_attachment.rs
Original file line number Diff line number Diff line change
@@ -64,7 +64,6 @@ impl DeleteAttachmentBuilder {
pub type DeleteAttachment =
futures::future::BoxFuture<'static, crate::Result<DeleteAttachmentResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for DeleteAttachmentBuilder {
type IntoFuture = DeleteAttachment;
type Output = <DeleteAttachment as std::future::Future>::Output;
1 change: 0 additions & 1 deletion sdk/data_cosmos/src/operations/delete_collection.rs
Original file line number Diff line number Diff line change
@@ -51,7 +51,6 @@ impl DeleteCollectionBuilder {
pub type DeleteCollection =
futures::future::BoxFuture<'static, crate::Result<DeleteCollectionResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for DeleteCollectionBuilder {
type IntoFuture = DeleteCollection;
type Output = <DeleteCollection as std::future::Future>::Output;
1 change: 0 additions & 1 deletion sdk/data_cosmos/src/operations/delete_database.rs
Original file line number Diff line number Diff line change
@@ -45,7 +45,6 @@ impl DeleteDatabaseBuilder {
pub type DeleteDatabase =
futures::future::BoxFuture<'static, crate::Result<DeleteDatabaseResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for DeleteDatabaseBuilder {
type IntoFuture = DeleteDatabase;
type Output = <DeleteDatabase as std::future::Future>::Output;
1 change: 0 additions & 1 deletion sdk/data_cosmos/src/operations/delete_document.rs
Original file line number Diff line number Diff line change
@@ -71,7 +71,6 @@ impl DeleteDocumentBuilder {
pub type DeleteDocument =
futures::future::BoxFuture<'static, crate::Result<DeleteDocumentResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for DeleteDocumentBuilder {
type IntoFuture = DeleteDocument;
type Output = <DeleteDocument as std::future::Future>::Output;
1 change: 0 additions & 1 deletion sdk/data_cosmos/src/operations/delete_permission.rs
Original file line number Diff line number Diff line change
@@ -52,7 +52,6 @@ impl DeletePermissionBuilder {
pub type DeletePermission =
futures::future::BoxFuture<'static, crate::Result<DeletePermissionResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for DeletePermissionBuilder {
type IntoFuture = DeletePermission;
type Output = <DeletePermission as std::future::Future>::Output;
Original file line number Diff line number Diff line change
@@ -52,7 +52,6 @@ impl DeleteStoredProcedureBuilder {
pub type DeleteStoredProcedure =
futures::future::BoxFuture<'static, crate::Result<DeleteStoredProcedureResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for DeleteStoredProcedureBuilder {
type IntoFuture = DeleteStoredProcedure;
type Output = <DeleteStoredProcedure as std::future::Future>::Output;
1 change: 0 additions & 1 deletion sdk/data_cosmos/src/operations/delete_trigger.rs
Original file line number Diff line number Diff line change
@@ -53,7 +53,6 @@ impl DeleteTriggerBuilder {
/// The future returned by calling `into_future` on the builder.
pub type DeleteTrigger = futures::future::BoxFuture<'static, crate::Result<DeleteTriggerResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for DeleteTriggerBuilder {
type IntoFuture = DeleteTrigger;
type Output = <DeleteTrigger as std::future::Future>::Output;
1 change: 0 additions & 1 deletion sdk/data_cosmos/src/operations/delete_user.rs
Original file line number Diff line number Diff line change
@@ -47,7 +47,6 @@ impl DeleteUserBuilder {
/// The future returned by calling `into_future` on the builder.
pub type DeleteUser = futures::future::BoxFuture<'static, crate::Result<DeleteUserResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for DeleteUserBuilder {
type IntoFuture = DeleteUser;
type Output = <DeleteUser as std::future::Future>::Output;
Original file line number Diff line number Diff line change
@@ -52,7 +52,6 @@ impl DeleteUserDefinedFunctionBuilder {
}
}

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for DeleteUserDefinedFunctionBuilder {
type IntoFuture = DeleteUserDefinedFunction;
type Output = <DeleteUserDefinedFunction as std::future::Future>::Output;
1 change: 0 additions & 1 deletion sdk/data_cosmos/src/operations/get_attachment.rs
Original file line number Diff line number Diff line change
@@ -61,7 +61,6 @@ impl GetAttachmentBuilder {
}
}

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for GetAttachmentBuilder {
type IntoFuture = GetAttachment;
type Output = <GetAttachment as std::future::Future>::Output;
1 change: 0 additions & 1 deletion sdk/data_cosmos/src/operations/get_collection.rs
Original file line number Diff line number Diff line change
@@ -53,7 +53,6 @@ impl GetCollectionBuilder {
/// The future returned by calling `into_future` on the builder.
pub type GetCollection = futures::future::BoxFuture<'static, crate::Result<GetCollectionResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for GetCollectionBuilder {
type IntoFuture = GetCollection;
type Output = <GetCollection as std::future::Future>::Output;
1 change: 0 additions & 1 deletion sdk/data_cosmos/src/operations/get_database.rs
Original file line number Diff line number Diff line change
@@ -46,7 +46,6 @@ impl GetDatabaseBuilder {
/// The future returned by calling `into_future` on the builder.
pub type GetDatabase = futures::future::BoxFuture<'static, crate::Result<GetDatabaseResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for GetDatabaseBuilder {
type IntoFuture = GetDatabase;
type Output = <GetDatabase as std::future::Future>::Output;
22 changes: 19 additions & 3 deletions sdk/data_cosmos/src/operations/get_document.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
use std::future::IntoFuture;
use std::marker;

use crate::headers::from_headers::*;
use crate::prelude::*;
use crate::resources::Document;
@@ -10,22 +13,24 @@ use http::{HeaderMap, StatusCode};
use serde::de::DeserializeOwned;

#[derive(Debug, Clone)]
pub struct GetDocumentBuilder {
pub struct GetDocumentBuilder<T> {
client: DocumentClient,
if_match_condition: Option<IfMatchCondition>,
if_modified_since: Option<IfModifiedSince>,
consistency_level: Option<ConsistencyLevel>,
context: Context,
_phantom: marker::PhantomData<T>,
}

impl GetDocumentBuilder {
impl<T> GetDocumentBuilder<T> {
pub(crate) fn new(client: DocumentClient) -> Self {
Self {
client,
if_match_condition: None,
if_modified_since: None,
consistency_level: None,
context: Context::new(),
_phantom: marker::PhantomData,
}
}

@@ -35,13 +40,15 @@ impl GetDocumentBuilder {
if_modified_since: DateTime<Utc> => Some(IfModifiedSince::new(if_modified_since)),
context: Context => context,
}
}

impl<T: DeserializeOwned + Send + 'static> GetDocumentBuilder<T> {
/// Convert into a future
///
/// We do not implement `std::future::IntoFuture` because it requires the ability for the
/// output of the future to be generic which is not possible in Rust (as of 1.59). Once
/// generic associated types (GATs) stabilize, this will become possible.
pub fn into_future<T: DeserializeOwned>(self) -> GetDocument<T> {
pub fn into_future(self) -> GetDocument<T> {
Box::pin(async move {
let mut request = self
.client
@@ -68,6 +75,15 @@ impl GetDocumentBuilder {
}
}

impl<T: DeserializeOwned + Send + 'static> IntoFuture for GetDocumentBuilder<T> {
type IntoFuture = GetDocument<T>;
type Output = crate::Result<GetDocumentResponse<T>>;

fn into_future(self) -> Self::IntoFuture {
self.into_future()
}
}

/// The future returned by calling `into_future` on the builder.
pub type GetDocument<T> =
futures::future::BoxFuture<'static, crate::Result<GetDocumentResponse<T>>>;
Original file line number Diff line number Diff line change
@@ -67,7 +67,6 @@ impl GetPartitionKeyRangesBuilder {
pub type GetPartitionKeyRanges =
futures::future::BoxFuture<'static, crate::Result<GetPartitionKeyRangesResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for GetPartitionKeyRangesBuilder {
type IntoFuture = GetPartitionKeyRanges;
type Output = <GetPartitionKeyRanges as std::future::Future>::Output;
1 change: 0 additions & 1 deletion sdk/data_cosmos/src/operations/get_permission.rs
Original file line number Diff line number Diff line change
@@ -48,7 +48,6 @@ impl GetPermissionBuilder {
/// The future returned by calling `into_future` on the builder.
pub type GetPermission = futures::future::BoxFuture<'static, crate::Result<PermissionResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for GetPermissionBuilder {
type IntoFuture = GetPermission;
type Output = <GetPermission as std::future::Future>::Output;
1 change: 0 additions & 1 deletion sdk/data_cosmos/src/operations/get_user.rs
Original file line number Diff line number Diff line change
@@ -47,7 +47,6 @@ impl GetUserBuilder {
/// The future returned by calling `into_future` on the builder.
pub type GetUser = futures::future::BoxFuture<'static, crate::Result<UserResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for GetUserBuilder {
type IntoFuture = GetUser;
type Output = <GetUser as std::future::Future>::Output;
1 change: 0 additions & 1 deletion sdk/data_cosmos/src/operations/replace_collection.rs
Original file line number Diff line number Diff line change
@@ -67,7 +67,6 @@ impl ReplaceCollectionBuilder {
pub type ReplaceCollection =
futures::future::BoxFuture<'static, crate::Result<ReplaceCollectionResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for ReplaceCollectionBuilder {
type IntoFuture = ReplaceCollection;
type Output = <ReplaceCollection as std::future::Future>::Output;
1 change: 0 additions & 1 deletion sdk/data_cosmos/src/operations/replace_document.rs
Original file line number Diff line number Diff line change
@@ -93,7 +93,6 @@ impl<D: Serialize + Send + 'static> ReplaceDocumentBuilder<D> {
pub type ReplaceDocument =
futures::future::BoxFuture<'static, crate::Result<ReplaceDocumentResponse>>;

#[cfg(feature = "into_future")]
impl<D: Serialize + Send + 'static> std::future::IntoFuture for ReplaceDocumentBuilder<D> {
type IntoFuture = ReplaceDocument;
type Output = <ReplaceDocument as std::future::Future>::Output;
1 change: 0 additions & 1 deletion sdk/data_cosmos/src/operations/replace_permission.rs
Original file line number Diff line number Diff line change
@@ -70,7 +70,6 @@ impl ReplacePermissionBuilder {
/// The future returned by calling `into_future` on the builder.
pub type ReplacePermission = futures::future::BoxFuture<'static, crate::Result<PermissionResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for ReplacePermissionBuilder {
type IntoFuture = ReplacePermission;
type Output = <ReplacePermission as std::future::Future>::Output;
Original file line number Diff line number Diff line change
@@ -59,7 +59,6 @@ impl ReplaceStoredProcedureBuilder {
}
}

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for ReplaceStoredProcedureBuilder {
type IntoFuture = ReplaceStoredProcedure;
type Output = <ReplaceStoredProcedure as std::future::Future>::Output;
1 change: 0 additions & 1 deletion sdk/data_cosmos/src/operations/replace_user.rs
Original file line number Diff line number Diff line change
@@ -57,7 +57,6 @@ struct ReplaceUserBody<'a> {
/// The future returned by calling `into_future` on the builder.
pub type ReplaceUser = futures::future::BoxFuture<'static, crate::Result<UserResponse>>;

#[cfg(feature = "into_future")]
impl std::future::IntoFuture for ReplaceUserBuilder {
type IntoFuture = ReplaceUser;
type Output = <ReplaceUser as std::future::Future>::Output;
21 changes: 3 additions & 18 deletions sdk/data_cosmos/tests/attachment_00.rs
Original file line number Diff line number Diff line change
@@ -35,11 +35,7 @@ async fn attachment() -> Result<(), azure_data_cosmos::Error> {
let client = setup::initialize().unwrap();

// create a temp database
let _create_database_response = client
.create_database(DATABASE_NAME)
.into_future()
.await
.unwrap();
let _create_database_response = client.create_database(DATABASE_NAME).await.unwrap();

let database = client.database_client(DATABASE_NAME);

@@ -67,7 +63,6 @@ async fn attachment() -> Result<(), azure_data_cosmos::Error> {
.create_collection(COLLECTION_NAME, "/id")
.offer(Offer::Throughput(400))
.indexing_policy(ip)
.into_future()
.await
.unwrap()
};
@@ -84,11 +79,7 @@ async fn attachment() -> Result<(), azure_data_cosmos::Error> {
};

// let's add an entity.
let session_token: ConsistencyLevel = collection
.create_document(doc.clone())
.into_future()
.await?
.into();
let session_token: ConsistencyLevel = collection.create_document(doc.clone()).await?.into();

let document = collection.document_client(id.clone(), &doc.id)?;

@@ -107,14 +98,12 @@ async fn attachment() -> Result<(), azure_data_cosmos::Error> {
let resp = attachment
.create_attachment("https://www.bing.com", "image/jpeg")
.consistency_level(&ret)
.into_future()
.await?;

// replace reference attachment
let resp = attachment
.replace_attachment("https://www.microsoft.com", "image/jpeg")
.consistency_level(&resp)
.into_future()
.await?;

// create slug attachment
@@ -123,7 +112,6 @@ async fn attachment() -> Result<(), azure_data_cosmos::Error> {
.create_slug("something cool here".into())
.consistency_level(&resp)
.content_type("text/plain")
.into_future()
.await?;

// list attachments, there must be two.
@@ -141,7 +129,6 @@ async fn attachment() -> Result<(), azure_data_cosmos::Error> {
.attachment_client("reference")
.get()
.consistency_level(&ret)
.into_future()
.await?;
assert_eq!(
"https://www.microsoft.com",
@@ -154,7 +141,6 @@ async fn attachment() -> Result<(), azure_data_cosmos::Error> {
.attachment_client("slug")
.get()
.consistency_level(&reference_attachment)
.into_future()
.await
.unwrap();
assert_eq!("text/plain", slug_attachment.attachment.content_type);
@@ -163,7 +149,6 @@ async fn attachment() -> Result<(), azure_data_cosmos::Error> {
let resp_delete = attachment
.delete()
.consistency_level(&slug_attachment)
.into_future()
.await?;

// list attachments, there must be one.
@@ -177,7 +162,7 @@ async fn attachment() -> Result<(), azure_data_cosmos::Error> {
assert_eq!(1, ret.attachments.len());

// delete the database
database.delete_database().into_future().await?;
database.delete_database().await?;

Ok(())
}
14 changes: 5 additions & 9 deletions sdk/data_cosmos/tests/collection_operations.rs
Original file line number Diff line number Diff line change
@@ -15,18 +15,15 @@ async fn collection_operations() -> Result<(), BoxedError> {
let client = setup::initialize("collection_operations")?;
let database_name = "test-collection-operations";

client.create_database(database_name).into_future().await?;
client.create_database(database_name).await?;

// create collection!
let database = client.database_client(database_name.clone());

let collection_name = "sample_collection";
log::info!("Creating a collection with name '{}'...", collection_name);

let create_collection_response = database
.create_collection(collection_name, "/id")
.into_future()
.await?;
let create_collection_response = database.create_collection(collection_name, "/id").await?;

assert_eq!(create_collection_response.collection.id, collection_name);

@@ -39,7 +36,7 @@ async fn collection_operations() -> Result<(), BoxedError> {
let collection = database.collection_client(collection_name);

// get collection!
let get_collection_response = collection.get_collection().into_future().await?;
let get_collection_response = collection.get_collection().await?;

assert_eq!(get_collection_response.collection.id, collection_name);

@@ -75,7 +72,6 @@ async fn collection_operations() -> Result<(), BoxedError> {
let replace_collection_response = collection
.replace_collection("/id")
.indexing_policy(new_indexing_policy)
.into_future()
.await?;

assert_eq!(replace_collection_response.collection.id, collection_name);
@@ -104,15 +100,15 @@ async fn collection_operations() -> Result<(), BoxedError> {
);

// delete collection!
let delete_collection_response = collection.delete_collection().into_future().await?;
let delete_collection_response = collection.delete_collection().await?;

log::info!("Successfully deleted collection");
log::debug!(
"The delete_collection response: {:#?}",
delete_collection_response
);

database.delete_database().into_future().await.unwrap();
database.delete_database().await.unwrap();

Ok(())
}
29 changes: 7 additions & 22 deletions sdk/data_cosmos/tests/cosmos_collection.rs
Original file line number Diff line number Diff line change
@@ -12,18 +12,13 @@ async fn create_and_delete_collection() {

let client = setup::initialize().unwrap();

client
.create_database(DATABASE_NAME)
.into_future()
.await
.unwrap();
client.create_database(DATABASE_NAME).await.unwrap();

let database = client.database_client(DATABASE_NAME);

// create a new collection
let collection = database
.create_collection(COLLECTION_NAME, "/id")
.into_future()
.await
.unwrap();
let collections = Box::pin(database.list_collections().into_stream())
@@ -37,26 +32,22 @@ async fn create_and_delete_collection() {
let rid = collection.collection.rid;
let collection = database.collection_client(COLLECTION_NAME);

let collection_after_get = collection.get_collection().into_future().await.unwrap();
let collection_after_get = collection.get_collection().await.unwrap();
assert!(rid == collection_after_get.collection.rid);

// check GetPartitionKeyRanges: https://docs.microsoft.com/rest/api/cosmos-db/get-partition-key-ranges
collection
.get_partition_key_ranges()
.into_future()
.await
.unwrap();
collection.get_partition_key_ranges().await.unwrap();

// delete the collection
collection.delete_collection().into_future().await.unwrap();
collection.delete_collection().await.unwrap();
let collections = Box::pin(database.list_collections().into_stream())
.next()
.await
.unwrap()
.unwrap();
assert!(collections.collections.len() == 0);

database.delete_database().into_future().await.unwrap();
database.delete_database().await.unwrap();
}

#[tokio::test]
@@ -65,11 +56,7 @@ async fn replace_collection() {
const DATABASE_NAME: &str = "test-cosmos-db";
const COLLECTION_NAME: &str = "test-collection";

client
.create_database(DATABASE_NAME)
.into_future()
.await
.unwrap();
client.create_database(DATABASE_NAME).await.unwrap();

let database = client.database_client(DATABASE_NAME);

@@ -85,7 +72,6 @@ async fn replace_collection() {
.create_collection(COLLECTION_NAME, "/id")
.offer(Offer::S2)
.indexing_policy(indexing_policy)
.into_future()
.await
.unwrap();

@@ -127,7 +113,6 @@ async fn replace_collection() {
.collection_client(COLLECTION_NAME)
.replace_collection("/id")
.indexing_policy(new_ip)
.into_future()
.await
.unwrap();

@@ -145,5 +130,5 @@ async fn replace_collection() {
.collect();
assert!(eps.len() > 0);

database.delete_database().into_future().await.unwrap();
database.delete_database().await.unwrap();
}
8 changes: 1 addition & 7 deletions sdk/data_cosmos/tests/cosmos_database.rs
Original file line number Diff line number Diff line change
@@ -20,11 +20,7 @@ async fn create_and_delete_database() {
let database_count_before = databases.databases.len();

// create a new database and check if the number of DBs increased
let database = client
.create_database(DATABASE_NAME)
.into_future()
.await
.unwrap();
let database = client.create_database(DATABASE_NAME).await.unwrap();

let databases = Box::pin(client.list_databases().into_stream())
.next()
@@ -38,7 +34,6 @@ async fn create_and_delete_database() {
let database_after_get = client
.database_client(DATABASE_NAME)
.get_database()
.into_future()
.await
.unwrap();
assert!(database.database.rid == database_after_get.database.rid);
@@ -47,7 +42,6 @@ async fn create_and_delete_database() {
client
.database_client(DATABASE_NAME)
.delete_database()
.into_future()
.await
.unwrap();

45 changes: 9 additions & 36 deletions sdk/data_cosmos/tests/cosmos_document.rs
Original file line number Diff line number Diff line change
@@ -30,11 +30,7 @@ async fn create_and_delete_document() {

let client = setup::initialize().unwrap();

client
.create_database(DATABASE_NAME)
.into_future()
.await
.unwrap();
client.create_database(DATABASE_NAME).await.unwrap();

let database = client.database_client(DATABASE_NAME);

@@ -50,7 +46,6 @@ async fn create_and_delete_document() {
.create_collection(COLLECTION_NAME, "/id")
.offer(Offer::Throughput(400))
.indexing_policy(indexing_policy)
.into_future()
.await
.unwrap();

@@ -63,7 +58,6 @@ async fn create_and_delete_document() {
};
collection
.create_document(document_data.clone())
.into_future()
.await
.unwrap();

@@ -82,11 +76,7 @@ async fn create_and_delete_document() {
.document_client(DOCUMENT_NAME, &DOCUMENT_NAME)
.unwrap();

let document_after_get = document
.get_document()
.into_future::<MyDocument>()
.await
.unwrap();
let document_after_get = document.get_document::<MyDocument>().await.unwrap();

if let GetDocumentResponse::Found(document) = document_after_get {
assert_eq!(document.document.document, document_data);
@@ -95,7 +85,7 @@ async fn create_and_delete_document() {
}

// delete document
document.delete_document().into_future().await.unwrap();
document.delete_document().await.unwrap();

let documents = collection
.list_documents()
@@ -107,7 +97,7 @@ async fn create_and_delete_document() {
.documents;
assert!(documents.len() == 0);

database.delete_database().into_future().await.unwrap();
database.delete_database().await.unwrap();
}

#[tokio::test]
@@ -118,11 +108,7 @@ async fn query_documents() {

let client = setup::initialize().unwrap();

client
.create_database(DATABASE_NAME)
.into_future()
.await
.unwrap();
client.create_database(DATABASE_NAME).await.unwrap();
let database = client.database_client(DATABASE_NAME);

// create a new collection
@@ -137,7 +123,6 @@ async fn query_documents() {
.create_collection(COLLECTION_NAME, "/id")
.indexing_policy(indexing_policy)
.offer(Offer::S2)
.into_future()
.await
.unwrap();

@@ -150,7 +135,6 @@ async fn query_documents() {
};
collection
.create_document(document_data.clone())
.into_future()
.await
.unwrap();

@@ -181,7 +165,7 @@ async fn query_documents() {
assert!(query_result[0].document_attributes.rid() == documents[0].document_attributes.rid());
assert_eq!(query_result[0].result, document_data);

database.delete_database().into_future().await.unwrap();
database.delete_database().await.unwrap();
}

#[tokio::test]
@@ -192,11 +176,7 @@ async fn replace_document() {

let client = setup::initialize().unwrap();

client
.create_database(DATABASE_NAME)
.into_future()
.await
.unwrap();
client.create_database(DATABASE_NAME).await.unwrap();
let database = client.database_client(DATABASE_NAME);

// create a new collection
@@ -211,7 +191,6 @@ async fn replace_document() {
.create_collection(COLLECTION_NAME, "/id")
.indexing_policy(indexing_policy)
.offer(Offer::S2)
.into_future()
.await
.unwrap();

@@ -224,7 +203,6 @@ async fn replace_document() {
};
collection
.create_document(document_data.clone())
.into_future()
.await
.unwrap();

@@ -250,25 +228,20 @@ async fn replace_document() {
.etag()
.to_string(),
))
.into_future()
.await
.unwrap();

// now get the replaced document
let document = collection
.document_client(DOCUMENT_NAME, &DOCUMENT_NAME)
.unwrap();
let document_after_get = document
.get_document()
.into_future::<MyDocument>()
.await
.unwrap();
let document_after_get = document.get_document::<MyDocument>().await.unwrap();

if let GetDocumentResponse::Found(document) = document_after_get {
assert!(document.document.document.hello == 190);
} else {
panic!("document not found");
}

database.delete_database().into_future().await.unwrap();
database.delete_database().await.unwrap();
}
9 changes: 3 additions & 6 deletions sdk/data_cosmos/tests/create_database_and_collection.rs
Original file line number Diff line number Diff line change
@@ -17,7 +17,7 @@ async fn create_database_and_collection() -> Result<(), BoxedError> {

// create database!
log::info!("Creating a database with name '{}'...", database_name);
let db = client.create_database(&database_name).into_future().await?;
let db = client.create_database(&database_name).await?;
log::info!("Successfully created a database");
log::debug!("The create_database response: {:#?}", db);

@@ -27,10 +27,7 @@ async fn create_database_and_collection() -> Result<(), BoxedError> {
let database = client.database_client(database_name.clone());
let collection_name = "panzadoro";
log::info!("Creating a collection with name '{}'...", collection_name);
let collection = database
.create_collection(collection_name, "/id")
.into_future()
.await?;
let collection = database.create_collection(collection_name, "/id").await?;
assert_eq!(collection.collection.id, collection_name);
log::info!("Successfully created a collection");
log::debug!("The create_collection response: {:#?}", collection);
@@ -47,7 +44,7 @@ async fn create_database_and_collection() -> Result<(), BoxedError> {

// delete database
log::info!("Deleting the database...");
let deleted_database = database.delete_database().into_future().await?;
let deleted_database = database.delete_database().await?;
log::info!("Successfully deleted database");
log::debug!("The delete_database response: {:#?}", deleted_database);

15 changes: 4 additions & 11 deletions sdk/data_cosmos/tests/permission.rs
Original file line number Diff line number Diff line change
@@ -16,24 +16,19 @@ async fn permissions() {
let client = setup::initialize().unwrap();

// create a temp database
let _create_database_response = client
.create_database(DATABASE_NAME)
.into_future()
.await
.unwrap();
let _create_database_response = client.create_database(DATABASE_NAME).await.unwrap();

let database = client.database_client(DATABASE_NAME);

// create two users
let user1 = database.user_client(USER_NAME1);
let _create_user_response = user1.create_user().into_future().await.unwrap();
let _create_user_response = user1.create_user().await.unwrap();
let user2 = database.user_client(USER_NAME2);
let _create_user_response = user2.create_user().into_future().await.unwrap();
let _create_user_response = user2.create_user().await.unwrap();

// create a temp collection
let create_collection_response = database
.create_collection(COLLECTION_NAME, "/id")
.into_future()
.await
.unwrap();

@@ -44,14 +39,12 @@ async fn permissions() {
let _create_permission_user1_response = permission_user1
.create_permission(create_collection_response.collection.all_permission())
.expiry_seconds(18000u64) // 5 hours, max!
.into_future()
.await
.unwrap();

let _create_permission_user2_response = permission_user2
.create_permission(create_collection_response.collection.read_permission())
.expiry_seconds(18000u64) // 5 hours, max!
.into_future()
.await
.unwrap();

@@ -74,5 +67,5 @@ async fn permissions() {
assert_eq!(list_permissions_response.permissions.len(), 1);

// delete the database
database.delete_database().into_future().await.unwrap();
database.delete_database().await.unwrap();
}
17 changes: 4 additions & 13 deletions sdk/data_cosmos/tests/permission_token_usage.rs
Original file line number Diff line number Diff line change
@@ -31,11 +31,7 @@ async fn permission_token_usage() {
let mut client = setup::initialize().unwrap();

// create a temp database
let _create_database_response = client
.create_database(DATABASE_NAME)
.into_future()
.await
.unwrap();
let _create_database_response = client.create_database(DATABASE_NAME).await.unwrap();

let database = client.database_client(DATABASE_NAME);

@@ -51,12 +47,11 @@ async fn permission_token_usage() {
.create_collection(COLLECTION_NAME, "/id")
.offer(Offer::Throughput(400))
.indexing_policy(indexing_policy)
.into_future()
.await
.unwrap();

let user = database.user_client(USER_NAME);
user.create_user().into_future().await.unwrap();
user.create_user().await.unwrap();

// create the RO permission
let permission = user.permission(PERMISSION);
@@ -65,7 +60,6 @@ async fn permission_token_usage() {
let create_permission_response = permission
.create_permission(permission_mode)
.expiry_seconds(18000u64) // 5 hours, max!
.into_future()
.await
.unwrap();

@@ -102,18 +96,16 @@ async fn permission_token_usage() {
new_collection
.create_document(document.clone())
.is_upsert(true)
.into_future()
.await
.unwrap_err();

permission.delete_permission().into_future().await.unwrap();
permission.delete_permission().await.unwrap();

// All includes read and write.
let permission_mode = create_collection_response.collection.all_permission();
let create_permission_response = permission
.create_permission(permission_mode)
.expiry_seconds(18000u64) // 5 hours, max!
.into_future()
.await
.unwrap();

@@ -130,7 +122,6 @@ async fn permission_token_usage() {
let create_document_response = new_collection
.create_document(document)
.is_upsert(true)
.into_future()
.await
.unwrap();
println!(
@@ -139,5 +130,5 @@ async fn permission_token_usage() {
);

// cleanup
database.delete_database().into_future().await.unwrap();
database.delete_database().await.unwrap();
}
12 changes: 2 additions & 10 deletions sdk/data_cosmos/tests/trigger.rs
Original file line number Diff line number Diff line change
@@ -43,19 +43,14 @@ async fn trigger() -> Result<(), azure_data_cosmos::Error> {
let client = setup::initialize().unwrap();

// create a temp database
let _create_database_response = client
.create_database(DATABASE_NAME)
.into_future()
.await
.unwrap();
let _create_database_response = client.create_database(DATABASE_NAME).await.unwrap();

let database = client.database_client(DATABASE_NAME);

// create a temp collection
let _create_collection_response = {
database
.create_collection(COLLECTION_NAME, "/id")
.into_future()
.await
.unwrap()
};
@@ -69,7 +64,6 @@ async fn trigger() -> Result<(), azure_data_cosmos::Error> {
trigger::TriggerType::Post,
trigger::TriggerOperation::All,
)
.into_future()
.await?;

let ret = trigger
@@ -79,7 +73,6 @@ async fn trigger() -> Result<(), azure_data_cosmos::Error> {
trigger::TriggerOperation::All,
)
.consistency_level(ret)
.into_future()
.await?;

let mut last_session_token: Option<ConsistencyLevel> = None;
@@ -97,11 +90,10 @@ async fn trigger() -> Result<(), azure_data_cosmos::Error> {
let _ret = trigger
.delete_trigger()
.consistency_level(last_session_token.unwrap())
.into_future()
.await?;

// delete the database
database.delete_database().into_future().await?;
database.delete_database().await?;

Ok(())
}
19 changes: 5 additions & 14 deletions sdk/data_cosmos/tests/user.rs
Original file line number Diff line number Diff line change
@@ -16,11 +16,7 @@ async fn users() {
let client = setup::initialize().unwrap();

// create a temp database
let _create_database_response = client
.create_database(DATABASE_NAME)
.into_future()
.await
.unwrap();
let _create_database_response = client.create_database(DATABASE_NAME).await.unwrap();

let databases = Box::pin(client.list_databases().into_stream())
.next()
@@ -31,7 +27,7 @@ async fn users() {
let database = client.database_client(DATABASE_NAME);
let user = database.user_client(USER_NAME);

let _create_user_response = user.create_user().into_future().await.unwrap();
let _create_user_response = user.create_user().await.unwrap();

let list_users_response = Box::pin(database.list_users().into_stream())
.next()
@@ -41,16 +37,12 @@ async fn users() {

assert_eq!(list_users_response.users.len(), 1);

let get_user_response = user.get_user().into_future().await;
let get_user_response = user.get_user().await;
assert!(get_user_response.is_ok());
let retrieved_user = get_user_response.unwrap();
assert_eq!(retrieved_user.user.id, USER_NAME);

let _replace_user_response = user
.replace_user(USER_NAME_REPLACED)
.into_future()
.await
.unwrap();
let _replace_user_response = user.replace_user(USER_NAME_REPLACED).await.unwrap();

let list_users_response = Box::pin(database.list_users().into_stream())
.next()
@@ -61,7 +53,7 @@ async fn users() {

let user = database.user_client(USER_NAME_REPLACED);

let _delete_user_response = user.delete_user().into_future().await.unwrap();
let _delete_user_response = user.delete_user().await.unwrap();

let list_users_response = Box::pin(database.list_users().into_stream())
.next()
@@ -74,7 +66,6 @@ async fn users() {
client
.database_client(DATABASE_NAME)
.delete_database()
.into_future()
.await
.unwrap();

12 changes: 2 additions & 10 deletions sdk/data_cosmos/tests/user_defined_function00.rs
Original file line number Diff line number Diff line change
@@ -25,18 +25,13 @@ async fn user_defined_function00() -> Result<(), azure_data_cosmos::Error> {
let client = setup::initialize().unwrap();

// create a temp database
let _create_database_response = client
.create_database(DATABASE_NAME)
.into_future()
.await
.unwrap();
let _create_database_response = client.create_database(DATABASE_NAME).await.unwrap();

let database = client.database_client(DATABASE_NAME);

// create a temp collection
let _create_collection_response = database
.create_collection(COLLECTION_NAME, "/id")
.into_future()
.await
.unwrap();

@@ -45,7 +40,6 @@ async fn user_defined_function00() -> Result<(), azure_data_cosmos::Error> {

let ret = user_defined_function
.create_user_defined_function("body")
.into_future()
.await?;

let stream = collection
@@ -61,7 +55,6 @@ async fn user_defined_function00() -> Result<(), azure_data_cosmos::Error> {
let ret = user_defined_function
.replace_user_defined_function(FN_BODY)
.consistency_level(&ret)
.into_future()
.await?;

let query_stmt = format!("SELECT udf.{}(100)", USER_DEFINED_FUNCTION_NAME);
@@ -108,11 +101,10 @@ async fn user_defined_function00() -> Result<(), azure_data_cosmos::Error> {
let _ret = user_defined_function
.delete_user_defined_function()
.consistency_level(&ret)
.into_future()
.await?;

// delete the database
database.delete_database().into_future().await?;
database.delete_database().await?;

Ok(())
}
Original file line number Diff line number Diff line change
@@ -79,12 +79,11 @@ impl<'a> CreateOrUpdateDeviceIdentityBuilder<'a> {
let body = azure_core::to_json(&body)?;
let request = request.body(body)?;

Ok(self
.service_client
self.service_client
.http_client()
.execute_request_check_status(request, http::StatusCode::OK)
.await?
.try_into()?)
.try_into()
}
}

Original file line number Diff line number Diff line change
@@ -69,12 +69,11 @@ impl<'a> CreateOrUpdateModuleIdentityBuilder<'a> {
let body = azure_core::to_json(&body)?;
let request = request.body(body)?;

Ok(self
.service_client
self.service_client
.http_client()
.execute_request_check_status(request, http::StatusCode::OK)
.await?
.try_into()?)
.try_into()
}
}

4 changes: 2 additions & 2 deletions sdk/iot_hub/src/service/requests/get_identity.rs
Original file line number Diff line number Diff line change
@@ -28,9 +28,9 @@ where
let request = service_client.prepare_request(&uri, Method::GET);
let request = request.body(azure_core::EMPTY_BODY)?;

Ok(service_client
service_client
.http_client()
.execute_request_check_status(request, StatusCode::OK)
.await?
.try_into()?)
.try_into()
}
4 changes: 2 additions & 2 deletions sdk/iot_hub/src/service/requests/get_twin.rs
Original file line number Diff line number Diff line change
@@ -29,9 +29,9 @@ where
let request = service_client.prepare_request(&uri, Method::GET);
let request = request.body(azure_core::EMPTY_BODY)?;

Ok(service_client
service_client
.http_client()
.execute_request_check_status(request, StatusCode::OK)
.await?
.try_into()?)
.try_into()
}
5 changes: 2 additions & 3 deletions sdk/iot_hub/src/service/requests/invoke_method_builder.rs
Original file line number Diff line number Diff line change
@@ -85,12 +85,11 @@ impl<'a> InvokeMethodBuilder<'a> {

let request = request.body(body)?;

Ok(self
.iot_hub_service
self.iot_hub_service
.http_client()
.execute_request_check_status(request, StatusCode::OK)
.await?
.try_into()?)
.try_into()
}
}

5 changes: 2 additions & 3 deletions sdk/iot_hub/src/service/requests/query_builder.rs
Original file line number Diff line number Diff line change
@@ -68,11 +68,10 @@ impl<'a, 'b> QueryBuilder<'a, 'b> {
let request = azure_core::headers::add_mandatory_header(&self.max_item_count, request);
let request = request.body(body)?;

Ok(self
.service_client
self.service_client
.http_client()
.execute_request_check_status(request, StatusCode::OK)
.await?
.try_into()?)
.try_into()
}
}
Original file line number Diff line number Diff line change
@@ -156,12 +156,11 @@ where

let request = request.body(body)?;

Ok(self
.service_client
self.service_client
.http_client()
.execute_request_check_status(request, StatusCode::OK)
.await?
.try_into()?)
.try_into()
}
}

2 changes: 1 addition & 1 deletion sdk/security_keyvault/src/certificate.rs
Original file line number Diff line number Diff line change
@@ -169,7 +169,7 @@ impl<'a, T: TokenCredential> CertificateClient<'a, T> {
/// Runtime::new().unwrap().block_on(example());
/// ```
pub async fn get_certificate(&mut self, name: &'a str) -> Result<KeyVaultCertificate, Error> {
Ok(self.get_certificate_with_version(name, "").await?)
self.get_certificate_with_version(name, "").await
}

/// Gets a certificate from the Key Vault with a specific version.
2 changes: 1 addition & 1 deletion sdk/security_keyvault/src/secret.rs
Original file line number Diff line number Diff line change
@@ -116,7 +116,7 @@ impl<'a, T: TokenCredential> KeyClient<'a, T> {
/// Runtime::new().unwrap().block_on(example());
/// ```
pub async fn get_secret(&mut self, secret_name: &str) -> Result<KeyVaultSecret, Error> {
Ok(self.get_secret_with_version(secret_name, "").await?)
self.get_secret_with_version(secret_name, "").await
}

/// Gets a secret from the Key Vault with a specific version.