refine mongo db name
This commit is contained in:
parent
5637a414de
commit
d2e268ebf2
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue