Skip to content

Commit

Permalink
Support defining database type as friendly string.
Browse files Browse the repository at this point in the history
  • Loading branch information
Sehkah committed Sep 22, 2023
1 parent 0d6a23a commit 153320d
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 28 deletions.
21 changes: 16 additions & 5 deletions Arrowgene.Ddon.Database/DatabaseSetting.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@ namespace Arrowgene.Ddon.Database
[DataContract]
public class DatabaseSetting
{
public DatabaseType DbType { get; set; }

public DatabaseSetting()
{
Type = DatabaseType.SQLite;
Type = "sqlite";
DatabaseFolder = Path.Combine(Util.ExecutingDirectory(), "Files/Database");
Host = "localhost";
Port = 3306;
Expand All @@ -20,9 +22,14 @@ public DatabaseSetting()
Password = string.Empty;
WipeOnStartup = true;

if (Enum.TryParse(Environment.GetEnvironmentVariable("DB_TYPE"), true, out DatabaseType dbType))
string envDbType = Environment.GetEnvironmentVariable("DB_TYPE");
if (!string.IsNullOrEmpty(envDbType))
{
Type = dbType;
Type = envDbType;
}
if (Enum.TryParse(Type, true, out DatabaseType dbType))
{
DbType = dbType;
}
string envDbFolder = Environment.GetEnvironmentVariable("DB_FOLDER");
if (!string.IsNullOrEmpty(envDbFolder))
Expand Down Expand Up @@ -64,6 +71,10 @@ public DatabaseSetting()
public DatabaseSetting(DatabaseSetting databaseSettings)
{
Type = databaseSettings.Type;
if (Enum.TryParse(Type, true, out DatabaseType dbType))
{
DbType = dbType;
}
DatabaseFolder = databaseSettings.DatabaseFolder;
Host = databaseSettings.Host;
Port = databaseSettings.Port;
Expand All @@ -73,7 +84,7 @@ public DatabaseSetting(DatabaseSetting databaseSettings)
WipeOnStartup = databaseSettings.WipeOnStartup;
}

[DataMember(Order = 0)] public DatabaseType Type { get; set; }
[DataMember(Order = 0)] public string Type { get; set; }

[DataMember(Order = 1)] public string DatabaseFolder { get; set; }

Expand All @@ -87,6 +98,6 @@ public DatabaseSetting(DatabaseSetting databaseSettings)

[DataMember(Order = 6)] public string Database { get; set; }

[DataMember(Order = 6)] public bool WipeOnStartup { get; set; }
[DataMember(Order = 7)] public bool WipeOnStartup { get; set; }
}
}
26 changes: 7 additions & 19 deletions Arrowgene.Ddon.Database/DdonDatabaseBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,13 @@ public static class DdonDatabaseBuilder

public static IDatabase Build(DatabaseSetting settings)
{
IDatabase database;
DatabaseType dbType;
switch (settings.Type)
IDatabase database = settings.DbType switch
{
case DatabaseType.SQLite:
database = BuildSqLite(settings.DatabaseFolder, settings.WipeOnStartup);
dbType = DatabaseType.SQLite;
break;
case DatabaseType.PostgreSQL:
database = BuildPostgres(settings.DatabaseFolder, settings.Host, settings.User, settings.Password, settings.Database, settings.WipeOnStartup);
dbType = DatabaseType.PostgreSQL;
break;
case DatabaseType.MariaDb:
database = BuildMariaDB(settings.DatabaseFolder, settings.Host, settings.User, settings.Password, settings.Database, settings.WipeOnStartup);
dbType = DatabaseType.MariaDb;
break;
default:
throw new ArgumentOutOfRangeException($"Unknown database type '{settings.Type}' encountered!");
}
DatabaseType.SQLite => BuildSqLite(settings.DatabaseFolder, settings.WipeOnStartup),
DatabaseType.PostgreSQL => BuildPostgres(settings.DatabaseFolder, settings.Host, settings.User, settings.Password, settings.Database, settings.WipeOnStartup),
DatabaseType.MariaDb => BuildMariaDB(settings.DatabaseFolder, settings.Host, settings.User, settings.Password, settings.Database, settings.WipeOnStartup),
_ => throw new ArgumentOutOfRangeException($"Unknown database type '{settings.Type}' encountered!")
};

if (database == null)
{
Expand All @@ -39,7 +27,7 @@ public static IDatabase Build(DatabaseSetting settings)
}
else
{
Logger.Info($"Database of type '${dbType}' has been created.");
Logger.Info($"Database of type '${settings.DbType.ToString()}' has been created.");
Logger.Info($"Database path: {settings.DatabaseFolder}");
}

Expand Down
2 changes: 1 addition & 1 deletion Arrowgene.Ddon.config.local_dev.json
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@
"UrlSupportIndex": "http:\/\/localhost:52099\/sp_ingame\/support\/index.html"
},
"DatabaseSetting": {
"Type": 0,
"Type": "sqlite",
"DatabaseFolder": "\/var\/ddon\/server\/Files\/Database",
"Host": "localhost",
"Port": 3306,
Expand Down
2 changes: 1 addition & 1 deletion Arrowgene.Ddon.config.mariadb.local_dev.json
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@
"UrlSupportIndex": "http:\/\/localhost:52099\/sp_ingame\/support\/index.html"
},
"DatabaseSetting": {
"Type": 2,
"Type": "mariadb",
"DatabaseFolder": "\/var\/ddon\/server\/Files\/Database",
"Host": "localhost",
"Port": 3306,
Expand Down
2 changes: 1 addition & 1 deletion Arrowgene.Ddon.config.psql.local_dev.json
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@
"UrlSupportIndex": "http:\/\/localhost:52099\/sp_ingame\/support\/index.html"
},
"DatabaseSetting": {
"Type": 1,
"Type": "postgresql",
"DatabaseFolder": "\/var\/ddon\/server\/Files\/Database",
"Host": "localhost",
"Port": 5432,
Expand Down
2 changes: 1 addition & 1 deletion deploy/Arrowgene.Ddon.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@
"UrlSupportIndex": "http:\/\/localhost:52099\/sp_ingame\/support\/index.html"
},
"DatabaseSetting": {
"Type": 0,
"Type": "sqlite",
"DatabaseFolder": "\/var\/ddon\/server\/Files\/Database",
"Host": "localhost",
"Port": 3306,
Expand Down

0 comments on commit 153320d

Please sign in to comment.