Skip to content

into_future even more #674

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

Merged
merged 9 commits into from
Mar 3, 2022
Merged
Show file tree
Hide file tree
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
16 changes: 8 additions & 8 deletions sdk/data_cosmos/examples/attachments_00.rs
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,12 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
println!("creating");
let attachment_client = document_client.clone().into_attachment_client("myref06");
let resp = attachment_client
.create_reference()
.consistency_level(ret)
.execute(
.create_reference(
"https://cdn.pixabay.com/photo/2020/01/11/09/30/abstract-background-4756987__340.jpg",
"image/jpeg",
)
.consistency_level(ret)
.into_future()
.await?;
println!("create reference == {:#?}", resp);

Expand All @@ -91,7 +91,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
let resp = attachment_client
.get()
.consistency_level(session_token)
.execute()
.into_future()
.await?;

println!("get attachment == {:#?}", resp);
Expand All @@ -113,18 +113,18 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
let resp_delete = attachment_client
.delete()
.consistency_level(&resp)
.execute()
.into_future()
.await?;
println!("delete attachment == {:#?}", resp_delete);

// slug attachment
println!("creating slug attachment");
let attachment_client = document_client.into_attachment_client("slug00".to_owned());
let resp = attachment_client
.create_slug()
.create_slug("FFFFF".into())
.consistency_level(&resp_delete)
.content_type("text/plain")
.execute("FFFFF")
.into_future()
.await?;

println!("create slug == {:#?}", resp);
Expand All @@ -133,7 +133,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
let resp_delete = attachment_client
.delete()
.consistency_level(&resp)
.execute()
.into_future()
.await?;
println!("delete attachment == {:#?}", resp_delete);

Expand Down
18 changes: 9 additions & 9 deletions sdk/data_cosmos/examples/trigger_00.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,25 +62,25 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
let trigger_client = collection_client.clone().into_trigger_client(trigger_name);

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

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

let mut last_session_token: Option<ConsistencyLevel> = None;

let stream = collection_client
let mut stream = collection_client
.list_triggers()
.max_item_count(3)
.consistency_level(&ret);
let mut stream = Box::pin(stream.stream());
.consistency_level(&ret)
.into_stream();
while let Some(ret) = stream.next().await {
let ret = ret.unwrap();
println!(
Expand All @@ -93,7 +93,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
let ret = trigger_client
.delete_trigger()
.consistency_level(last_session_token.unwrap())
.execute()
.into_future()
.await?;
println!("Delete response object:\n{:#?}", ret);

Expand Down
10 changes: 5 additions & 5 deletions sdk/data_cosmos/examples/user_defined_function_00.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
.into_user_defined_function_client("test15");

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

Expand All @@ -61,9 +61,9 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
}

let ret = user_defined_function_client
.replace_user_defined_function()
.replace_user_defined_function(FN_BODY)
.consistency_level(&ret)
.execute(FN_BODY)
.into_future()
.await?;
println!("Replace response object:\n{:#?}", ret);

Expand Down Expand Up @@ -95,7 +95,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
let ret = user_defined_function_client
.delete_user_defined_function()
.consistency_level(&ret)
.execute()
.into_future()
.await?;

println!("Delete response object:\n{:#?}", ret);
Expand Down
56 changes: 42 additions & 14 deletions sdk/data_cosmos/src/clients/attachment_client.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
use crate::operations::*;
use crate::requests;
use crate::resources::ResourceType;
use crate::ReadonlyString;
use azure_core::HttpClient;
use azure_core::Pipeline;
use azure_core::Request;
use bytes::Bytes;

use super::*;

Expand Down Expand Up @@ -50,28 +54,36 @@ impl AttachmentClient {
}

/// Initiate a request to get an attachment.
pub fn get(&self) -> requests::GetAttachmentBuilder<'_, '_> {
requests::GetAttachmentBuilder::new(self)
pub fn get(&self) -> GetAttachmentBuilder {
GetAttachmentBuilder::new(self.clone())
}

/// Initiate a request to delete an attachment.
pub fn delete(&self) -> requests::DeleteAttachmentBuilder<'_, '_> {
requests::DeleteAttachmentBuilder::new(self)
pub fn delete(&self) -> DeleteAttachmentBuilder {
DeleteAttachmentBuilder::new(self.clone())
}

/// Initiate a request to create an attachment with a slug.
pub fn create_slug(&self) -> requests::CreateSlugAttachmentBuilder<'_, '_> {
requests::CreateSlugAttachmentBuilder::new(self)
pub fn create_slug(&self, body: Bytes) -> CreateOrReplaceSlugAttachmentBuilder {
CreateOrReplaceSlugAttachmentBuilder::new(self.clone(), true, body)
}

/// Initiate a request to replace an attachment.
pub fn replace_slug(&self) -> requests::ReplaceSlugAttachmentBuilder<'_, '_> {
requests::ReplaceSlugAttachmentBuilder::new(self)
pub fn replace_slug(&self, body: Bytes) -> CreateOrReplaceSlugAttachmentBuilder {
CreateOrReplaceSlugAttachmentBuilder::new(self.clone(), false, body)
}

/// Initiate a request to create an attachment.
pub fn create_reference(&self) -> requests::CreateReferenceAttachmentBuilder<'_, '_> {
requests::CreateReferenceAttachmentBuilder::new(self)
/// Initiate a request to create ant.
pub fn create_reference<M, C>(
&self,
media: M,
content_type: C,
) -> CreateReferenceAttachmentBuilder
where
M: Into<String>,
C: Into<String>,
{
CreateReferenceAttachmentBuilder::new(self.clone(), media.into(), content_type.into())
}

/// Initiate a request to replace an attachment.
Expand All @@ -84,16 +96,15 @@ impl AttachmentClient {
self.cosmos_client().http_client()
}

pub(crate) fn prepare_request(&self, method: http::Method) -> http::request::Builder {
self.cosmos_client().prepare_request(
pub(crate) fn prepare_pipeline(&self, method: http::Method) -> Request {
self.cosmos_client().prepare_request_pipeline(
&format!(
"dbs/{}/colls/{}/docs/{}/attachments",
self.database_client().database_name(),
self.collection_client().collection_name(),
self.document_client().document_name(),
),
method,
ResourceType::Attachments,
)
}

Expand All @@ -113,4 +124,21 @@ impl AttachmentClient {
ResourceType::Attachments,
)
}

pub(crate) fn prepare_pipeline_with_attachment_name(&self, method: http::Method) -> Request {
self.cosmos_client().prepare_request_pipeline(
&format!(
"dbs/{}/colls/{}/docs/{}/attachments/{}",
self.database_client().database_name(),
self.collection_client().collection_name(),
self.document_client().document_name(),
self.attachment_name()
),
method,
)
}

pub(crate) fn pipeline(&self) -> &Pipeline {
self.cosmos_client().pipeline()
}
}
4 changes: 2 additions & 2 deletions sdk/data_cosmos/src/clients/collection_client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,8 @@ impl CollectionClient {
}

/// list triggers in a collection
pub fn list_triggers(&self) -> requests::ListTriggersBuilder<'_, '_> {
requests::ListTriggersBuilder::new(self)
pub fn list_triggers(&self) -> ListTriggersBuilder {
ListTriggersBuilder::new(self.clone())
}

/// list the partition key ranges in a collection
Expand Down
72 changes: 50 additions & 22 deletions sdk/data_cosmos/src/clients/trigger_client.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
use super::*;
use crate::resources::ResourceType;
use crate::{requests, ReadonlyString};
use azure_core::HttpClient;
use crate::operations::*;
use crate::resources::trigger::{TriggerOperation, TriggerType};
use crate::ReadonlyString;
use azure_core::{Pipeline, Request};

/// A client for Cosmos trigger resources.
#[derive(Debug, Clone)]
Expand Down Expand Up @@ -43,49 +44,76 @@ impl TriggerClient {
}

/// Create a trigger
pub fn create_trigger(&self) -> requests::CreateOrReplaceTriggerBuilder<'_> {
requests::CreateOrReplaceTriggerBuilder::new(self, true)
pub fn create_trigger<B, T, O>(
&self,
body: B,
trigger_type: T,
trigger_operation: O,
) -> CreateOrReplaceTriggerBuilder
where
B: Into<String>,
T: Into<TriggerType>,
O: Into<TriggerOperation>,
{
CreateOrReplaceTriggerBuilder::new(
self.clone(),
true,
body.into(),
trigger_type.into(),
trigger_operation.into(),
)
}

/// Replace a trigger
pub fn replace_trigger(&self) -> requests::CreateOrReplaceTriggerBuilder<'_> {
requests::CreateOrReplaceTriggerBuilder::new(self, false)
pub fn replace_trigger<B, T, O>(
&self,
body: B,
trigger_type: T,
trigger_operation: O,
) -> CreateOrReplaceTriggerBuilder
where
B: Into<String>,
T: Into<TriggerType>,
O: Into<TriggerOperation>,
{
CreateOrReplaceTriggerBuilder::new(
self.clone(),
false,
body.into(),
trigger_type.into(),
trigger_operation.into(),
)
}

/// Delete a trigger
pub fn delete_trigger(&self) -> requests::DeleteTriggerBuilder<'_, '_> {
requests::DeleteTriggerBuilder::new(self)
pub fn delete_trigger(&self) -> DeleteTriggerBuilder {
DeleteTriggerBuilder::new(self.clone())
}

pub(crate) fn http_client(&self) -> &dyn HttpClient {
self.cosmos_client().http_client()
}

pub(crate) fn prepare_request_with_trigger_name(
&self,
method: http::Method,
) -> http::request::Builder {
self.cosmos_client().prepare_request(
pub(crate) fn prepare_pipeline_with_trigger_name(&self, method: http::Method) -> Request {
self.cosmos_client().prepare_request_pipeline(
&format!(
"dbs/{}/colls/{}/triggers/{}",
self.database_client().database_name(),
self.collection_client().collection_name(),
self.trigger_name()
),
method,
ResourceType::Triggers,
)
}

pub(crate) fn prepare_request(&self, method: http::Method) -> http::request::Builder {
self.cosmos_client().prepare_request(
pub(crate) fn prepare_pipeline(&self, method: http::Method) -> Request {
self.cosmos_client().prepare_request_pipeline(
&format!(
"dbs/{}/colls/{}/triggers",
self.database_client().database_name(),
self.collection_client().collection_name(),
),
method,
ResourceType::Triggers,
)
}

pub(crate) fn pipeline(&self) -> &Pipeline {
self.cosmos_client().pipeline()
}
}
Loading