Skip to content

Commit caeecee

Browse files
committed
[增加]1. 增加DB数据库连接选项类
1 parent 93976d5 commit caeecee

File tree

4 files changed

+54
-21
lines changed

4 files changed

+54
-21
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// GameFrameX 组织下的以及组织衍生的项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
2+
//
3+
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE 文件。
4+
//
5+
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
6+
7+
namespace GameFrameX.DataBase.Abstractions;
8+
9+
/// <summary>
10+
/// 数据库选项
11+
/// </summary>
12+
public sealed record DbOptions
13+
{
14+
/// <summary>
15+
/// 数据库类型
16+
/// </summary>
17+
public string Type { get; init; }
18+
19+
/// <summary>
20+
/// 连接字符串
21+
/// </summary>
22+
public string ConnectionString { get; init; }
23+
24+
/// <summary>
25+
/// 数据库名称
26+
/// </summary>
27+
public string Name { get; init; }
28+
}

GameFrameX.DataBase/Abstractions/IDatabaseService.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ public interface IDatabaseService
1010
/// <summary>
1111
/// 链接数据库
1212
/// </summary>
13-
/// <param name="url">链接地址</param>
14-
/// <param name="dbName">数据库名称</param>
15-
Task Open(string url, string dbName);
13+
/// <param name="dbOptions">数据库配置选项</param>
14+
/// <returns>返回数据库是否初始化成功</returns>
15+
Task<bool> Open(DbOptions dbOptions);
1616

1717
/// <summary>
1818
/// 关闭数据库连接

GameFrameX.DataBase/GameDB.cs

+8-7
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,16 @@ public static class GameDb
1717
/// 初始化GameDb
1818
/// </summary>
1919
/// <typeparam name="T">数据库服务的具体实现类型,必须实现IDatabaseService接口且有无参构造函数</typeparam>
20-
/// <param name="mongoUrl">MongoDB连接URL,不能为null</param>
21-
/// <param name="mongoDbName">MongoDB数据库的名称,不能为null</param>
22-
/// <exception cref="ArgumentNullException">当mongoUrl或mongoDbName为null时抛出</exception>
23-
public static async Task Init<T>(string mongoUrl, string mongoDbName) where T : IDatabaseService, new()
20+
/// <param name="dbOptions">数据库配置选项</param>
21+
/// <exception cref="ArgumentNullException">当 ConnectionString 或 Name 为null时抛出</exception>
22+
/// <returns>返回数据库是否初始化成功</returns>
23+
public static async Task<bool> Init<T>(DbOptions dbOptions) where T : IDatabaseService, new()
2424
{
25-
ArgumentNullException.ThrowIfNull(mongoUrl, nameof(mongoUrl));
26-
ArgumentNullException.ThrowIfNull(mongoDbName, nameof(mongoDbName));
25+
ArgumentNullException.ThrowIfNull(dbOptions, nameof(dbOptions));
26+
ArgumentNullException.ThrowIfNull(dbOptions.ConnectionString, nameof(dbOptions.ConnectionString));
27+
ArgumentNullException.ThrowIfNull(dbOptions.Name, nameof(dbOptions.Name));
2728
_dbServiceImplementation = new T();
28-
await _dbServiceImplementation.Open(mongoUrl, mongoDbName);
29+
return await _dbServiceImplementation.Open(dbOptions);
2930
}
3031

3132
/// <summary>

GameFrameX.DataBase/Mongo/MongoDbService.cs

+15-11
Original file line numberDiff line numberDiff line change
@@ -23,24 +23,28 @@ public sealed partial class MongoDbService : IDatabaseService
2323
private MongoDbContext _mongoDbContext;
2424

2525
/// <summary>
26-
/// 打开MongoDB连接并指定URL和数据库名称。
26+
/// 链接数据库
2727
/// </summary>
28-
/// <param name="url">MongoDB连接URL。</param>
29-
/// <param name="dbName">要使用的数据库名称。</param>
30-
public async Task Open(string url, string dbName)
28+
/// <param name="dbOptions">数据库配置选项</param>
29+
/// <returns>返回数据库是否初始化成功</returns>
30+
public async Task<bool> Open(DbOptions dbOptions)
3131
{
3232
try
3333
{
34-
var settings = MongoClientSettings.FromConnectionString(url);
35-
await DB.InitAsync(dbName, settings);
34+
ArgumentNullException.ThrowIfNull(dbOptions.ConnectionString, nameof(dbOptions.ConnectionString));
35+
ArgumentNullException.ThrowIfNull(dbOptions.Name, nameof(dbOptions.Name));
36+
var settings = MongoClientSettings.FromConnectionString(dbOptions.ConnectionString);
37+
await DB.InitAsync(dbOptions.Name, settings);
3638
_mongoDbContext = new MongoDbContext();
37-
CurrentDatabase = DB.Database(dbName);
38-
LogHelper.Info($"初始化MongoDB服务完成 Url:{url} DbName:{dbName}");
39+
CurrentDatabase = DB.Database(dbOptions.Name);
40+
LogHelper.Info($"初始化MongoDB服务完成 Url:{dbOptions.ConnectionString} DbName:{dbOptions.Name}");
41+
return true;
3942
}
40-
catch (Exception)
43+
catch (Exception exception)
4144
{
42-
LogHelper.Error($"初始化MongoDB服务失败 Url:{url} DbName:{dbName}");
43-
throw;
45+
LogHelper.Fatal(exception);
46+
LogHelper.Error($"初始化MongoDB服务失败 Url:{dbOptions.ConnectionString} DbName:{dbOptions.Name}");
47+
return false;
4448
}
4549
}
4650

0 commit comments

Comments
 (0)