@@ -350,6 +350,53 @@ public async Task FlushBucketAsync(CouchbaseServerResource server, string bucket
350350 await ThrowOnFailureAsync ( response , cancellationToken ) . ConfigureAwait ( false ) ;
351351 }
352352
353+ public async Task < ScopesResponse > GetScopesAsync ( CouchbaseServerResource server , string bucketName , CancellationToken cancellationToken = default )
354+ {
355+ ArgumentNullException . ThrowIfNull ( server ) ;
356+ ArgumentException . ThrowIfNullOrEmpty ( bucketName ) ;
357+
358+ var response = await SendRequestAsync ( server . GetManagementEndpoint ( ) ,
359+ HttpMethod . Get ,
360+ $ "/pools/default/buckets/{ bucketName } /scopes",
361+ cancellationToken : cancellationToken ) . ConfigureAwait ( false ) ;
362+
363+ await ThrowOnFailureAsync ( response , cancellationToken ) . ConfigureAwait ( false ) ;
364+
365+ return ( await response . Content . ReadFromJsonAsync < ScopesResponse > ( cancellationToken ) . ConfigureAwait ( false ) ) ! ;
366+ }
367+
368+ public async Task CreateScopeAsync ( CouchbaseServerResource server , string bucketName , string scopeName , CancellationToken cancellationToken = default )
369+ {
370+ ArgumentNullException . ThrowIfNull ( server ) ;
371+ ArgumentException . ThrowIfNullOrEmpty ( bucketName ) ;
372+ ArgumentException . ThrowIfNullOrEmpty ( scopeName ) ;
373+
374+ var response = await SendRequestAsync ( server . GetManagementEndpoint ( ) ,
375+ HttpMethod . Post ,
376+ $ "/pools/default/buckets/{ bucketName } /scopes",
377+ content : new FormUrlEncodedContent ( [ new ( "name" , scopeName ) ] ) ,
378+ cancellationToken : cancellationToken ) . ConfigureAwait ( false ) ;
379+
380+ await ThrowOnFailureAsync ( response , cancellationToken ) . ConfigureAwait ( false ) ;
381+ }
382+
383+ public async Task CreateCollectionAsync ( CouchbaseServerResource server , string bucketName , string scopeName , string collectionName ,
384+ CancellationToken cancellationToken = default )
385+ {
386+ ArgumentNullException . ThrowIfNull ( server ) ;
387+ ArgumentException . ThrowIfNullOrEmpty ( bucketName ) ;
388+ ArgumentException . ThrowIfNullOrEmpty ( scopeName ) ;
389+ ArgumentException . ThrowIfNullOrEmpty ( collectionName ) ;
390+
391+ var response = await SendRequestAsync ( server . GetManagementEndpoint ( ) ,
392+ HttpMethod . Post ,
393+ $ "/pools/default/buckets/{ bucketName } /scopes/{ scopeName } /collections",
394+ content : new FormUrlEncodedContent ( [ new ( "name" , collectionName ) ] ) ,
395+ cancellationToken : cancellationToken ) . ConfigureAwait ( false ) ;
396+
397+ await ThrowOnFailureAsync ( response , cancellationToken ) . ConfigureAwait ( false ) ;
398+ }
399+
353400 public async Task < List < ClusterTask > > GetClusterTasksAsync ( CouchbaseServerResource server , CancellationToken cancellationToken )
354401 {
355402 ArgumentNullException . ThrowIfNull ( server ) ;
0 commit comments