修改了数据库初始化逻辑

This commit is contained in:
milimoe 2025-03-27 01:32:12 +08:00
parent 98e484f6fc
commit 47d29ced5e
Signed by: milimoe
GPG Key ID: 05D280912DA6C69E
3 changed files with 42 additions and 6 deletions

View File

@ -194,8 +194,8 @@ namespace Milimoe.FunGame.Server.Services.DataUtility
{ {
try try
{ {
OpenConnection(); ExecuteDataSet(Core.Library.SQLScript.Common.Configs.Select_GetConfig(this, "Initialization"));
return true; return Success;
} }
catch (Exception e) catch (Exception e)
{ {

View File

@ -245,7 +245,21 @@ namespace Milimoe.FunGame.Server.Services.DataUtility
/// <returns></returns> /// <returns></returns>
public override bool DatabaseExists() public override bool DatabaseExists()
{ {
return File.Exists(ServerInfo.SQLServerDataBase); try
{
ExecuteDataSet(Core.Library.SQLScript.Common.Configs.Select_GetConfig(this, "Initialization"));
return Success;
}
catch (Exception e)
{
ServerHelper.Error(e);
_result = SQLResult.Fail;
return false;
}
finally
{
Close();
}
} }
private bool _isDisposed = false; private bool _isDisposed = false;

View File

@ -43,6 +43,11 @@ namespace Milimoe.FunGame.Server.Services
/// </summary> /// </summary>
public static PluginConfig UserKeys { get; set; } = new("system", "user_keys"); public static PluginConfig UserKeys { get; set; } = new("system", "user_keys");
/// <summary>
/// 服务器配置
/// </summary>
public static PluginConfig SQLConfig { get; set; } = new("system", "sqlconfig");
/// <summary> /// <summary>
/// 默认的 Web API Token ID在首次初始化数据库时生成一个 Secret Key /// 默认的 Web API Token ID在首次初始化数据库时生成一个 Secret Key
/// </summary> /// </summary>
@ -317,7 +322,7 @@ namespace Milimoe.FunGame.Server.Services
sqlHelper.ExecuteDataSet(ApiTokens.Select_GetAPIToken(sqlHelper, token)); sqlHelper.ExecuteDataSet(ApiTokens.Select_GetAPIToken(sqlHelper, token));
if (sqlHelper.Success) if (sqlHelper.Success)
{ {
sqlHelper.Execute(ApiTokens.Update_GetAPIToken(sqlHelper, token, key, reference1, reference2)); sqlHelper.Execute(ApiTokens.Update_APIToken(sqlHelper, token, key, reference1, reference2));
} }
else else
{ {
@ -337,9 +342,10 @@ namespace Milimoe.FunGame.Server.Services
public static void AfterCreateSQLService(SQLHelper sqlHelper) public static void AfterCreateSQLService(SQLHelper sqlHelper)
{ {
Config.SQLMode = sqlHelper.Mode; Config.SQLMode = sqlHelper.Mode;
if (!sqlHelper.DatabaseExists()) ServerHelper.WriteLine("正在检查数据库 . . .", InvokeMessageType.Core);
if (!DatabaseExists() && !sqlHelper.DatabaseExists())
{ {
ServerHelper.WriteLine("正在初始化数据库 . . .", InvokeMessageType.Core); ServerHelper.WriteLine("数据库检查失败,正在初始化数据库 . . .", InvokeMessageType.Core);
if (sqlHelper is SQLiteHelper sqliteHelper) if (sqlHelper is SQLiteHelper sqliteHelper)
{ {
sqliteHelper.ExecuteSqlFile(AppDomain.CurrentDomain.BaseDirectory + "fungame_sqlite.sql"); sqliteHelper.ExecuteSqlFile(AppDomain.CurrentDomain.BaseDirectory + "fungame_sqlite.sql");
@ -349,12 +355,28 @@ namespace Milimoe.FunGame.Server.Services
mysqlHelper.ExecuteSqlFile(AppDomain.CurrentDomain.BaseDirectory + "fungame.sql"); mysqlHelper.ExecuteSqlFile(AppDomain.CurrentDomain.BaseDirectory + "fungame.sql");
} }
SetAPISecretKey(FunGameWebAPITokenID, sqlHelper: sqlHelper); SetAPISecretKey(FunGameWebAPITokenID, sqlHelper: sqlHelper);
sqlHelper.Execute(Configs.Insert_Config(sqlHelper, "Initialization", FunGameInfo.FunGame_Version, "SQL Service Installed."));
SQLConfig.Clear();
SQLConfig.Add("Initialized", true);
SQLConfig.SaveConfig();
ServerHelper.WriteLine("数据库初始化完毕!", InvokeMessageType.Core);
} }
else ServerHelper.WriteLine("数据库检查通过!", InvokeMessageType.Core);
ServerLogin(sqlHelper); ServerLogin(sqlHelper);
ClearRoomList(sqlHelper); ClearRoomList(sqlHelper);
sqlHelper.Dispose(); sqlHelper.Dispose();
} }
public static bool DatabaseExists()
{
SQLConfig.LoadConfig();
if (SQLConfig.TryGetValue("Initialized", out object? value) && value is bool initialized)
{
return initialized;
}
return false;
}
/// <summary> /// <summary>
/// 关闭服务器要做的事 /// 关闭服务器要做的事
/// </summary> /// </summary>