From 4c13084eb38c8b9fd2b45d7d1583cd773af86d6a Mon Sep 17 00:00:00 2001 From: Sakura Akeno Isayeki Date: Tue, 29 Apr 2025 02:05:51 +0200 Subject: [PATCH] fix(db): Fix casing for regions and warps --- TShockAPI/DB/RegionManager.cs | 10 ++++++---- TShockAPI/DB/WarpsManager.cs | 16 +++++++++++----- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/TShockAPI/DB/RegionManager.cs b/TShockAPI/DB/RegionManager.cs index cc7eacdb..27acd7a6 100644 --- a/TShockAPI/DB/RegionManager.cs +++ b/TShockAPI/DB/RegionManager.cs @@ -146,7 +146,8 @@ namespace TShockAPI.DB int id; - using (QueryResult res = database.QueryReader("SELECT Id FROM Regions WHERE RegionName = @0 AND WorldID = @1", regionname, worldid)) + using (QueryResult res = database.QueryReader( + $"SELECT {"Id".EscapeSqlId(database)} FROM Regions WHERE {"RegionName".EscapeSqlId(database)} = @0 AND {"WorldID".EscapeSqlId(database)} = @1", regionname, worldid)) { if (res.Read()) { @@ -157,6 +158,7 @@ namespace TShockAPI.DB return false; } } + Region region = new Region(id, new Rectangle(tx, ty, width, height), regionname, owner, true, worldid, z); Regions.Add(region); Hooks.RegionHooks.OnRegionCreated(region); @@ -178,7 +180,7 @@ namespace TShockAPI.DB { try { - database.Query("DELETE FROM Regions WHERE Id=@0 AND WorldID=@1", id, Main.worldID.ToString()); + database.Query($"DELETE FROM Regions WHERE Id=@0 AND {"WorldID".EscapeSqlId(database)}=@1", id, Main.worldID.ToString()); var worldid = Main.worldID.ToString(); var region = Regions.FirstOrDefault(r => r.ID == id && r.WorldID == worldid); Regions.RemoveAll(r => r.ID == id && r.WorldID == worldid); @@ -201,7 +203,7 @@ namespace TShockAPI.DB { try { - database.Query("DELETE FROM Regions WHERE RegionName=@0 AND WorldID=@1", name, Main.worldID.ToString()); + database.Query($"DELETE FROM Regions WHERE {"RegionName".EscapeSqlId(database)}=@0 AND {"WorldID".EscapeSqlId(database)}=@1", name, Main.worldID.ToString()); var worldid = Main.worldID.ToString(); var region = Regions.FirstOrDefault(r => r.Name == name && r.WorldID == worldid); Regions.RemoveAll(r => r.Name == name && r.WorldID == worldid); @@ -251,7 +253,7 @@ namespace TShockAPI.DB { try { - database.Query("UPDATE Regions SET Protected=@0 WHERE RegionName=@1 AND WorldID=@2", state ? 1 : 0, name, + database.Query($"UPDATE Regions SET {"Protected".EscapeSqlId(database)}=@0 WHERE {"RegionName".EscapeSqlId(database)}=@1 AND {"WorldID".EscapeSqlId(database)}=@2", state ? 1 : 0, name, Main.worldID.ToString()); var region = GetRegionByName(name); if (region != null) diff --git a/TShockAPI/DB/WarpsManager.cs b/TShockAPI/DB/WarpsManager.cs index fb28f1a4..0bd49d0a 100644 --- a/TShockAPI/DB/WarpsManager.cs +++ b/TShockAPI/DB/WarpsManager.cs @@ -65,8 +65,13 @@ namespace TShockAPI.DB { try { - if (database.Query("INSERT INTO Warps (X, Y, WarpName, WorldID) VALUES (@0, @1, @2, @3);", - x, y, name, Main.worldID.ToString()) > 0) + string query = database.GetSqlType() switch + { + SqlType.Postgres => "INSERT INTO Warps (\"X\", \"Y\", \"WarpName\", \"WorldID\") VALUES (@0, @1, @2, @3);", + _ => "INSERT INTO Warps (X, Y, WarpName, WorldID) VALUES (@0, @1, @2, @3);" + }; + + if (database.Query(query, x, y, name, Main.worldID.ToString()) > 0) { Warps.Add(new Warp(new Point(x, y), name)); return true; @@ -76,6 +81,7 @@ namespace TShockAPI.DB { TShock.Log.Error(ex.ToString()); } + return false; } @@ -106,7 +112,7 @@ namespace TShockAPI.DB { try { - if (database.Query("DELETE FROM Warps WHERE WarpName = @0 AND WorldID = @1", + if (database.Query($"DELETE FROM Warps WHERE {"WarpName".EscapeSqlId(database)} = @0 AND {"WorldID".EscapeSqlId(database)} = @1", warpName, Main.worldID.ToString()) > 0) { Warps.RemoveAll(w => string.Equals(w.Name, warpName, StringComparison.OrdinalIgnoreCase)); @@ -141,7 +147,7 @@ namespace TShockAPI.DB { try { - if (database.Query("UPDATE Warps SET X = @0, Y = @1 WHERE WarpName = @2 AND WorldID = @3", + if (database.Query($"UPDATE Warps SET X = @0, Y = @1 WHERE {"WarpName".EscapeSqlId(database)} = @2 AND WorldID = @3", x, y, warpName, Main.worldID.ToString()) > 0) { Warps.Find(w => string.Equals(w.Name, warpName, StringComparison.OrdinalIgnoreCase)).Position = new Point(x, y); @@ -165,7 +171,7 @@ namespace TShockAPI.DB { try { - if (database.Query("UPDATE Warps SET Private = @0 WHERE WarpName = @1 AND WorldID = @2", + if (database.Query($"UPDATE Warps SET {"Private".EscapeSqlId(database)} = @0 WHERE {"WarpName".EscapeSqlId(database)} = @1 AND {"WorldID".EscapeSqlId(database)} = @2", state ? "1" : "0", warpName, Main.worldID.ToString()) > 0) { Warps.Find(w => string.Equals(w.Name, warpName, StringComparison.OrdinalIgnoreCase)).IsPrivate = state;