From a4ee5ba049e4280b9d923e1656c8ace7da0702a7 Mon Sep 17 00:00:00 2001 From: Jicheng Lu Date: Sun, 21 Jul 2024 23:58:40 -0500 Subject: [PATCH] add to setting --- .../Repositories/BotSharpDatabaseSettings.cs | 8 ++++++- .../MongoDbContext.cs | 21 ++++++++++--------- src/WebStarter/appsettings.json | 5 ++++- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/Infrastructure/BotSharp.Abstraction/Repositories/BotSharpDatabaseSettings.cs b/src/Infrastructure/BotSharp.Abstraction/Repositories/BotSharpDatabaseSettings.cs index ff077296..1363f598 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Repositories/BotSharpDatabaseSettings.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Repositories/BotSharpDatabaseSettings.cs @@ -4,7 +4,7 @@ public class BotSharpDatabaseSettings : DatabaseBasicSettings { public string[] Assemblies { get; set; } public string FileRepository { get; set; } - public string BotSharpMongoDb { get; set; } + public BotSharpMongoDbSetting BotSharpMongoDb { get; set; } public string TablePrefix { get; set; } public DbConnectionSetting BotSharp { get; set; } public string Redis { get; set; } @@ -29,3 +29,9 @@ public class DbConnectionSetting Slavers = new string[0]; } } + +public class BotSharpMongoDbSetting +{ + public string ConnectionString { get; set; } + public string? DbNameIndex { get; set; } +} \ No newline at end of file diff --git a/src/Plugins/BotSharp.Plugin.MongoStorage/MongoDbContext.cs b/src/Plugins/BotSharp.Plugin.MongoStorage/MongoDbContext.cs index 2119c5d3..b8771a91 100644 --- a/src/Plugins/BotSharp.Plugin.MongoStorage/MongoDbContext.cs +++ b/src/Plugins/BotSharp.Plugin.MongoStorage/MongoDbContext.cs @@ -15,13 +15,14 @@ public class MongoDbContext public MongoDbContext(BotSharpDatabaseSettings dbSettings) { - var mongoDbConnectionString = dbSettings.BotSharpMongoDb; + var mongoDbConnectionString = dbSettings.BotSharpMongoDb.ConnectionString; + var dbNameIndex = dbSettings.BotSharpMongoDb.DbNameIndex; _mongoClient = new MongoClient(mongoDbConnectionString); - _mongoDbDatabaseName = GetDatabaseName(mongoDbConnectionString); + _mongoDbDatabaseName = GetDatabaseName(mongoDbConnectionString, dbNameIndex); _collectionPrefix = dbSettings.TablePrefix.IfNullOrEmptyAs("BotSharp"); } - private string GetDatabaseName(string mongoDbConnectionString) + private string GetDatabaseName(string mongoDbConnectionString, string? dbNameIndex = null) { var dbName = string.Empty; if (!Uri.TryCreate(mongoDbConnectionString, UriKind.Absolute, out var conn)) @@ -30,15 +31,15 @@ public class MongoDbContext } var query = HttpUtility.ParseQueryString(conn.Query); - dbName = conn.Segments?.FirstOrDefault(x => x != "/") ?? string.Empty; var keys = query.AllKeys ?? []; - foreach (var db in _dbIndexes) + + if (!string.IsNullOrWhiteSpace(dbNameIndex) && keys.Contains(dbNameIndex)) { - if (keys.Contains(db)) - { - dbName = query[db]; - break; - } + dbName = query[dbNameIndex]; + } + else + { + dbName = conn.Segments?.FirstOrDefault(x => x != "/") ?? string.Empty; } return dbName; } diff --git a/src/WebStarter/appsettings.json b/src/WebStarter/appsettings.json index a266272f..c4fd7435 100644 --- a/src/WebStarter/appsettings.json +++ b/src/WebStarter/appsettings.json @@ -226,7 +226,10 @@ "Database": { "Default": "FileRepository", "TablePrefix": "BotSharp", - "BotSharpMongoDb": "", + "BotSharpMongoDb": { + "ConnectionString": "", + "DbIndex": "" + }, "FileRepository": "data", "Assemblies": [ "BotSharp.Core" ] },