@@ -23,6 +23,7 @@ mod requests;
2323pub mod responses;
2424pub mod stored_procedure;
2525mod to_json_vector;
26+ mod user;
2627
2728pub use self :: authorization_token:: * ;
2829use self :: collection:: IndexingPolicy ;
@@ -35,14 +36,15 @@ pub use self::query::{Param, ParamDef, Query};
3536pub use self :: requests:: * ;
3637use crate :: clients:: {
3738 Client , CollectionClient , CosmosUriBuilder , DatabaseClient , DocumentClient ,
38- StoredProcedureClient ,
39+ StoredProcedureClient , UserClient ,
3940} ;
4041use crate :: collection:: Collection ;
4142use crate :: collection:: CollectionName ;
4243use crate :: database:: DatabaseName ;
4344use crate :: headers:: * ;
4445pub use crate :: partition_keys:: PartitionKeys ;
4546use crate :: stored_procedure:: { Parameters , StoredProcedureName } ;
47+ pub use crate :: user:: { User , UserName } ;
4648use azure_sdk_core:: No ;
4749use http:: request:: Builder ;
4850use serde:: Serialize ;
@@ -314,6 +316,13 @@ where
314316 fn stored_procedure_client ( & self ) -> & ' a StoredProcedureClient < ' a , CUB > ;
315317}
316318
319+ pub trait UserClientRequired < ' a , CUB >
320+ where
321+ CUB : CosmosUriBuilder ,
322+ {
323+ fn user_client ( & self ) -> & ' a UserClient < ' a , CUB > ;
324+ }
325+
317326pub trait StoredProcedureNameRequired < ' a > {
318327 fn stored_procedure_name ( & self ) -> & ' a str ;
319328}
@@ -428,6 +437,15 @@ where
428437 fn with_database_name ( self , database_name : & ' a DB ) -> Self :: O ;
429438}
430439
440+ pub trait UserNameRequired < ' a > {
441+ fn user_name ( & self ) -> & ' a dyn UserName ;
442+ }
443+
444+ pub trait UserNameSupport < ' a > {
445+ type O ;
446+ fn with_user_name ( self , user_name : & ' a dyn UserName ) -> Self :: O ;
447+ }
448+
431449//// New implementation
432450pub trait CosmosTrait < CUB >
433451where
@@ -453,6 +471,8 @@ where
453471 & ' c self ,
454472 collection_name : & ' c dyn CollectionName ,
455473 ) -> CollectionClient < ' c , CUB > ;
474+ fn with_user < ' c > ( & ' c self , user_name : & ' c dyn UserName ) -> UserClient < ' c , CUB > ;
475+ fn list_users < ' c > ( & ' c self ) -> requests:: ListUsersBuilder < ' c , CUB > ;
456476}
457477
458478pub ( crate ) trait DatabaseBuilderTrait < ' a , CUB > : DatabaseTrait < ' a , CUB >
@@ -528,3 +548,15 @@ where
528548{
529549 fn prepare_request ( & self , method : hyper:: Method ) -> http:: request:: Builder ;
530550}
551+
552+ pub trait UserTrait < ' a , CUB >
553+ where
554+ CUB : CosmosUriBuilder ,
555+ {
556+ fn database_name ( & self ) -> & ' a dyn DatabaseName ;
557+ fn user_name ( & self ) -> & ' a dyn UserName ;
558+ fn create_user ( & self ) -> requests:: CreateUserBuilder < ' _ , CUB > ;
559+ fn get_user ( & self ) -> requests:: GetUserBuilder < ' _ , CUB > ;
560+ fn replace_user ( & self ) -> requests:: ReplaceUserBuilder < ' _ , CUB , No > ;
561+ fn delete_user ( & self ) -> requests:: DeleteUserBuilder < ' _ , CUB > ;
562+ }
0 commit comments