Skip to content

Commit 46d537e

Browse files
authored
Merge pull request #558 from iceljc/bugfix/get-mongo-db-name
Bugfix/get mongo db name
2 parents 5637a41 + bf253a8 commit 46d537e

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

src/Infrastructure/BotSharp.Abstraction/Repositories/BotSharpDatabaseSettings.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,4 @@ public DbConnectionSetting()
2828
{
2929
Slavers = new string[0];
3030
}
31-
}
31+
}

src/Plugins/BotSharp.Plugin.MongoStorage/MongoDbContext.cs

+21-4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
using System.Web;
2+
13
namespace BotSharp.Plugin.MongoStorage;
24

35
public class MongoDbContext
@@ -6,6 +8,8 @@ public class MongoDbContext
68
private readonly string _mongoDbDatabaseName;
79
private readonly string _collectionPrefix;
810

11+
private const string DB_NAME_INDEX = "authSource";
12+
913
public MongoDbContext(BotSharpDatabaseSettings dbSettings)
1014
{
1115
var mongoDbConnectionString = dbSettings.BotSharpMongoDb;
@@ -16,14 +20,27 @@ public MongoDbContext(BotSharpDatabaseSettings dbSettings)
1620

1721
private string GetDatabaseName(string mongoDbConnectionString)
1822
{
19-
var databaseName = mongoDbConnectionString.Substring(mongoDbConnectionString.LastIndexOf("/", StringComparison.InvariantCultureIgnoreCase) + 1);
20-
if (databaseName.Contains("?"))
23+
var dbName = string.Empty;
24+
if (!Uri.TryCreate(mongoDbConnectionString, UriKind.Absolute, out var conn))
2125
{
22-
databaseName = databaseName.Substring(0, databaseName.IndexOf("?", StringComparison.InvariantCultureIgnoreCase));
26+
return dbName;
2327
}
24-
return databaseName;
28+
29+
var query = HttpUtility.ParseQueryString(conn.Query);
30+
var keys = query.AllKeys ?? [];
31+
32+
if (keys.Contains(DB_NAME_INDEX))
33+
{
34+
dbName = query[DB_NAME_INDEX];
35+
}
36+
else
37+
{
38+
dbName = conn.Segments?.FirstOrDefault(x => x != "/") ?? string.Empty;
39+
}
40+
return dbName;
2541
}
2642

43+
2744
private IMongoDatabase Database { get { return _mongoClient.GetDatabase(_mongoDbDatabaseName); } }
2845

2946
#region Indexes

0 commit comments

Comments
 (0)