refine mongo db name
This commit is contained in:
parent
5637a414de
commit
d2e268ebf2
|
|
@ -1,3 +1,5 @@
|
||||||
|
using System.Web;
|
||||||
|
|
||||||
namespace BotSharp.Plugin.MongoStorage;
|
namespace BotSharp.Plugin.MongoStorage;
|
||||||
|
|
||||||
public class MongoDbContext
|
public class MongoDbContext
|
||||||
|
|
@ -6,6 +8,11 @@ public class MongoDbContext
|
||||||
private readonly string _mongoDbDatabaseName;
|
private readonly string _mongoDbDatabaseName;
|
||||||
private readonly string _collectionPrefix;
|
private readonly string _collectionPrefix;
|
||||||
|
|
||||||
|
private readonly IEnumerable<string> _dbKeys = new List<string>()
|
||||||
|
{
|
||||||
|
"authSource"
|
||||||
|
};
|
||||||
|
|
||||||
public MongoDbContext(BotSharpDatabaseSettings dbSettings)
|
public MongoDbContext(BotSharpDatabaseSettings dbSettings)
|
||||||
{
|
{
|
||||||
var mongoDbConnectionString = dbSettings.BotSharpMongoDb;
|
var mongoDbConnectionString = dbSettings.BotSharpMongoDb;
|
||||||
|
|
@ -16,14 +23,27 @@ public class MongoDbContext
|
||||||
|
|
||||||
private string GetDatabaseName(string mongoDbConnectionString)
|
private string GetDatabaseName(string mongoDbConnectionString)
|
||||||
{
|
{
|
||||||
var databaseName = mongoDbConnectionString.Substring(mongoDbConnectionString.LastIndexOf("/", StringComparison.InvariantCultureIgnoreCase) + 1);
|
var dbName = string.Empty;
|
||||||
if (databaseName.Contains("?"))
|
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); } }
|
private IMongoDatabase Database { get { return _mongoClient.GetDatabase(_mongoDbDatabaseName); } }
|
||||||
|
|
||||||
#region Indexes
|
#region Indexes
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue