Merge pull request #558 from iceljc/bugfix/get-mongo-db-name

Bugfix/get mongo db name
This commit is contained in:
C. Oceania 2024-07-22 18:11:52 -05:00 committed by GitHub
commit 46d537efea
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 22 additions and 5 deletions

View file

@ -28,4 +28,4 @@ public class DbConnectionSetting
{
Slavers = new string[0];
}
}
}

View file

@ -1,3 +1,5 @@
using System.Web;
namespace BotSharp.Plugin.MongoStorage;
public class MongoDbContext
@ -6,6 +8,8 @@ public class MongoDbContext
private readonly string _mongoDbDatabaseName;
private readonly string _collectionPrefix;
private const string DB_NAME_INDEX = "authSource";
public MongoDbContext(BotSharpDatabaseSettings dbSettings)
{
var mongoDbConnectionString = dbSettings.BotSharpMongoDb;
@ -16,14 +20,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);
var keys = query.AllKeys ?? [];
if (keys.Contains(DB_NAME_INDEX))
{
dbName = query[DB_NAME_INDEX];
}
else
{
dbName = conn.Segments?.FirstOrDefault(x => x != "/") ?? string.Empty;
}
return dbName;
}
private IMongoDatabase Database { get { return _mongoClient.GetDatabase(_mongoDbDatabaseName); } }
#region Indexes