Skip to content

Commit 4e1dacf

Browse files
committed
Use enum instead
1 parent 048dcea commit 4e1dacf

File tree

8 files changed

+35
-22
lines changed

8 files changed

+35
-22
lines changed

src/ServiceControl.Audit.Persistence.RavenDB/DatabaseConfiguration.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
namespace ServiceControl.Audit.Persistence.RavenDB
22
{
33
using System;
4+
using Raven.Client.Documents.Indexes;
45
using Sparrow.Json;
56

67
public class DatabaseConfiguration(
@@ -13,7 +14,7 @@ public class DatabaseConfiguration(
1314
int minimumStorageLeftRequiredForIngestion,
1415
ServerConfiguration serverConfiguration,
1516
TimeSpan bulkInsertCommitTimeout,
16-
string searchEngineType)
17+
SearchEngineType searchEngineType)
1718
{
1819
public string Name { get; } = name;
1920

@@ -35,6 +36,6 @@ public class DatabaseConfiguration(
3536

3637
public TimeSpan BulkInsertCommitTimeout { get; } = bulkInsertCommitTimeout;
3738

38-
public string SearchEngineType { get; } = searchEngineType;
39+
public SearchEngineType SearchEngineType { get; } = searchEngineType;
3940
}
4041
}

src/ServiceControl.Audit.Persistence.RavenDB/DatabaseSetup.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ async Task CreateDatabase(IDocumentStore documentStore, string databaseName, Can
3636
try
3737
{
3838
var databaseRecord = new DatabaseRecord(databaseName);
39-
databaseRecord.Settings.Add(AutoSearchEngineTypeKey, configuration.SearchEngineType);
40-
databaseRecord.Settings.Add(StaticSearchEngineTypeKey, configuration.SearchEngineType);
39+
databaseRecord.Settings.Add(AutoSearchEngineTypeKey, configuration.SearchEngineType.ToString());
40+
databaseRecord.Settings.Add(StaticSearchEngineTypeKey, configuration.SearchEngineType.ToString());
4141

4242
await documentStore.Maintenance.Server.SendAsync(new CreateDatabaseOperation(databaseRecord), cancellationToken);
4343
}
@@ -61,7 +61,7 @@ async Task UpdateDatabaseSettings(IDocumentStore documentStore, string databaseN
6161

6262
if (dbRecord.Settings.TryGetValue(AutoSearchEngineTypeKey, out var searchEngineTypeAuto))
6363
{
64-
if (searchEngineTypeAuto != configuration.SearchEngineType)
64+
if (searchEngineTypeAuto != configuration.SearchEngineType.ToString())
6565
{
6666
updated = true;
6767
}
@@ -71,11 +71,11 @@ async Task UpdateDatabaseSettings(IDocumentStore documentStore, string databaseN
7171
updated = true;
7272
}
7373

74-
dbRecord.Settings[AutoSearchEngineTypeKey] = configuration.SearchEngineType;
74+
dbRecord.Settings[AutoSearchEngineTypeKey] = configuration.SearchEngineType.ToString();
7575

7676
if (dbRecord.Settings.TryGetValue(StaticSearchEngineTypeKey, out var searchEngineTypeStatic))
7777
{
78-
if (searchEngineTypeStatic != configuration.SearchEngineType)
78+
if (searchEngineTypeStatic != configuration.SearchEngineType.ToString())
7979
{
8080
updated = true;
8181
}
@@ -85,7 +85,7 @@ async Task UpdateDatabaseSettings(IDocumentStore documentStore, string databaseN
8585
updated = true;
8686
}
8787

88-
dbRecord.Settings[StaticSearchEngineTypeKey] = configuration.SearchEngineType;
88+
dbRecord.Settings[StaticSearchEngineTypeKey] = configuration.SearchEngineType.ToString();
8989

9090
if (updated)
9191
{

src/ServiceControl.Audit.Persistence.RavenDB/RavenPersistenceConfiguration.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.Reflection;
77
using CustomChecks;
88
using NServiceBus.Logging;
9+
using Raven.Client.Documents.Indexes;
910

1011
public class RavenPersistenceConfiguration : IPersistenceConfiguration
1112
{
@@ -109,9 +110,16 @@ internal static DatabaseConfiguration GetDatabaseConfiguration(PersistenceSettin
109110

110111
var bulkInsertTimeout = TimeSpan.FromSeconds(GetBulkInsertCommitTimeout(settings));
111112

112-
if (!settings.PersisterSpecificSettings.TryGetValue(SearchEngineTypeKey, out var searchEngineType))
113+
var searchEngineType = SearchEngineTypeDefault;
114+
115+
if (settings.PersisterSpecificSettings.TryGetValue(SearchEngineTypeKey, out var searchEngineTypeValue))
113116
{
114-
searchEngineType = SearchEngineTypeDefault;
117+
if (!Enum.TryParse<SearchEngineType>(searchEngineTypeValue, out var explicitSearchEngineType))
118+
{
119+
throw new InvalidOperationException($"{searchEngineTypeValue} is not supported.");
120+
}
121+
122+
searchEngineType = explicitSearchEngineType;
115123
}
116124

117125
return new DatabaseConfiguration(
@@ -192,6 +200,6 @@ static string GetLogPath(PersistenceSettings settings)
192200

193201
const int ExpirationProcessTimerInSecondsDefault = 600;
194202
const int BulkInsertCommitTimeoutInSecondsDefault = 60;
195-
const string SearchEngineTypeDefault = "Corax";
203+
internal static readonly SearchEngineType SearchEngineTypeDefault = SearchEngineType.Corax;
196204
}
197205
}

src/ServiceControl.Audit.Persistence.Tests.RavenDB/SearchEngineTypeTests.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@ class SearchEngineTypeTests : PersistenceTestFixture
1212
[Test]
1313
public async Task Free_text_search_should_be_on_using_corax_by_default()
1414
{
15-
var index = await configuration.DocumentStore.Maintenance.SendAsync(new GetIndexStatisticsOperation(DatabaseSetup.MessagesViewIndexWithFullTextSearchIndexName));
15+
var freeTextIndex = await configuration.DocumentStore.Maintenance.SendAsync(new GetIndexStatisticsOperation(DatabaseSetup.MessagesViewIndexWithFullTextSearchIndexName));
16+
var nonFreeTextIndex = await configuration.DocumentStore.Maintenance.SendAsync(new GetIndexOperation(DatabaseSetup.MessagesViewIndexName));
1617

17-
Assert.That(index, Is.Not.Null);
18-
Assert.That(index.SearchEngineType, Is.EqualTo(SearchEngineType.Corax));
18+
Assert.That(nonFreeTextIndex, Is.Null);
19+
Assert.That(freeTextIndex, Is.Not.Null);
20+
Assert.That(freeTextIndex.SearchEngineType, Is.EqualTo(SearchEngineType.Corax));
1921
}
2022
}

src/ServiceControl.Audit.Persistence.Tests.RavenDB/SharedEmbeddedServer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public static async Task<EmbeddedDatabase> GetInstance(CancellationToken cancell
3636
var logsMode = "Operations";
3737
var serverUrl = $"http://localhost:{PortUtility.FindAvailablePort(33334)}";
3838

39-
var databaseConfiguration = new DatabaseConfiguration("audit", 60, true, TimeSpan.FromMinutes(5), 120000, 5, 5, new ServerConfiguration(dbPath, serverUrl, logPath, logsMode), TimeSpan.FromSeconds(60), "Corax");
39+
var databaseConfiguration = new DatabaseConfiguration("audit", 60, true, TimeSpan.FromMinutes(5), 120000, 5, 5, new ServerConfiguration(dbPath, serverUrl, logPath, logsMode), TimeSpan.FromSeconds(60), RavenPersistenceConfiguration.SearchEngineTypeDefault);
4040
var serverConfig = databaseConfiguration.ServerConfiguration;
4141

4242
// TODO: See if more refactoring can be done in configuration classes

src/ServiceControl.Persistence.RavenDB/DatabaseSetup.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ async Task CreateDatabase(string databaseName, CancellationToken cancellationTok
3535
try
3636
{
3737
var databaseRecord = new DatabaseRecord(databaseName);
38-
databaseRecord.Settings.Add("Indexing.Auto.SearchEngineType", settings.SearchEngineType);
39-
databaseRecord.Settings.Add("Indexing.Static.SearchEngineType", settings.SearchEngineType);
38+
databaseRecord.Settings.Add("Indexing.Auto.SearchEngineType", settings.SearchEngineType.ToString());
39+
databaseRecord.Settings.Add("Indexing.Static.SearchEngineType", settings.SearchEngineType.ToString());
4040

4141
await documentStore.Maintenance.Server.SendAsync(new CreateDatabaseOperation(databaseRecord), cancellationToken);
4242
}
@@ -58,8 +58,8 @@ async Task UpdateDatabaseSettings(string databaseName, CancellationToken cancell
5858

5959
var updated = false;
6060

61-
updated |= dbRecord.Settings.TryAdd("Indexing.Auto.SearchEngineType", settings.SearchEngineType);
62-
updated |= dbRecord.Settings.TryAdd("Indexing.Static.SearchEngineType", settings.SearchEngineType);
61+
updated |= dbRecord.Settings.TryAdd("Indexing.Auto.SearchEngineType", settings.SearchEngineType.ToString());
62+
updated |= dbRecord.Settings.TryAdd("Indexing.Static.SearchEngineType", settings.SearchEngineType.ToString());
6363

6464
if (updated)
6565
{

src/ServiceControl.Persistence.RavenDB/RavenPersistenceConfiguration.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using Configuration;
77
using CustomChecks;
88
using Particular.LicensingComponent.Contracts;
9+
using Raven.Client.Documents.Indexes;
910

1011
class RavenPersistenceConfiguration : IPersistenceConfiguration
1112
{
@@ -39,7 +40,7 @@ static T GetRequiredSetting<T>(SettingsRootNamespace settingsRootNamespace, stri
3940
ClientCertificatePassword = SettingsReader.Read<string>(settingsRootNamespace, RavenBootstrapper.ClientCertificatePasswordKey),
4041
DatabaseName = SettingsReader.Read(settingsRootNamespace, RavenBootstrapper.DatabaseNameKey, RavenPersisterSettings.DatabaseNameDefault),
4142
DatabasePath = SettingsReader.Read(settingsRootNamespace, RavenBootstrapper.DatabasePathKey, DefaultDatabaseLocation()),
42-
SearchEngineType = SettingsReader.Read(settingsRootNamespace, RavenBootstrapper.SearchEngineTypeKey, RavenPersisterSettings.SearchEngineTypeDefault),
43+
SearchEngineType = SettingsReader.Read<SearchEngineType>(settingsRootNamespace, RavenBootstrapper.SearchEngineTypeKey, RavenPersisterSettings.SearchEngineTypeDefault),
4344
DatabaseMaintenancePort = SettingsReader.Read(settingsRootNamespace, RavenBootstrapper.DatabaseMaintenancePortKey, RavenPersisterSettings.DatabaseMaintenancePortDefault),
4445
ExpirationProcessTimerInSeconds = SettingsReader.Read(settingsRootNamespace, RavenBootstrapper.ExpirationProcessTimerInSecondsKey, 600),
4546
MinimumStorageLeftRequiredForIngestion = SettingsReader.Read(settingsRootNamespace, RavenBootstrapper.MinimumStorageLeftRequiredForIngestionKey, CheckMinimumStorageRequiredForIngestion.MinimumStorageLeftRequiredForIngestionDefault),

src/ServiceControl.Persistence.RavenDB/RavenPersisterSettings.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using Particular.LicensingComponent.Contracts;
3+
using Raven.Client.Documents.Linq.Indexing;
34
using ServiceControl.Persistence;
45
using ServiceControl.Persistence.RavenDB.CustomChecks;
56
using ServiceControl.RavenDB;
@@ -32,9 +33,9 @@ class RavenPersisterSettings : PersistenceSettings, IRavenClientCertificateInfo
3233
public string LogsMode { get; set; } = LogsModeDefault;
3334
public string DatabaseName { get; set; } = DatabaseNameDefault;
3435
public string ThroughputDatabaseName { get; set; } = ThroughputSettings.DefaultDatabaseName;
35-
public string SearchEngineType { get; set; } = SearchEngineTypeDefault;
36+
public Raven.Client.Documents.Indexes.SearchEngineType SearchEngineType { get; set; } = SearchEngineTypeDefault;
3637

37-
public const string SearchEngineTypeDefault = "Corax";
38+
public static readonly Raven.Client.Documents.Indexes.SearchEngineType SearchEngineTypeDefault = Raven.Client.Documents.Indexes.SearchEngineType.Corax;
3839
public const string DatabaseNameDefault = "primary";
3940
public const int DatabaseMaintenancePortDefault = 33334;
4041
public const int ExpirationProcessTimerInSecondsDefault = 600;

0 commit comments

Comments
 (0)