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;
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)

View file

@ -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;