add to setting

This commit is contained in:
Jicheng Lu 2024-07-21 23:58:40 -05:00
parent 0d23d00d8d
commit a4ee5ba049
3 changed files with 22 additions and 12 deletions

View file

@ -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; }
}

View file

@ -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;
}

View file

@ -226,7 +226,10 @@
"Database": {
"Default": "FileRepository",
"TablePrefix": "BotSharp",
"BotSharpMongoDb": "",
"BotSharpMongoDb": {
"ConnectionString": "",
"DbIndex": ""
},
"FileRepository": "data",
"Assemblies": [ "BotSharp.Core" ]
},