summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2019-07-07 00:39:52 -0400
committerJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2019-09-14 18:47:21 -0400
commit2b3f0e740bc09630e881c9967e5ad53d66384094 (patch)
treeb95145d97b0abc0413220e139db88b287ea695fc
parente00fb85ee7822bc7fed2d6bd5a2e4c207a799418 (diff)
downloadSMAPI-2b3f0e740bc09630e881c9967e5ad53d66384094.tar.gz
SMAPI-2b3f0e740bc09630e881c9967e5ad53d66384094.tar.bz2
SMAPI-2b3f0e740bc09630e881c9967e5ad53d66384094.zip
make MongoDB database name configurable (#651)
-rw-r--r--docs/technical/web.md1
-rw-r--r--src/SMAPI.Web/Framework/ConfigModels/MongoDbConfig.cs8
-rw-r--r--src/SMAPI.Web/Startup.cs4
-rw-r--r--src/SMAPI.Web/appsettings.Development.json3
-rw-r--r--src/SMAPI.Web/appsettings.json3
5 files changed, 12 insertions, 7 deletions
diff --git a/docs/technical/web.md b/docs/technical/web.md
index db54a87a..f1cb755b 100644
--- a/docs/technical/web.md
+++ b/docs/technical/web.md
@@ -123,6 +123,7 @@ Initial setup:
`MongoDB:Host` | The hostname for the MongoDB instance.
`MongoDB:Username` | The login username for the MongoDB instance.
`MongoDB:Password` | The login password for the MongoDB instance.
+ `MongoDB:Database` | The database name (e.g. `smapi` in production or `smapi-edge` in testing environments).
To deploy updates:
1. Deploy the web project using [AWS Toolkit for Visual Studio](https://aws.amazon.com/visualstudio/).
diff --git a/src/SMAPI.Web/Framework/ConfigModels/MongoDbConfig.cs b/src/SMAPI.Web/Framework/ConfigModels/MongoDbConfig.cs
index 352eb960..3c508300 100644
--- a/src/SMAPI.Web/Framework/ConfigModels/MongoDbConfig.cs
+++ b/src/SMAPI.Web/Framework/ConfigModels/MongoDbConfig.cs
@@ -17,20 +17,22 @@ namespace StardewModdingAPI.Web.Framework.ConfigModels
/// <summary>The MongoDB password (if any).</summary>
public string Password { get; set; }
+ /// <summary>The database name.</summary>
+ public string Database { get; set; }
+
/*********
** Public method
*********/
/// <summary>Get the MongoDB connection string.</summary>
- /// <param name="authDatabase">The initial database for which to authenticate.</param>
- public string GetConnectionString(string authDatabase)
+ public string GetConnectionString()
{
bool isLocal = this.Host == "localhost";
bool hasLogin = !string.IsNullOrWhiteSpace(this.Username) && !string.IsNullOrWhiteSpace(this.Password);
return $"mongodb{(isLocal ? "" : "+srv")}://"
+ (hasLogin ? $"{Uri.EscapeDataString(this.Username)}:{Uri.EscapeDataString(this.Password)}@" : "")
- + $"{this.Host}/{authDatabase}retryWrites=true&w=majority";
+ + $"{this.Host}/{this.Database}?retryWrites=true&w=majority";
}
}
}
diff --git a/src/SMAPI.Web/Startup.cs b/src/SMAPI.Web/Startup.cs
index 0a8d23a8..315f5f88 100644
--- a/src/SMAPI.Web/Startup.cs
+++ b/src/SMAPI.Web/Startup.cs
@@ -115,9 +115,9 @@ namespace StardewModdingAPI.Web
// init MongoDB
{
MongoDbConfig mongoConfig = this.Configuration.GetSection("MongoDB").Get<MongoDbConfig>();
- string connectionString = mongoConfig.GetConnectionString("smapi");
+ string connectionString = mongoConfig.GetConnectionString();
- services.AddSingleton<IMongoDatabase>(serv => new MongoClient(connectionString).GetDatabase("smapi"));
+ services.AddSingleton<IMongoDatabase>(serv => new MongoClient(connectionString).GetDatabase(mongoConfig.Database));
services.AddSingleton<IWikiCacheRepository>(serv => new WikiCacheRepository(serv.GetService<IMongoDatabase>()));
}
}
diff --git a/src/SMAPI.Web/appsettings.Development.json b/src/SMAPI.Web/appsettings.Development.json
index 9b0ec535..3b7ed8bd 100644
--- a/src/SMAPI.Web/appsettings.Development.json
+++ b/src/SMAPI.Web/appsettings.Development.json
@@ -36,6 +36,7 @@
"MongoDB": {
"Host": "localhost",
"Username": null,
- "Password": null
+ "Password": null,
+ "Database": "smapi-edge"
}
}
diff --git a/src/SMAPI.Web/appsettings.json b/src/SMAPI.Web/appsettings.json
index 65ccea75..532ea017 100644
--- a/src/SMAPI.Web/appsettings.json
+++ b/src/SMAPI.Web/appsettings.json
@@ -50,7 +50,8 @@
"MongoDB": {
"Host": null, // see top note
"Username": null, // see top note
- "Password": null // see top note
+ "Password": null, // see top note
+ "Database": null // see top note
},
"ModCompatibilityList": {