Style: Use more modular code for DELETE FROM.

This commit is contained in:
UnknownShadow200 2016-10-24 12:32:00 +11:00
parent ad1dca0470
commit 8f4ad83ed6
3 changed files with 16 additions and 11 deletions

View File

@ -38,10 +38,8 @@ namespace MCGalaxy.Commands {
if (message == "") {
using (DataTable Inbox = Database.Backend.GetRows("Inbox" + p.name, "*", "ORDER BY TimeSent")) {
if (Inbox.Rows.Count == 0) { Player.Message(p, "No messages found."); return; }
int i = 0;
foreach (DataRow row in Inbox.Rows) {
OutputMessage(p, row);
i++;
}
}
} else if (parts[0] == "del" || parts[0] == "delete") {
@ -66,9 +64,9 @@ namespace MCGalaxy.Commands {
Database.Backend.ClearTable("Inbox" + p.name);
} else {
DataRow row = Inbox.Rows[num];
string syntax = "DELETE FROM `Inbox" + p.name + "` WHERE PlayerFrom=@0 AND TimeSent=@1";
string time = Convert.ToDateTime(row["TimeSent"]).ToString("yyyy-MM-dd HH:mm:ss");
Database.Execute(syntax, row["PlayerFrom"], time);
Database.Backend.DeleteRows("Inbox" + p.name,
"WHERE PlayerFrom=@0 AND TimeSent=@1", row["PlayerFrom"], time);
}
if (num == -1) Player.Message(p, "Deleted all messages.");

View File

@ -106,5 +106,13 @@ namespace MCGalaxy.SQL {
if (modifier != "") syntax += " " + modifier;
Database.Execute(syntax, args);
}
/// <summary> Deletes rows for the given table from the database. </summary>
/// <remarks> modifier is optional SQL which can be used to delete only certain rows.</remarks>
public virtual void DeleteRows(string table, string modifier = "", params object[] args) {
string syntax = "DELETE FROM `" + table + "`";
if (modifier != "") syntax += " " + modifier;
Database.Execute(syntax, args);
}
}
}

View File

@ -125,7 +125,7 @@ namespace MCGalaxy {
if (Block.Props[block].IsPortal) continue;
}
Database.Execute("DELETE FROM `Portals" + name + "` WHERE EntryX=@0 AND EntryY=@1 AND EntryZ=@2", x, y, z);
Database.Backend.DeleteRows("Portals" + name, "WHERE EntryX=@0 AND EntryY=@1 AND EntryZ=@2", x, y, z);
}
}
}
@ -145,9 +145,8 @@ namespace MCGalaxy {
} else {
if (Block.Props[block].IsMessageBlock) continue;
}
//givenName is safe against SQL injections, it gets checked in CmdLoad.cs
Database.Execute("DELETE FROM `Messages" + name + "` WHERE X=@0 AND Y=@1 AND Z=@2", x, y, z);
Database.Backend.DeleteRows("Messages" + name, "WHERE X=@0 AND Y=@1 AND Z=@2", x, y, z);
}
}
}
@ -156,9 +155,9 @@ namespace MCGalaxy {
object locker = ThreadSafeCache.DBCache.Get(level);
lock (locker) {
if (!Database.TableExists("Zone" + level)) return;
Database.Execute("DELETE FROM `Zone" + level + "` WHERE Owner=@0 AND SmallX=@1 AND " +
"SMALLY=@2 AND SMALLZ=@3 AND BIGX=@4 AND BIGY=@5 AND BIGZ=@6",
zn.Owner, zn.smallX, zn.smallY, zn.smallZ, zn.bigX, zn.bigY, zn.bigZ);
Database.Backend.DeleteRows("Zone" + level, "WHERE Owner=@0 AND SmallX=@1 AND SMALLY=@2 " +
"AND SMALLZ=@3 AND BIGX=@4 AND BIGY=@5 AND BIGZ=@6",
zn.Owner, zn.smallX, zn.smallY, zn.smallZ, zn.bigX, zn.bigY, zn.bigZ);
}
}