@@ -106,17 +106,39 @@ public async Task<List<string>> ListDatabaseNamesAsync(CommandOptions options)
106106 }
107107
108108 /// <summary>
109- /// Returns a list of database info objects.
109+ /// Synchronous version of <see cref="ListDatabasesAsync()"/>
110110 /// </summary>
111- /// <returns>A list of DatabaseInfo objects.</returns>
112- /// <example>
113- /// <code>
114- /// var databases = admin.ListDatabases();
115- /// </code>
116- /// </example>
111+ /// <inheritdoc cref="ListDatabasesAsync()"/>
117112 public List < DatabaseInfo > ListDatabases ( )
118113 {
119- return ListDatabasesAsync ( null , true ) . ResultSync ( ) ;
114+ return ListDatabases ( null , null ) ;
115+ }
116+
117+ /// <summary>
118+ /// Synchronous version of <see cref="ListDatabasesAsync(CommandOptions)"/>
119+ /// </summary>
120+ /// <inheritdoc cref="ListDatabasesAsync(CommandOptions)"/>
121+ public List < DatabaseInfo > ListDatabases ( CommandOptions options )
122+ {
123+ return ListDatabases ( null , options ) ;
124+ }
125+
126+ /// <summary>
127+ /// Synchronous version of <see cref="ListDatabasesAsync(ListDatabaseOptions)"/>
128+ /// </summary>
129+ /// <inheritdoc cref="ListDatabasesAsync(ListDatabaseOptions)"/>
130+ public List < DatabaseInfo > ListDatabases ( ListDatabaseOptions listOptions )
131+ {
132+ return ListDatabases ( listOptions , null ) ;
133+ }
134+
135+ /// <summary>
136+ /// Synchronous version of <see cref="ListDatabasesAsync(ListDatabaseOptions, CommandOptions)"/>
137+ /// </summary>
138+ /// <inheritdoc cref="ListDatabasesAsync(ListDatabaseOptions, CommandOptions)"/>
139+ public List < DatabaseInfo > ListDatabases ( ListDatabaseOptions listOptions , CommandOptions options )
140+ {
141+ return ListDatabasesAsync ( null , options , true ) . ResultSync ( ) ;
120142 }
121143
122144 /// <summary>
@@ -130,44 +152,56 @@ public List<DatabaseInfo> ListDatabases()
130152 /// </example>
131153 public Task < List < DatabaseInfo > > ListDatabasesAsync ( )
132154 {
133- return ListDatabasesAsync ( null , false ) ;
155+ return ListDatabasesAsync ( null , null ) ;
134156 }
135157
136158 /// <summary>
137- /// Returns a list of database info objects using specified command options.
159+ /// Asynchronously returns a list of database info objects using specified command options.
138160 /// </summary>
139161 /// <param name="options">The command options to use.</param>
140- /// <returns>A list of DatabaseInfo objects.</returns>
162+ /// <returns>A task that resolves to a list of DatabaseInfo objects.</returns>
141163 /// <example>
142164 /// <code>
143- /// var databases = admin.ListDatabases (options);
165+ /// var databases = await admin.ListDatabasesAsync (options);
144166 /// </code>
145167 /// </example>
146- public List < DatabaseInfo > ListDatabases ( CommandOptions options )
168+ public Task < List < DatabaseInfo > > ListDatabasesAsync ( CommandOptions options )
147169 {
148- return ListDatabasesAsync ( options , true ) . ResultSync ( ) ;
170+ return ListDatabasesAsync ( null , options , false ) ;
149171 }
150172
151173 /// <summary>
152- /// Asynchronously returns a list of database info objects using specified command options.
174+ /// Asynchronously returns a list of database info objects using specified filtering options
153175 /// </summary>
154- /// <param name="options">The command options to use.</param>
155- /// <returns>A task that resolves to a list of DatabaseInfo objects.</returns>
156- /// <example>
157- /// <code>
158- /// var databases = await admin.ListDatabasesAsync(options);
159- /// </code>
160- /// </example>
161- public Task < List < DatabaseInfo > > ListDatabasesAsync ( CommandOptions options )
176+ /// <param name="listOptions"></param>
177+ /// <returns></returns>
178+ public Task < List < DatabaseInfo > > ListDatabasesAsync ( ListDatabaseOptions listOptions )
162179 {
163- return ListDatabasesAsync ( options , false ) ;
180+ return ListDatabasesAsync ( listOptions , null , false ) ;
164181 }
165182
166- internal async Task < List < DatabaseInfo > > ListDatabasesAsync ( CommandOptions options , bool runSynchronously )
183+ /// <summary>
184+ /// Asynchronously returns a list of database info objects using specified command options and filtering options
185+ /// </summary>
186+ /// <param name="options"></param>
187+ /// <param name="listOptions"></param>
188+ /// <returns></returns>
189+ public Task < List < DatabaseInfo > > ListDatabasesAsync ( ListDatabaseOptions listOptions , CommandOptions options )
167190 {
191+ return ListDatabasesAsync ( listOptions , options , false ) ;
192+ }
193+
194+ internal async Task < List < DatabaseInfo > > ListDatabasesAsync ( ListDatabaseOptions listOptions , CommandOptions options , bool runSynchronously )
195+ {
196+ if ( listOptions == null )
197+ {
198+ listOptions = new ListDatabaseOptions ( ) ;
199+ }
200+
168201 var command = CreateCommand ( )
169202 . AddUrlPath ( "databases" )
170203 . WithTimeoutManager ( new DatabaseAdminTimeoutManager ( ) )
204+ . WithPayload ( listOptions )
171205 . AddCommandOptions ( options ) ;
172206
173207 var rawResults = await command . RunAsyncRaw < List < RawDatabaseInfo > > ( HttpMethod . Get , runSynchronously ) . ConfigureAwait ( false ) ;
@@ -349,7 +383,7 @@ internal async Task<IDatabaseAdmin> CreateDatabaseAsync(DatabaseCreationOptions
349383 var databaseName = creationOptions . Name ;
350384 Guard . NotNullOrEmpty ( databaseName , nameof ( databaseName ) ) ;
351385
352- List < DatabaseInfo > dbList = await ListDatabasesAsync ( commandOptions , runSynchronously ) . ConfigureAwait ( false ) ;
386+ List < DatabaseInfo > dbList = await ListDatabasesAsync ( null , commandOptions , runSynchronously ) . ConfigureAwait ( false ) ;
353387
354388 DatabaseInfo existingDb = dbList . FirstOrDefault ( item => databaseName . Equals ( item . Name ) ) ;
355389
@@ -568,7 +602,7 @@ public Task<bool> DropDatabaseAsync(Guid dbGuid, CommandOptions options)
568602 internal async Task < bool > DropDatabaseAsync ( string databaseName , CommandOptions options , bool runSynchronously )
569603 {
570604 Guard . NotNullOrEmpty ( databaseName , nameof ( databaseName ) ) ;
571- var dbList = await ListDatabasesAsync ( options , runSynchronously ) . ConfigureAwait ( false ) ;
605+ var dbList = await ListDatabasesAsync ( null , options , runSynchronously ) . ConfigureAwait ( false ) ;
572606
573607 var dbInfo = dbList . FirstOrDefault ( item => item . Name . Equals ( databaseName ) ) ;
574608 if ( dbInfo == null )
@@ -604,6 +638,19 @@ internal async Task<bool> DropDatabaseAsync(Guid dbGuid, CommandOptions options,
604638 return false ;
605639 }
606640
641+
642+ /// <summary>
643+ /// Returns an IDatabaseAdmin instance for the database at the specified URL.
644+ /// </summary>
645+ /// <param name="dbUrl"></param>
646+ /// <returns></returns>
647+ public IDatabaseAdmin GetDatabaseAdmin ( string dbUrl )
648+ {
649+ var database = _client . GetDatabase ( dbUrl ) ;
650+ return new DatabaseAdminAstra ( database , _client , null ) ;
651+ }
652+
653+
607654 /// <summary>
608655 /// Retrieves database information for the specified GUID.
609656 /// </summary>
0 commit comments