Skip to content

Commit 2f4d509

Browse files
author
尧杰 曾
committed
Fix bug:avoid duplicate data in db
1 parent 535cb02 commit 2f4d509

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

PermissionSync/Configuration.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ namespace PermissionSync
99
{
1010
public class Configuration :IRocketPluginConfiguration
1111
{
12+
public int TableVer;
1213
public string DatabaseAddress;
1314
public string DatabaseUsername;
1415
public string DatabasePassword;
@@ -17,8 +18,9 @@ public class Configuration :IRocketPluginConfiguration
1718
public int DatabasePort;
1819
public void LoadDefaults()
1920
{
21+
TableVer = 2;
2022
DatabaseAddress = "127.0.0.1";
21-
DatabaseUsername = "unturned";
23+
DatabaseUsername = "root";
2224
DatabasePassword = "password";
2325
DatabaseName = "unturned";
2426
DatabaseTableName = "permissionsync";

PermissionSync/Database/DBManager.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,13 @@ public DBManager()
2626
public void CheckSchama()
2727
{
2828
DBConnection.ExecuteQuery(true,
29-
$"CREATE TABLE IF NOT EXISTS `{Main.Instance.Configuration.Instance.DatabaseTableName}` (`SteamID` BIGINT NOT NULL, `PermissionGroup` varchar(32) NOT NULL, `ExpireDate` datetime(6) NOT NULL DEFAULT '{DateTime.MaxValue}', `Operator`VARCHAR(32) NOT NULL)");
29+
$"CREATE TABLE IF NOT EXISTS `{Main.Instance.Configuration.Instance.DatabaseTableName}` (`SteamID` BIGINT NOT NULL, `PermissionGroup` varchar(32) NOT NULL, `ExpireDate` datetime(6) NOT NULL DEFAULT '{DateTime.MaxValue}', `Operator`VARCHAR(32) NOT NULL , UNIQUE KEY unique_permission (SteamID,PermissionGroup)");
30+
31+
if(Main.Instance.Configuration.Instance.TableVer == 1)
32+
{
33+
DBConnection.ExecuteQuery(true,
34+
$"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseTableName}` ADD CONSTRAINT unique_permission UNIQUE KEY(`SteamID`,`PermissionGroup`)");
35+
}
3036
}
3137

3238
internal void PermissionSync(UnturnedPlayer player)
@@ -126,7 +132,7 @@ public void UpdatePermission(UnturnedPlayer player, string PermissionGroupId,Dat
126132
internal void SaveDataToDB(PermissionData permissionData)
127133
{
128134
DBConnection.ExecuteQuery(true,
129-
$"INSERT INTO `{Main.Instance.Configuration.Instance.DatabaseTableName}` (SteamID,PermissionGroup,ExpireDate,Operator) values('{permissionData.SteamID}','{permissionData.PermissionID}','{permissionData.ExpireDate}','{permissionData.OperatorID}') ");
135+
$"INSERT INTO `{Main.Instance.Configuration.Instance.DatabaseTableName}` (SteamID,PermissionGroup,ExpireDate,Operator) values('{permissionData.SteamID}','{permissionData.PermissionID}','{permissionData.ExpireDate}','{permissionData.OperatorID}') ON DUPLICATE KEY UPDATE `SteamID` = VALUES(`SteamID`),`PermissionGroup` = VALUES(`PermissionGroup`), `ExpireDate` = VALUES(`ExpireDate`), `Operator` = VALUES(`Operator`)");
130136
}
131137

132138
internal void RemoveDataFromDB(UnturnedPlayer player,string groupid)

PermissionSync/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@
3232
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
3333
//通过使用 "*",如下所示:
3434
// [assembly: AssemblyVersion("1.0.*")]
35-
[assembly: AssemblyVersion("1.0.0.3")]
36-
[assembly: AssemblyFileVersion("1.0.0.3")]
35+
[assembly: AssemblyVersion("1.0.1.0")]
36+
[assembly: AssemblyFileVersion("1.0.1.0")]

0 commit comments

Comments
 (0)