Skip to content

Commit 1946f4b

Browse files
committed
Merge in changes to pipeline context
1 parent 64cb87e commit 1946f4b

File tree

4 files changed

+26
-16
lines changed

4 files changed

+26
-16
lines changed

sdk/core/src/headers/mod.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,11 @@ pub fn add_mandatory_header<T: AddAsHeader>(item: &T, builder: Builder) -> Build
8383
item.add_as_header(builder)
8484
}
8585

86-
pub fn add_mandatory_header2<T: AddAsHeader>(item: &T, request: &mut crate::Request) {
87-
item.add_as_header2(request);
86+
pub fn add_mandatory_header2<T: AddAsHeader>(
87+
item: &T,
88+
request: &mut crate::Request,
89+
) -> Result<(), crate::errors::HTTPHeaderError> {
90+
item.add_as_header2(request)
8891
}
8992

9093
pub const SERVER: &str = "server";

sdk/cosmos/src/clients/collection_client.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
use super::{DatabaseClient, UserDefinedFunctionClient};
2+
use crate::authorization_policy::CosmosContext;
23
use crate::clients::*;
34
use crate::operations::*;
45
use crate::requests;
56
use crate::resources::ResourceType;
67
use crate::ReadonlyString;
8+
use azure_core::PipelineContext;
79
use azure_core::{pipeline::Pipeline, Context, HttpClient};
810
use serde::Serialize;
911

@@ -67,13 +69,15 @@ impl CollectionClient {
6769
document: &D,
6870
options: CreateDocumentOptions<'_>,
6971
) -> Result<CreateDocumentResponse, crate::Error> {
70-
let request = self.prepare_request_with_collection_name(http::Method::POST);
71-
let mut request = request.body(bytes::Bytes::new()).unwrap().into();
72-
let mut ctx = ctx.clone();
72+
let mut request = self
73+
.cosmos_client()
74+
.prepare_request_pipeline("collection", http::Method::POST);
75+
let mut pipeline_context = PipelineContext::new(ctx, ResourceType::Collections.into());
76+
7377
options.decorate_request(&mut request, document)?;
7478
let response = self
7579
.pipeline()
76-
.send(&mut ctx, &mut request)
80+
.send(&mut pipeline_context, &mut request)
7781
.await?
7882
.validate(http::StatusCode::CREATED)
7983
.await?;
@@ -155,7 +159,7 @@ impl CollectionClient {
155159
self.cosmos_client().http_client()
156160
}
157161

158-
pub(crate) fn pipeline(&self) -> &Pipeline {
162+
pub(crate) fn pipeline(&self) -> &Pipeline<CosmosContext> {
159163
self.cosmos_client().pipeline()
160164
}
161165
}

sdk/cosmos/src/lib.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ should also be possible with this crate.
1010
```no_run
1111
// Using the prelude module of the Cosmos crate makes easier to use the Rust Azure SDK for Cosmos DB.
1212
use azure_cosmos::prelude::*;
13+
use azure_core::Context;
1314
use serde::{Deserialize, Serialize};
1415
use std::error::Error;
1516
@@ -75,9 +76,11 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
7576
7677
// insert it
7778
collection_client
78-
.create_document()
79-
.is_upsert(true) // this option will overwrite a preexisting document (if any)
80-
.execute(&document_to_insert)
79+
.create_document(
80+
Context::new(),
81+
&document_to_insert,
82+
CreateDocumentOptions::new().is_upsert(true),
83+
)
8184
.await?;
8285
}
8386
// wow that was easy and fast, wasn't it? :)

sdk/cosmos/src/operations/create_document.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,12 @@ impl<'a> CreateDocumentOptions<'a> {
6868
.unwrap_or_else(|| serialize_partition_key(document).unwrap());
6969

7070
add_as_partition_key_header_serialized2(&partition_key, req);
71-
azure_core::headers::add_optional_header2(&self.if_match_condition, req);
72-
azure_core::headers::add_optional_header2(&self.if_modified_since, req);
73-
azure_core::headers::add_optional_header2(&self.consistency_level, req);
74-
azure_core::headers::add_mandatory_header2(&self.is_upsert, req);
75-
azure_core::headers::add_mandatory_header2(&self.indexing_directive, req);
76-
azure_core::headers::add_mandatory_header2(&self.allow_tentative_writes, req);
71+
azure_core::headers::add_optional_header2(&self.if_match_condition, req)?;
72+
azure_core::headers::add_optional_header2(&self.if_modified_since, req)?;
73+
azure_core::headers::add_optional_header2(&self.consistency_level, req)?;
74+
azure_core::headers::add_mandatory_header2(&self.is_upsert, req)?;
75+
azure_core::headers::add_mandatory_header2(&self.indexing_directive, req)?;
76+
azure_core::headers::add_mandatory_header2(&self.allow_tentative_writes, req)?;
7777

7878
req.set_body(bytes::Bytes::from(serialized).into());
7979
Ok(())

0 commit comments

Comments
 (0)