/// <summary> /// Reconfigures an existing database. /// </summary> /// <param name="name">The database name.</param> /// <param name="config">The database configuration information.</param> /// <returns></returns> public async Task DatabaseConfigAsync(string name, DatabaseConfiguration config) { Covenant.Requires <ArgumentNullException>(!string.IsNullOrEmpty(name)); Covenant.Requires <ArgumentNullException>(config != null); GatewayException.ThrowOnError(await jsonClient.PutUnsafeAsync(GetUri(config.Name + "/_config"), config)); }
/// <summary> /// Purges all document tombstones from a database. /// </summary> /// <param name="database">The database name.</param> /// <returns>The tracking <see cref="Task"/>.</returns> public async Task DatabasePurgeAsync(string database) { Covenant.Requires <ArgumentNullException>(!string.IsNullOrEmpty(database)); dynamic message = new ExpandoObject(); message.docID = new string[] { "*" }; GatewayException.ThrowOnError(await jsonClient.PostUnsafeAsync(GetUri(database + "/_purge"), message)); }
/// <summary> /// Takes a database back online after an optional delay. /// </summary> /// <param name="database">The database name.</param> /// <param name="delay">The optional delay.</param> /// <returns>The tracking <see cref="Task"/>.</returns> public async Task DatabaseOnline(string database, TimeSpan?delay = null) { Covenant.Requires <ArgumentNullException>(!string.IsNullOrEmpty(database)); Covenant.Requires <ArgumentException>(!delay.HasValue || delay.Value >= TimeSpan.Zero); delay = delay ?? TimeSpan.Zero; dynamic message = new ExpandoObject(); message.delay = (int)delay.Value.TotalSeconds; GatewayException.ThrowOnError(await jsonClient.PostUnsafeAsync(GetUri(database + "/_online"), message)); }
/// <summary> /// Removes a database. /// </summary> /// <param name="database">The database name.</param> /// <returns>The tracking <see cref="Task"/>.</returns> public async Task DatabaseRemoveAsync(string database) { Covenant.Requires <ArgumentNullException>(!string.IsNullOrEmpty(database)); GatewayException.ThrowOnError(await jsonClient.DeleteUnsafeAsync(GetUri(database + "/"))); }
/// <summary> /// Creates a database. /// </summary> /// <param name="config">The database configuration information.</param> /// <returns>The tracking <see cref="Task"/>.</returns> public async Task DatabaseCreateAsync(DatabaseConfiguration config) { Covenant.Requires <ArgumentNullException>(config != null); GatewayException.ThrowOnError(await jsonClient.PutUnsafeAsync(GetUri(config.Name + "/"), config)); }
/// <summary> /// Takes a database offline. /// </summary> /// <param name="database">The database name.</param> /// <returns>The tracking <see cref="Task"/>.</returns> public async Task DatabaseOffline(string database) { Covenant.Requires <ArgumentNullException>(!string.IsNullOrEmpty(database)); GatewayException.ThrowOnError(await jsonClient.PostUnsafeAsync(GetUri(database + "/_offline"), string.Empty)); }