Skip to content

Commit e56a441

Browse files
committed
DeleteDatabase::into_future
1 parent 94cf13d commit e56a441

File tree

10 files changed

+54
-28
lines changed

10 files changed

+54
-28
lines changed

sdk/data_cosmos/examples/create_delete_database.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
7676

7777
let resp = client
7878
.into_database_client(database_name)
79-
.delete_database(Context::new(), DeleteDatabaseOptions::new())
79+
.delete_database()
80+
.into_future()
8081
.await?;
8182
println!("database deleted. resp == {:#?}", resp);
8283

sdk/data_cosmos/examples/document_00.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,8 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
196196
// And then we delete the database.
197197
client
198198
.into_database_client(database.id)
199-
.delete_database(Context::new(), DeleteDatabaseOptions::new())
199+
.delete_database()
200+
.into_future()
200201
.await?;
201202
println!("database deleted");
202203

sdk/data_cosmos/src/clients/database_client.rs

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -77,23 +77,8 @@ impl DatabaseClient {
7777
}
7878

7979
/// Delete the database
80-
pub async fn delete_database(
81-
&self,
82-
ctx: Context,
83-
options: DeleteDatabaseOptions,
84-
) -> crate::Result<DeleteDatabaseResponse> {
85-
let mut request = self.cosmos_client().prepare_request_pipeline(
86-
&format!("dbs/{}", self.database_name()),
87-
http::Method::DELETE,
88-
);
89-
90-
options.decorate_request(&mut request)?;
91-
let response = self
92-
.pipeline()
93-
.send(ctx.clone().insert(ResourceType::Databases), &mut request)
94-
.await?;
95-
96-
Ok(DeleteDatabaseResponse::try_from(response).await?)
80+
pub fn delete_database(&self) -> DeleteDatabaseBuilder {
81+
DeleteDatabaseBuilder::new(self.clone())
9782
}
9883

9984
/// List collections in the database

sdk/data_cosmos/src/operations/create_collection.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ impl CreateCollectionBuilder {
3737
consistency_level: ConsistencyLevel => Some(consistency_level),
3838
indexing_policy: IndexingPolicy => Some(indexing_policy),
3939
offer: Offer => Some(offer),
40+
context: Context => context,
4041
}
4142

4243
pub fn into_future(self) -> CreateCollection {

sdk/data_cosmos/src/operations/create_document.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ impl<D: Serialize + CosmosEntity + Send + 'static> CreateDocumentBuilder<D> {
4949
allow_tentative_writes: TentativeWritesAllowance,
5050
is_upsert: bool => if is_upsert { IsUpsert::Yes } else { IsUpsert::No },
5151
indexing_directive: IndexingDirective,
52+
context: Context => context,
5253
}
5354

5455
pub fn partition_key<PK: Serialize>(
@@ -95,7 +96,9 @@ impl<D: Serialize + CosmosEntity + Send + 'static> CreateDocumentBuilder<D> {
9596
type CreateDocument = futures::future::BoxFuture<'static, crate::Result<CreateDocumentResponse>>;
9697

9798
#[cfg(feature = "into_future")]
98-
impl <D: Serialize + CosmosEntity + Send + 'static> std::future::IntoFuture for CreateDocumentBuilder<D> {
99+
impl<D: Serialize + CosmosEntity + Send + 'static> std::future::IntoFuture
100+
for CreateDocumentBuilder<D>
101+
{
99102
type Future = CreateDocument;
100103
type Output = <CreateDocument as std::future::Future>::Output;
101104
fn into_future(self) -> Self::Future {

sdk/data_cosmos/src/operations/create_permission.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ impl CreatePermissionBuilder {
2626
setters! {
2727
expiry_seconds: u64 => Some(ExpirySeconds::new(expiry_seconds)),
2828
consistency_level: ConsistencyLevel => Some(consistency_level),
29+
context: Context => context,
2930
}
3031

3132
pub fn into_future(self) -> CreatePermission {

sdk/data_cosmos/src/operations/create_user.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ impl CreateUserBuilder {
1919

2020
setters! {
2121
consistency_level: ConsistencyLevel => Some(consistency_level),
22+
context: Context => context,
2223
}
2324

2425
pub fn into_future(self) -> CreateUser {

sdk/data_cosmos/src/operations/delete_collection.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ impl DeleteCollectionBuilder {
2222

2323
setters! {
2424
consistency_level: ConsistencyLevel => Some(consistency_level),
25+
context: Context => context,
2526
}
2627

2728
pub fn into_future(self) -> DeleteCollection {

sdk/data_cosmos/src/operations/delete_database.rs

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,60 @@ use crate::headers::from_headers::*;
22
use crate::prelude::*;
33
use crate::ResourceQuota;
44
use azure_core::headers::session_token_from_headers;
5-
use azure_core::Request as HttpRequest;
5+
use azure_core::Context;
66
use azure_core::Response as HttpResponse;
77

88
#[derive(Debug, Clone)]
9-
pub struct DeleteDatabaseOptions {
9+
pub struct DeleteDatabaseBuilder {
10+
client: DatabaseClient,
1011
consistency_level: Option<ConsistencyLevel>,
12+
context: Context,
1113
}
1214

13-
impl DeleteDatabaseOptions {
14-
pub fn new() -> Self {
15+
impl DeleteDatabaseBuilder {
16+
pub(crate) fn new(client: DatabaseClient) -> Self {
1517
Self {
18+
client,
1619
consistency_level: None,
20+
context: Context::new(),
1721
}
1822
}
1923

2024
setters! {
2125
consistency_level: ConsistencyLevel => Some(consistency_level),
26+
context: Context => context,
2227
}
2328

24-
pub fn decorate_request(&self, request: &mut HttpRequest) -> crate::Result<()> {
25-
azure_core::headers::add_optional_header2(&self.consistency_level, request)?;
26-
Ok(())
29+
pub fn into_future(self) -> DeleteDatabase {
30+
Box::pin(async move {
31+
let mut request = self.client.cosmos_client().prepare_request_pipeline(
32+
&format!("dbs/{}", self.client.database_name()),
33+
http::Method::DELETE,
34+
);
35+
36+
azure_core::headers::add_optional_header2(&self.consistency_level, &mut request)?;
37+
let response = self
38+
.client
39+
.pipeline()
40+
.send(
41+
self.context.clone().insert(ResourceType::Databases),
42+
&mut request,
43+
)
44+
.await?;
45+
46+
Ok(DeleteDatabaseResponse::try_from(response).await?)
47+
})
48+
}
49+
}
50+
51+
type DeleteDatabase = futures::future::BoxFuture<'static, crate::Result<DeleteDatabaseResponse>>;
52+
53+
#[cfg(feature = "into_future")]
54+
impl std::future::IntoFuture for DeleteDatabaseBuilder {
55+
type Future = DeleteDatabase;
56+
type Output = <DeleteDatabase as std::future::Future>::Output;
57+
fn into_future(self) -> Self::Future {
58+
Self::into_future(self)
2759
}
2860
}
2961

sdk/data_cosmos/tests/cosmos_document.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#![cfg(all(test, feature = "test_e2e"))]
22
use azure_core::Context;
33
use azure_data_cosmos::prelude::{
4-
CreateDocumentBuilder, DeleteDatabaseOptions, GetDocumentOptions,
4+
CreateDocumentBuilder, DeleteDatabaseBuilder, GetDocumentOptions,
55
};
66
use serde::{Deserialize, Serialize};
77

0 commit comments

Comments
 (0)