diff --git a/sdk/cosmos/examples/database_00.rs b/sdk/cosmos/examples/database_00.rs index 86b156e85f..7dd07c94eb 100644 --- a/sdk/cosmos/examples/database_00.rs +++ b/sdk/cosmos/examples/database_00.rs @@ -38,7 +38,7 @@ async fn main() -> Result<(), Box> { println!("collection == {:?}", collection); let collection_client = database.clone().into_collection_client(collection.id); - if collection_client.collection_name().name() == "democ" { + if collection_client.collection_name() == "democ" { println!("democ!"); let data = r#" diff --git a/sdk/cosmos/src/prelude.rs b/sdk/cosmos/src/prelude.rs index a7bd1a2c81..d4710ac7c6 100644 --- a/sdk/cosmos/src/prelude.rs +++ b/sdk/cosmos/src/prelude.rs @@ -25,9 +25,5 @@ pub use crate::resources::*; // Traits pub use crate::traits::*; -#[doc(inline)] -pub use database::DatabaseName; -#[doc(inline)] -pub use user::UserName; pub use permission::AuthorizationToken; diff --git a/sdk/cosmos/src/requests/create_collection_builder.rs b/sdk/cosmos/src/requests/create_collection_builder.rs index 0757da4405..3c63dac936 100644 --- a/sdk/cosmos/src/requests/create_collection_builder.rs +++ b/sdk/cosmos/src/requests/create_collection_builder.rs @@ -1,5 +1,5 @@ use crate::prelude::*; -use crate::resources::collection::{Collection, CollectionName, IndexingPolicy, PartitionKey}; +use crate::resources::collection::{Collection, IndexingPolicy, PartitionKey}; use crate::resources::ResourceType; use crate::responses::CreateCollectionResponse; use azure_core::prelude::*; @@ -27,7 +27,7 @@ pub struct CreateCollectionBuilder< p_indexing_policy: PhantomData, p_partition_key: PhantomData, offer: Option, - collection_name: Option<&'a dyn CollectionName>, + collection_name: Option<&'a str>, indexing_policy: Option<&'a IndexingPolicy>, partition_key: Option<&'a PartitionKey>, user_agent: Option<&'a str>, @@ -89,7 +89,7 @@ where IndexingPolicySet: ToAssign, PartitionKeySet: ToAssign, { - fn collection_name(&self) -> &'a dyn CollectionName { + fn collection_name(&self) -> &'a str { self.collection_name.unwrap() } } @@ -194,7 +194,7 @@ where { type O = CreateCollectionBuilder<'a, OfferSet, Yes, IndexingPolicySet, PartitionKeySet>; - fn with_collection_name(self, collection_name: &'a dyn CollectionName) -> Self::O { + fn with_collection_name(self, collection_name: &'a str) -> Self::O { CreateCollectionBuilder { database_client: self.database_client, p_offer: PhantomData {}, @@ -369,10 +369,8 @@ impl<'a> CreateCollectionBuilder<'a, Yes, Yes, Yes, Yes> { let req = ActivityIdOption::add_header(self, req); let req = ConsistencyLevelOption::add_header(self, req); - let mut collection = Collection::new( - self.collection_name().name(), - self.indexing_policy().to_owned(), - ); + let mut collection = + Collection::new(self.collection_name(), self.indexing_policy().to_owned()); collection.parition_key = self.partition_key().to_owned(); let body = serde_json::to_string(&collection)?; diff --git a/sdk/cosmos/src/requests/create_database_builder.rs b/sdk/cosmos/src/requests/create_database_builder.rs index 8ce427efe6..4c784d3851 100644 --- a/sdk/cosmos/src/requests/create_database_builder.rs +++ b/sdk/cosmos/src/requests/create_database_builder.rs @@ -14,7 +14,7 @@ where { cosmos_client: &'a CosmosClient, p_database_name: PhantomData, - database_name: Option<&'a dyn DatabaseName>, + database_name: Option<&'a str>, user_agent: Option<&'a str>, activity_id: Option<&'a str>, consistency_level: Option, @@ -46,7 +46,7 @@ where //set mandatory no traits methods impl<'a> DatabaseNameRequired<'a> for CreateDatabaseBuilder<'a, Yes> { - fn database_name(&self) -> &'a dyn DatabaseName { + fn database_name(&self) -> &'a str { self.database_name.unwrap() } } @@ -81,7 +81,7 @@ where impl<'a> DatabaseNameSupport<'a> for CreateDatabaseBuilder<'a, No> { type O = CreateDatabaseBuilder<'a, Yes>; - fn with_database_name(self, database_name: &'a dyn DatabaseName) -> Self::O { + fn with_database_name(self, database_name: &'a str) -> Self::O { CreateDatabaseBuilder { cosmos_client: self.cosmos_client, p_database_name: PhantomData {}, @@ -158,7 +158,7 @@ impl<'a> CreateDatabaseBuilder<'a, Yes> { } let req = serde_json::to_string(&CreateDatabaseRequest { - id: self.database_name().name(), + id: self.database_name(), })?; let request = self.cosmos_client().prepare_request( diff --git a/sdk/cosmos/src/requests/create_permission_builder.rs b/sdk/cosmos/src/requests/create_permission_builder.rs index 892751377d..35f62dbd73 100644 --- a/sdk/cosmos/src/requests/create_permission_builder.rs +++ b/sdk/cosmos/src/requests/create_permission_builder.rs @@ -116,7 +116,7 @@ impl<'a, 'b> CreatePermissionBuilder<'a, 'b> { &format!( "dbs/{}/users/{}/permissions", self.permission_client.database_client().database_name(), - self.permission_client.user_client().user_name().id(), + self.permission_client.user_client().user_name(), ), http::Method::POST, ResourceType::Permissions, diff --git a/sdk/cosmos/src/requests/create_reference_attachment_builder.rs b/sdk/cosmos/src/requests/create_reference_attachment_builder.rs index 517bbc7e55..6650c73072 100644 --- a/sdk/cosmos/src/requests/create_reference_attachment_builder.rs +++ b/sdk/cosmos/src/requests/create_reference_attachment_builder.rs @@ -220,7 +220,7 @@ impl<'a, 'b> CreateReferenceAttachmentBuilder<'a, 'b, Yes, Yes> { } let request = serde_json::to_string(&_Request { - id: self.attachment_client.attachment_name().name(), + id: self.attachment_client.attachment_name(), content_type: ContentTypeRequired::content_type(self), media: self.media(), })?; diff --git a/sdk/cosmos/src/requests/create_slug_attachment_builder.rs b/sdk/cosmos/src/requests/create_slug_attachment_builder.rs index 28b1f1184d..54f83b73bb 100644 --- a/sdk/cosmos/src/requests/create_slug_attachment_builder.rs +++ b/sdk/cosmos/src/requests/create_slug_attachment_builder.rs @@ -241,7 +241,7 @@ impl<'a, 'b> CreateSlugAttachmentBuilder<'a, 'b, Yes, Yes> { req = ContentTypeRequired::add_header(self, req); - req = req.header("Slug", self.attachment_client.attachment_name().name()); + req = req.header("Slug", self.attachment_client.attachment_name()); req = req.header(http::header::CONTENT_LENGTH, self.body().len()); let req = req.body(self.body())?; diff --git a/sdk/cosmos/src/requests/list_attachments_builder.rs b/sdk/cosmos/src/requests/list_attachments_builder.rs index df582ab794..e6a1a81af0 100644 --- a/sdk/cosmos/src/requests/list_attachments_builder.rs +++ b/sdk/cosmos/src/requests/list_attachments_builder.rs @@ -164,7 +164,7 @@ impl<'a, 'b> ListAttachmentsBuilder<'a, 'b> { "dbs/{}/colls/{}/docs/{}/attachments", self.document_client.database_client().database_name(), self.document_client.collection_client().collection_name(), - self.document_client.document_name().name() + self.document_client.document_name() ), http::Method::GET, ResourceType::Attachments, diff --git a/sdk/cosmos/src/requests/list_collections_builder.rs b/sdk/cosmos/src/requests/list_collections_builder.rs index 6757a492b4..67fd66b24a 100644 --- a/sdk/cosmos/src/requests/list_collections_builder.rs +++ b/sdk/cosmos/src/requests/list_collections_builder.rs @@ -125,7 +125,7 @@ impl<'a> ListCollectionsBuilder<'a> { pub async fn execute(&self) -> Result { trace!("ListCollectionsBuilder::execute called"); let request = self.database_client.cosmos_client().prepare_request( - &format!("dbs/{}/colls", self.database_client.database_name().name()), + &format!("dbs/{}/colls", self.database_client.database_name()), http::Method::GET, ResourceType::Collections, ); diff --git a/sdk/cosmos/src/requests/list_permissions_builder.rs b/sdk/cosmos/src/requests/list_permissions_builder.rs index 2f8e8c418f..57b149fd25 100644 --- a/sdk/cosmos/src/requests/list_permissions_builder.rs +++ b/sdk/cosmos/src/requests/list_permissions_builder.rs @@ -129,7 +129,7 @@ impl<'a, 'b> ListPermissionsBuilder<'a, 'b> { &format!( "dbs/{}/users/{}/permissions", self.user_client.database_client().database_name(), - self.user_client.user_name().id(), + self.user_client.user_name() ), http::Method::GET, ResourceType::Permissions, diff --git a/sdk/cosmos/src/requests/replace_reference_attachment_builder.rs b/sdk/cosmos/src/requests/replace_reference_attachment_builder.rs index 4428c6a578..4c326020de 100644 --- a/sdk/cosmos/src/requests/replace_reference_attachment_builder.rs +++ b/sdk/cosmos/src/requests/replace_reference_attachment_builder.rs @@ -251,7 +251,7 @@ impl<'a, 'b> ReplaceReferenceAttachmentBuilder<'a, 'b, Yes, Yes> { } let request = serde_json::to_string(&_Request { - id: self.attachment_client.attachment_name().name(), + id: self.attachment_client.attachment_name(), content_type: ContentTypeRequired::content_type(self), media: self.media(), })?; diff --git a/sdk/cosmos/src/requests/replace_slug_attachment_builder.rs b/sdk/cosmos/src/requests/replace_slug_attachment_builder.rs index 36787f2f74..eb7fa05a7e 100644 --- a/sdk/cosmos/src/requests/replace_slug_attachment_builder.rs +++ b/sdk/cosmos/src/requests/replace_slug_attachment_builder.rs @@ -238,7 +238,7 @@ impl<'a, 'b> ReplaceSlugAttachmentBuilder<'a, 'b, Yes, Yes> { req = ContentTypeRequired::add_header(self, req); - req = req.header("Slug", self.attachment_client.attachment_name().name()); + req = req.header("Slug", self.attachment_client.attachment_name()); req = req.header(http::header::CONTENT_LENGTH, self.body().len()); let req = req.body(self.body())?; diff --git a/sdk/cosmos/src/requests/replace_user_builder.rs b/sdk/cosmos/src/requests/replace_user_builder.rs index a35823d2ad..741838dcbf 100644 --- a/sdk/cosmos/src/requests/replace_user_builder.rs +++ b/sdk/cosmos/src/requests/replace_user_builder.rs @@ -1,5 +1,4 @@ use crate::prelude::*; -use crate::resources::user::UserName; use crate::responses::CreateUserResponse; use azure_core::prelude::*; use azure_core::{No, ToAssign, Yes}; @@ -14,7 +13,7 @@ where { user_client: &'a UserClient, p_user_name: PhantomData, - user_name: Option<&'a dyn UserName>, + user_name: Option<&'a str>, user_agent: Option<&'b str>, activity_id: Option<&'b str>, consistency_level: Option, @@ -43,7 +42,7 @@ where } impl<'a, 'b> UserNameRequired<'a> for ReplaceUserBuilder<'a, 'b, Yes> { - fn user_name(&self) -> &'a dyn UserName { + fn user_name(&self) -> &'a str { self.user_name.unwrap() } } @@ -78,7 +77,7 @@ where impl<'a, 'b> UserNameSupport<'a> for ReplaceUserBuilder<'a, 'b, No> { type O = ReplaceUserBuilder<'a, 'b, Yes>; - fn with_user_name(self, user_name: &'a dyn UserName) -> Self::O { + fn with_user_name(self, user_name: &'a str) -> Self::O { ReplaceUserBuilder { user_client: self.user_client, p_user_name: PhantomData {}, @@ -150,7 +149,7 @@ impl<'a, 'b> ReplaceUserBuilder<'a, 'b, Yes> { id: &'x str, } let request_body = RequestBody { - id: self.user_name().id(), + id: self.user_name(), }; let request_body = serde_json::to_string(&request_body)?; diff --git a/sdk/cosmos/src/resources/collection/mod.rs b/sdk/cosmos/src/resources/collection/mod.rs index fb64542448..63191890be 100644 --- a/sdk/cosmos/src/resources/collection/mod.rs +++ b/sdk/cosmos/src/resources/collection/mod.rs @@ -42,41 +42,19 @@ impl Collection { id: id.to_owned(), indexing_policy, parition_key: PartitionKey::default(), - rid: "".to_owned(), + rid: String::new(), ts: 0, - _self: "".to_owned(), - etag: "".to_owned(), - docs: "".to_owned(), - sprocs: "".to_owned(), - triggers: "".to_owned(), - udfs: "".to_owned(), - conflicts: "".to_owned(), + _self: String::new(), + etag: String::new(), + docs: String::new(), + sprocs: String::new(), + triggers: String::new(), + udfs: String::new(), + conflicts: String::new(), } } } -pub trait CollectionName: std::fmt::Debug { - fn name(&self) -> &str; -} - -impl CollectionName for Collection { - fn name(&self) -> &str { - &self.id - } -} - -impl CollectionName for &str { - fn name(&self) -> &str { - self - } -} - -impl CollectionName for String { - fn name(&self) -> &str { - self.as_ref() - } -} - impl Resource for Collection { fn uri(&self) -> &str { &self._self @@ -106,16 +84,14 @@ pub enum DataType { } #[derive(Serialize, Deserialize, Clone, Debug, PartialOrd, PartialEq)] +#[serde(rename_all = "lowercase")] pub enum IndexingMode { - #[serde(rename = "consistent")] Consistent, - #[serde(rename = "lazy")] Lazy, } #[derive(Serialize, Deserialize, Clone, Debug, PartialOrd, PartialEq)] pub struct IncludedPath { - #[serde(rename = "path")] pub path: String, #[serde(skip_serializing_if = "Option::is_none")] #[serde(rename = "indexes")] @@ -126,16 +102,13 @@ pub struct IncludedPath { pub struct IncludedPathIndex { #[serde(rename = "dataType")] pub data_type: DataType, - #[serde(rename = "precision")] #[serde(skip_serializing_if = "Option::is_none")] pub precision: Option, - #[serde(rename = "kind")] pub kind: KeyKind, } #[derive(Serialize, Deserialize, Clone, Debug, PartialOrd, PartialEq)] pub struct ExcludedPath { - #[serde(rename = "path")] pub path: String, } diff --git a/sdk/cosmos/src/resources/database.rs b/sdk/cosmos/src/resources/database.rs index fd76cc4e2f..fd7f375bc2 100644 --- a/sdk/cosmos/src/resources/database.rs +++ b/sdk/cosmos/src/resources/database.rs @@ -22,25 +22,13 @@ pub struct Database { pub users: String, } -pub trait DatabaseName: std::fmt::Debug { - fn name(&self) -> &str; -} - -impl DatabaseName for Database { - fn name(&self) -> &str { +impl Database { + /// The name of the database + pub fn name(&self) -> &str { &self.id } } -impl DatabaseName for R -where - R: AsRef + std::fmt::Debug, -{ - fn name(&self) -> &str { - self.as_ref() - } -} - impl Resource for Database { fn uri(&self) -> &str { &self._self diff --git a/sdk/cosmos/src/resources/document/mod.rs b/sdk/cosmos/src/resources/document/mod.rs index 620f2170c2..072707a43c 100644 --- a/sdk/cosmos/src/resources/document/mod.rs +++ b/sdk/cosmos/src/resources/document/mod.rs @@ -60,25 +60,3 @@ impl Resource for &Document { self.document_attributes._self() } } - -pub trait DocumentName: std::fmt::Debug { - fn name(&self) -> &str; -} - -impl DocumentName for &str { - fn name(&self) -> &str { - self - } -} - -impl DocumentName for String { - fn name(&self) -> &str { - self.as_ref() - } -} - -impl DocumentName for std::borrow::Cow<'_, str> { - fn name(&self) -> &str { - self.as_ref() - } -} diff --git a/sdk/cosmos/src/resources/mod.rs b/sdk/cosmos/src/resources/mod.rs index 6ba6e40403..be85670eda 100644 --- a/sdk/cosmos/src/resources/mod.rs +++ b/sdk/cosmos/src/resources/mod.rs @@ -2,14 +2,15 @@ //! //! You can learn about the Cosmos DB resource model [here](https://docs.microsoft.com/en-us/azure/cosmos-db/account-databases-containers-items). -mod attachment; pub mod collection; -pub mod database; pub mod document; pub mod permission; pub mod stored_procedure; pub mod trigger; -pub mod user; + +mod attachment; +mod database; +mod user; mod user_defined_function; #[doc(inline)] diff --git a/sdk/cosmos/src/resources/stored_procedure.rs b/sdk/cosmos/src/resources/stored_procedure.rs index d9ae96d6ac..eeb645c3c9 100644 --- a/sdk/cosmos/src/resources/stored_procedure.rs +++ b/sdk/cosmos/src/resources/stored_procedure.rs @@ -19,23 +19,9 @@ pub struct StoredProcedure { pub body: String, } -impl StoredProcedureName for StoredProcedure { - fn name(&self) -> &str { +impl StoredProcedure { + /// The name of the stored procedure + pub fn name(&self) -> &str { &self.id } } -pub trait StoredProcedureName: std::fmt::Debug { - fn name(&self) -> &str; -} - -impl StoredProcedureName for &str { - fn name(&self) -> &str { - self - } -} - -impl StoredProcedureName for String { - fn name(&self) -> &str { - self.as_ref() - } -} diff --git a/sdk/cosmos/src/resources/user.rs b/sdk/cosmos/src/resources/user.rs index 1159a4868e..f0b2fe8611 100644 --- a/sdk/cosmos/src/resources/user.rs +++ b/sdk/cosmos/src/resources/user.rs @@ -43,25 +43,3 @@ impl Resource for &User { &self._self } } - -pub trait UserName: std::fmt::Debug { - fn id(&self) -> &str; -} - -impl UserName for User { - fn id(&self) -> &str { - &self.id - } -} - -impl UserName for String { - fn id(&self) -> &str { - &self - } -} - -impl UserName for &str { - fn id(&self) -> &str { - self - } -} diff --git a/sdk/cosmos/src/traits.rs b/sdk/cosmos/src/traits.rs index fb30a4a490..43a316bfd1 100644 --- a/sdk/cosmos/src/traits.rs +++ b/sdk/cosmos/src/traits.rs @@ -393,12 +393,12 @@ pub trait OfferSupport { } pub trait CollectionNameRequired<'a> { - fn collection_name(&self) -> &'a dyn CollectionName; + fn collection_name(&self) -> &'a str; } pub trait CollectionNameSupport<'a> { type O; - fn with_collection_name(self, collection_name: &'a dyn CollectionName) -> Self::O; + fn with_collection_name(self, collection_name: &'a str) -> Self::O; } pub trait CollectionRequired<'a> { @@ -438,19 +438,19 @@ pub trait QuerySupport<'a> { } pub trait DatabaseNameRequired<'a> { - fn database_name(&'a self) -> &'a dyn database::DatabaseName; + fn database_name(&'a self) -> &'a str; } pub trait DatabaseNameSupport<'a> { type O; - fn with_database_name(self, database_name: &'a dyn database::DatabaseName) -> Self::O; + fn with_database_name(self, database_name: &'a str) -> Self::O; } pub trait UserNameRequired<'a> { - fn user_name(&self) -> &'a dyn user::UserName; + fn user_name(&self) -> &'a str; } pub trait UserNameSupport<'a> { type O; - fn with_user_name(self, user_name: &'a dyn user::UserName) -> Self::O; + fn with_user_name(self, user_name: &'a str) -> Self::O; }