protected override Task EnsureDatabaseExists()
{
if (EnsuredDatabaseExists ||
string.IsNullOrWhiteSpace(ConnectionStringOptions.DefaultDatabase))
return new CompletedTask();
EnsuredDatabaseExists = true;
var rootDatabaseUrl = MultiDatabase.GetRootDatabaseUrl(ConnectionStringOptions.Url);
var docUrl = rootDatabaseUrl + "/docs/Raven/Databases/" + ConnectionStringOptions.DefaultDatabase;
try
{
httpRavenRequestFactory.Create(docUrl, "GET", ConnectionStringOptions).ExecuteRequest();
return new CompletedTask();
}
catch (WebException e)
{
var httpWebResponse = e.Response as HttpWebResponse;
if (httpWebResponse == null || httpWebResponse.StatusCode != HttpStatusCode.NotFound)
throw;
}
var request = CreateRequest(docUrl, "PUT");
var document = MultiDatabase.CreateDatabaseDocument(ConnectionStringOptions.DefaultDatabase);
request.Write(document);
request.ExecuteRequest();
return new CompletedTask();
}
}