refine mongo db name

This commit is contained in:
Jicheng Lu 2024-07-21 23:33:22 -05:00
parent 5637a414de
commit d2e268ebf2

View file

@ -1,3 +1,5 @@
using System.Web;
namespace BotSharp.Plugin.MongoStorage;
public class MongoDbContext
@ -6,6 +8,11 @@ public class MongoDbContext
private readonly string _mongoDbDatabaseName;
private readonly string _collectionPrefix;
private readonly IEnumerable<string> _dbKeys = new List<string>()
{
"authSource"
};
public MongoDbContext(BotSharpDatabaseSettings dbSettings)
{
var mongoDbConnectionString = dbSettings.BotSharpMongoDb;
@ -16,14 +23,27 @@ public class MongoDbContext
private string GetDatabaseName(string mongoDbConnectionString)
{
var databaseName = mongoDbConnectionString.Substring(mongoDbConnectionString.LastIndexOf("/", StringComparison.InvariantCultureIgnoreCase) + 1);
if (databaseName.Contains("?"))
var dbName = string.Empty;
if (!Uri.TryCreate(mongoDbConnectionString, UriKind.Absolute, out var conn))
{
databaseName = databaseName.Substring(0, databaseName.IndexOf("?", StringComparison.InvariantCultureIgnoreCase));
return dbName;
}
return databaseName;
var query = HttpUtility.ParseQueryString(conn.Query);
dbName = conn.Segments?.FirstOrDefault(x => x != "/") ?? string.Empty;
var keys = query.AllKeys ?? [];
foreach (var db in _dbKeys)
{
if (keys.Contains(db))
{
dbName = query[db];
break;
}
}
return dbName;
}
private IMongoDatabase Database { get { return _mongoClient.GetDatabase(_mongoDbDatabaseName); } }
#region Indexes