fix(db): Fix casing for regions and warps

This commit is contained in:
Sakura Akeno Isayeki 2025-04-29 02:05:51 +02:00
parent de602a91d4
commit 4c13084eb3
No known key found for this signature in database
GPG key ID: BAB781B71FD2E7E6
2 changed files with 17 additions and 9 deletions

View file

@ -146,7 +146,8 @@ namespace TShockAPI.DB
int id; 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()) if (res.Read())
{ {
@ -157,6 +158,7 @@ namespace TShockAPI.DB
return false; return false;
} }
} }
Region region = new Region(id, new Rectangle(tx, ty, width, height), regionname, owner, true, worldid, z); Region region = new Region(id, new Rectangle(tx, ty, width, height), regionname, owner, true, worldid, z);
Regions.Add(region); Regions.Add(region);
Hooks.RegionHooks.OnRegionCreated(region); Hooks.RegionHooks.OnRegionCreated(region);
@ -178,7 +180,7 @@ namespace TShockAPI.DB
{ {
try 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 worldid = Main.worldID.ToString();
var region = Regions.FirstOrDefault(r => r.ID == id && r.WorldID == worldid); var region = Regions.FirstOrDefault(r => r.ID == id && r.WorldID == worldid);
Regions.RemoveAll(r => r.ID == id && r.WorldID == worldid); Regions.RemoveAll(r => r.ID == id && r.WorldID == worldid);
@ -201,7 +203,7 @@ namespace TShockAPI.DB
{ {
try 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 worldid = Main.worldID.ToString();
var region = Regions.FirstOrDefault(r => r.Name == name && r.WorldID == worldid); var region = Regions.FirstOrDefault(r => r.Name == name && r.WorldID == worldid);
Regions.RemoveAll(r => r.Name == name && r.WorldID == worldid); Regions.RemoveAll(r => r.Name == name && r.WorldID == worldid);
@ -251,7 +253,7 @@ namespace TShockAPI.DB
{ {
try 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()); Main.worldID.ToString());
var region = GetRegionByName(name); var region = GetRegionByName(name);
if (region != null) if (region != null)

View file

@ -65,8 +65,13 @@ namespace TShockAPI.DB
{ {
try try
{ {
if (database.Query("INSERT INTO Warps (X, Y, WarpName, WorldID) VALUES (@0, @1, @2, @3);", string query = database.GetSqlType() switch
x, y, name, Main.worldID.ToString()) > 0) {
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)); Warps.Add(new Warp(new Point(x, y), name));
return true; return true;
@ -76,6 +81,7 @@ namespace TShockAPI.DB
{ {
TShock.Log.Error(ex.ToString()); TShock.Log.Error(ex.ToString());
} }
return false; return false;
} }
@ -106,7 +112,7 @@ namespace TShockAPI.DB
{ {
try 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) warpName, Main.worldID.ToString()) > 0)
{ {
Warps.RemoveAll(w => string.Equals(w.Name, warpName, StringComparison.OrdinalIgnoreCase)); Warps.RemoveAll(w => string.Equals(w.Name, warpName, StringComparison.OrdinalIgnoreCase));
@ -141,7 +147,7 @@ namespace TShockAPI.DB
{ {
try 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) x, y, warpName, Main.worldID.ToString()) > 0)
{ {
Warps.Find(w => string.Equals(w.Name, warpName, StringComparison.OrdinalIgnoreCase)).Position = new Point(x, y); Warps.Find(w => string.Equals(w.Name, warpName, StringComparison.OrdinalIgnoreCase)).Position = new Point(x, y);
@ -165,7 +171,7 @@ namespace TShockAPI.DB
{ {
try 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) state ? "1" : "0", warpName, Main.worldID.ToString()) > 0)
{ {
Warps.Find(w => string.Equals(w.Name, warpName, StringComparison.OrdinalIgnoreCase)).IsPrivate = state; Warps.Find(w => string.Equals(w.Name, warpName, StringComparison.OrdinalIgnoreCase)).IsPrivate = state;