Now uses Query/QueryReader
This commit is contained in:
parent
d39d9e5127
commit
e8a5e7fb58
3 changed files with 269 additions and 473 deletions
|
|
@ -44,7 +44,7 @@ namespace TShockAPI.DB
|
||||||
using (var com = database.CreateCommand())
|
using (var com = database.CreateCommand())
|
||||||
{
|
{
|
||||||
string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
|
string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
|
||||||
"CREATE TABLE IF NOT EXISTS 'Regions' ('X1' NUMERIC, 'Y1' NUMERIC, 'height' NUMERIC, 'width' NUMERIC, 'RegionName' TEXT PRIMARY KEY, 'WorldID' TEXT, 'UserIds' TEXT, 'Protected' NUMERIC);":
|
"CREATE TABLE IF NOT EXISTS 'Regions' ('X1' NUMERIC, 'Y1' NUMERIC, 'height' NUMERIC, 'width' NUMERIC, 'RegionName' TEXT PRIMARY KEY, 'WorldID' TEXT, 'UserIds' TEXT, 'Protected' NUMERIC);" :
|
||||||
"CREATE TABLE IF NOT EXISTS Regions (X1 INT(11), Y1 INT(11), height INT(11), width INT(11), RegionName VARCHAR(255) PRIMARY, WorldID VARCHAR(255), UserIds VARCHAR(255), Protected INT(1));";
|
"CREATE TABLE IF NOT EXISTS Regions (X1 INT(11), Y1 INT(11), height INT(11), width INT(11), RegionName VARCHAR(255) PRIMARY, WorldID VARCHAR(255), UserIds VARCHAR(255), Protected INT(1));";
|
||||||
|
|
||||||
database.Query(query);
|
database.Query(query);
|
||||||
|
|
@ -122,22 +122,13 @@ namespace TShockAPI.DB
|
||||||
region.Area = rect;
|
region.Area = rect;
|
||||||
using (var com = database.CreateCommand())
|
using (var com = database.CreateCommand())
|
||||||
{
|
{
|
||||||
if (TShock.Config.StorageType.ToLower() == "sqlite")
|
string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
|
||||||
com.CommandText =
|
"INSERT OR IGNORE INTO Regions VALUES (@0, @1, @2, @3, @4, @5, @6, @7);" :
|
||||||
"INSERT OR IGNORE INTO Regions VALUES (@tx, @ty, @height, @width, @name, @worldid, @userids, @protected);";
|
"INSERT IGNORE INTO Regions SET X1=@0, Y1=@1, height=@2, width=@3, RegionName=@4, WorldID=@5, UserIds=@6, Protected=@7;";
|
||||||
else if (TShock.Config.StorageType.ToLower() == "mysql")
|
database.Query(query, region.Area.X, region.Area.Y, region.Area.Width, region.Area.Height, region.Name, region.WorldID, "", region.DisableBuild);
|
||||||
com.CommandText =
|
|
||||||
"INSERT IGNORE INTO Regions SET X1=@tx, Y1=@ty, height=@height, width=@width, RegionName=@name, WorldID=@world, UserIds=@userids, Protected=@protected;";
|
|
||||||
com.AddParameter("@tx", region.Area.X);
|
|
||||||
com.AddParameter("@ty", region.Area.Y);
|
|
||||||
com.AddParameter("@width", region.Area.Width);
|
|
||||||
com.AddParameter("@height", region.Area.Height);
|
|
||||||
com.AddParameter("@name", region.Name);
|
|
||||||
com.AddParameter("@worldid", region.WorldID);
|
|
||||||
//Todo: What should this be? We don't really have a way to go from ips to userids
|
//Todo: What should this be? We don't really have a way to go from ips to userids
|
||||||
com.AddParameter("@userids", ""/*string.Join(",", region.AllowedIDs)*/);
|
/*string.Join(",", region.AllowedIDs)*/
|
||||||
com.AddParameter("@protected", region.DisableBuild);
|
|
||||||
int num = com.ExecuteNonQuery();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -157,17 +148,8 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
database.Query("UPDATE Regions SET WorldID=@0, UserIds=''", Main.worldID.ToString());
|
||||||
{
|
ReloadAllRegions();
|
||||||
com.CommandText = "UPDATE Regions SET WorldID=@worldid";
|
|
||||||
com.AddParameter("@worldid", Main.worldID.ToString());
|
|
||||||
com.ExecuteNonQuery();
|
|
||||||
com.Parameters.Clear();
|
|
||||||
com.CommandText = "UPDATE Regions SET UserIds=@UserIds";
|
|
||||||
com.AddParameter("@UserIds", "");
|
|
||||||
com.ExecuteNonQuery();
|
|
||||||
ReloadAllRegions();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
@ -179,60 +161,7 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
using (var reader = database.QueryReader("SELECT * FROM Regions WHERE WorldID=@0", Main.worldID.ToString()))
|
||||||
{
|
|
||||||
com.CommandText = "SELECT * FROM Regions WHERE WorldID=@worldid";
|
|
||||||
com.AddParameter("@worldid", Main.worldID.ToString());
|
|
||||||
using (var reader = com.ExecuteReader())
|
|
||||||
{
|
|
||||||
Regions.Clear();
|
|
||||||
while (reader.Read())
|
|
||||||
{
|
|
||||||
int X1 = reader.Get<int>("X1");
|
|
||||||
int Y1 = reader.Get<int>("Y1");
|
|
||||||
int height = reader.Get<int>("height");
|
|
||||||
int width = reader.Get<int>("width");
|
|
||||||
int Protected = reader.Get<int>("Protected");
|
|
||||||
string MergedIDs = DbExt.Get<string>(reader, "UserIds");
|
|
||||||
string name = DbExt.Get<string>(reader, "RegionName");
|
|
||||||
|
|
||||||
string[] SplitIDs = MergedIDs.Split(',');
|
|
||||||
|
|
||||||
Region r = new Region(new Rectangle(X1, Y1, width, height), name, Protected != 0, Main.worldID.ToString());
|
|
||||||
try
|
|
||||||
{
|
|
||||||
for (int i = 0; i < SplitIDs.Length; i++)
|
|
||||||
{
|
|
||||||
r.AllowedIDs.Add(Convert.ToInt32(SplitIDs[i]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
Log.Error("Your database contains invalid UserIDs (they should be ints).");
|
|
||||||
Log.Error("A lot of things will fail because of this. You must manually delete and re-create the allowed field.");
|
|
||||||
Log.Error(e.Message);
|
|
||||||
Log.Error(e.StackTrace);
|
|
||||||
}
|
|
||||||
|
|
||||||
Regions.Add(r);
|
|
||||||
}
|
|
||||||
reader.Close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Log.Error(ex.ToString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ReloadForUnitTest(String n)
|
|
||||||
{
|
|
||||||
using (var com = database.CreateCommand())
|
|
||||||
{
|
|
||||||
com.CommandText = "SELECT * FROM Regions WHERE WorldID=@worldid";
|
|
||||||
com.AddParameter("@worldid", n);
|
|
||||||
using (var reader = com.ExecuteReader())
|
|
||||||
{
|
{
|
||||||
Regions.Clear();
|
Regions.Clear();
|
||||||
while (reader.Read())
|
while (reader.Read())
|
||||||
|
|
@ -244,6 +173,7 @@ namespace TShockAPI.DB
|
||||||
int Protected = reader.Get<int>("Protected");
|
int Protected = reader.Get<int>("Protected");
|
||||||
string MergedIDs = DbExt.Get<string>(reader, "UserIds");
|
string MergedIDs = DbExt.Get<string>(reader, "UserIds");
|
||||||
string name = DbExt.Get<string>(reader, "RegionName");
|
string name = DbExt.Get<string>(reader, "RegionName");
|
||||||
|
|
||||||
string[] SplitIDs = MergedIDs.Split(',');
|
string[] SplitIDs = MergedIDs.Split(',');
|
||||||
|
|
||||||
Region r = new Region(new Rectangle(X1, Y1, width, height), name, Protected != 0, Main.worldID.ToString());
|
Region r = new Region(new Rectangle(X1, Y1, width, height), name, Protected != 0, Main.worldID.ToString());
|
||||||
|
|
@ -251,7 +181,7 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
for (int i = 0; i < SplitIDs.Length; i++)
|
for (int i = 0; i < SplitIDs.Length; i++)
|
||||||
{
|
{
|
||||||
r.AllowedIDs[i] = Convert.ToInt32(SplitIDs[i]);
|
r.AllowedIDs.Add(Convert.ToInt32(SplitIDs[i]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
|
@ -264,32 +194,60 @@ namespace TShockAPI.DB
|
||||||
|
|
||||||
Regions.Add(r);
|
Regions.Add(r);
|
||||||
}
|
}
|
||||||
reader.Close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log.Error(ex.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ReloadForUnitTest(String n)
|
||||||
|
{
|
||||||
|
|
||||||
|
using (var reader = database.QueryReader("SELECT * FROM Regions WHERE WorldID=@0", n))
|
||||||
|
{
|
||||||
|
Regions.Clear();
|
||||||
|
while (reader.Read())
|
||||||
|
{
|
||||||
|
int X1 = reader.Get<int>("X1");
|
||||||
|
int Y1 = reader.Get<int>("Y1");
|
||||||
|
int height = reader.Get<int>("height");
|
||||||
|
int width = reader.Get<int>("width");
|
||||||
|
int Protected = reader.Get<int>("Protected");
|
||||||
|
string MergedIDs = DbExt.Get<string>(reader, "UserIds");
|
||||||
|
string name = DbExt.Get<string>(reader, "RegionName");
|
||||||
|
string[] SplitIDs = MergedIDs.Split(',');
|
||||||
|
|
||||||
|
Region r = new Region(new Rectangle(X1, Y1, width, height), name, Protected != 0, Main.worldID.ToString());
|
||||||
|
try
|
||||||
|
{
|
||||||
|
for (int i = 0; i < SplitIDs.Length; i++)
|
||||||
|
{
|
||||||
|
r.AllowedIDs[i] = Convert.ToInt32(SplitIDs[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Log.Error("Your database contains invalid UserIDs (they should be ints).");
|
||||||
|
Log.Error("A lot of things will fail because of this. You must manually delete and re-create the allowed field.");
|
||||||
|
Log.Error(e.Message);
|
||||||
|
Log.Error(e.StackTrace);
|
||||||
|
}
|
||||||
|
|
||||||
|
Regions.Add(r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool AddRegion(int tx, int ty, int width, int height, string regionname, string worldid)
|
public bool AddRegion(int tx, int ty, int width, int height, string regionname, string worldid)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
database.Query("INSERT INTO Regions VALUES (@0, @1, @2, @3, @4, @5, @6, @7);", tx, ty, width, height, regionname, worldid, "", 1);
|
||||||
{
|
Regions.Add(new Region(new Rectangle(tx, ty, width, height), regionname, true, worldid));
|
||||||
com.CommandText =
|
return true;
|
||||||
"INSERT INTO Regions VALUES (@tx, @ty, @height, @width, @name, @worldid, @userids, @protected);";
|
|
||||||
com.AddParameter("@tx", tx);
|
|
||||||
com.AddParameter("@ty", ty);
|
|
||||||
com.AddParameter("@width", width);
|
|
||||||
com.AddParameter("@height", height);
|
|
||||||
com.AddParameter("@name", regionname.ToLower());
|
|
||||||
com.AddParameter("@worldid", worldid);
|
|
||||||
com.AddParameter("@userids", "");
|
|
||||||
com.AddParameter("@protected", 1);
|
|
||||||
com.ExecuteNonQuery();
|
|
||||||
Regions.Add(new Region(new Rectangle(tx, ty, width, height), regionname, true, worldid));
|
|
||||||
return true;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
@ -302,15 +260,9 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
database.Query("DELETE FROM Regions WHERE RegionName=@0 AND WorldID=@1", name, Main.worldID.ToString());
|
||||||
{
|
Regions.Remove(getRegion(name));
|
||||||
com.CommandText = "DELETE FROM Regions WHERE RegionName=@name AND WorldID=@worldid";
|
return true;
|
||||||
com.AddParameter("@name", name.ToLower());
|
|
||||||
com.AddParameter("@worldid", Main.worldID.ToString());
|
|
||||||
com.ExecuteNonQuery();
|
|
||||||
Regions.Remove(getRegion(name));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
@ -323,16 +275,9 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
database.Query("UPDATE Regions SET Protected=@0 WHERE RegionName=@1 AND WorldID=@2", state ? 1 : 0, name, Main.worldID.ToString());
|
||||||
{
|
getRegion(name).DisableBuild = state;
|
||||||
com.CommandText = "UPDATE Regions SET Protected=@bool WHERE RegionName=@name AND WorldID=@worldid";
|
return true;
|
||||||
com.AddParameter("@name", name);
|
|
||||||
com.AddParameter("@bool", state ? 1 : 0);
|
|
||||||
com.AddParameter("@worldid", Main.worldID.ToString());
|
|
||||||
com.ExecuteNonQuery();
|
|
||||||
getRegion(name).DisableBuild = state;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
@ -345,16 +290,9 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
database.Query("UPDATE Regions SET Protected=@0 WHERE RegionName=@1 AND WorldID=@2", state ? 1 : 0, name, world);
|
||||||
{
|
getRegion(name).DisableBuild = state;
|
||||||
com.CommandText = "UPDATE Regions SET Protected=@bool WHERE RegionName=@name AND WorldID=@worldid";
|
return true;
|
||||||
com.AddParameter("@name", name);
|
|
||||||
com.AddParameter("@bool", state ? 1 : 0);
|
|
||||||
com.AddParameter("@worldid", world);
|
|
||||||
com.ExecuteNonQuery();
|
|
||||||
getRegion(name).DisableBuild = state;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
@ -412,7 +350,7 @@ namespace TShockAPI.DB
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
String[] s = MergedIDs.Split(',');
|
String[] s = MergedIDs.Split(',');
|
||||||
for( int i = 0; i < s.Length; i++ )
|
for (int i = 0; i < s.Length; i++)
|
||||||
{
|
{
|
||||||
if (!s[i].Equals(""))
|
if (!s[i].Equals(""))
|
||||||
SplitIDs.Add(s[i]);
|
SplitIDs.Add(s[i]);
|
||||||
|
|
@ -422,47 +360,31 @@ namespace TShockAPI.DB
|
||||||
|
|
||||||
public bool AddNewUser(string regionName, String userName)
|
public bool AddNewUser(string regionName, String userName)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
string MergedIDs = string.Empty;
|
||||||
|
using (var reader = database.QueryReader("SELECT * FROM Regions WHERE RegionName=@0 AND WorldID=@1", regionName, Main.worldID.ToString()))
|
||||||
{
|
{
|
||||||
com.CommandText = "SELECT * FROM Regions WHERE RegionName=@name AND WorldID=@worldid";
|
if (reader.Read())
|
||||||
com.AddParameter("@name", regionName);
|
MergedIDs = reader.Get<string>("UserIds");
|
||||||
com.AddParameter("@worldid", Main.worldID.ToString());
|
}
|
||||||
string MergedIDs = string.Empty;
|
|
||||||
using (var reader = com.ExecuteReader())
|
|
||||||
{
|
|
||||||
if (reader.Read())
|
|
||||||
MergedIDs = reader.Get<string>("UserIds");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (MergedIDs == string.Empty)
|
if (MergedIDs == string.Empty)
|
||||||
MergedIDs = Convert.ToString(TShock.Users.GetUserID(userName));
|
MergedIDs = Convert.ToString(TShock.Users.GetUserID(userName));
|
||||||
else
|
else
|
||||||
MergedIDs = MergedIDs + "," + Convert.ToString(TShock.Users.GetUserID(userName));
|
MergedIDs = MergedIDs + "," + Convert.ToString(TShock.Users.GetUserID(userName));
|
||||||
com.Parameters.Clear();
|
|
||||||
com.CommandText = "UPDATE Regions SET UserIds=@ids WHERE RegionName=@name AND WorldID=@worldid";
|
if (database.Query("UPDATE Regions SET UserIds=@0 WHERE RegionName=@1 AND WorldID=@2", MergedIDs, regionName, Main.worldID.ToString()) > 0)
|
||||||
com.AddParameter("@ids", MergedIDs);
|
{
|
||||||
com.AddParameter("@name", regionName);
|
ReloadAllRegions();
|
||||||
com.AddParameter("@worldid", Main.worldID.ToString());
|
return true;
|
||||||
if (com.ExecuteNonQuery() > 0)
|
|
||||||
{
|
|
||||||
ReloadAllRegions();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Log.Error(ex.ToString());
|
Log.Error(ex.ToString());
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -475,15 +397,10 @@ namespace TShockAPI.DB
|
||||||
var regions = new List<Region>();
|
var regions = new List<Region>();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
using (var reader = database.QueryReader("SELECT RegionName FROM Regions WHERE WorldID=@0", worldid))
|
||||||
{
|
{
|
||||||
com.CommandText = "SELECT RegionName FROM Regions WHERE WorldID=@worldid";
|
while (reader.Read())
|
||||||
com.AddParameter("@worldid", worldid);
|
regions.Add(new Region { Name = reader.Get<string>("RegionName") });
|
||||||
using (var reader = com.ExecuteReader())
|
|
||||||
{
|
|
||||||
while (reader.Read())
|
|
||||||
regions.Add(new Region { Name = reader.Get<string>("RegionName") });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|
@ -513,7 +430,7 @@ namespace TShockAPI.DB
|
||||||
public List<int> AllowedIDs { get; set; }
|
public List<int> AllowedIDs { get; set; }
|
||||||
|
|
||||||
public Region(Rectangle region, string name, bool disablebuild, string RegionWorldIDz)
|
public Region(Rectangle region, string name, bool disablebuild, string RegionWorldIDz)
|
||||||
:this()
|
: this()
|
||||||
{
|
{
|
||||||
Area = region;
|
Area = region;
|
||||||
Name = name;
|
Name = name;
|
||||||
|
|
|
||||||
|
|
@ -34,69 +34,60 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
database = db;
|
database = db;
|
||||||
|
|
||||||
using (var com = database.CreateCommand())
|
|
||||||
|
string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
|
||||||
|
"CREATE TABLE IF NOT EXISTS 'Users' ('ID' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE, 'Username' VARCHAR(32) UNIQUE, 'Password' VARCHAR(64), 'Usergroup' TEXT, 'IP' VARCHAR(32));" :
|
||||||
|
"CREATE TABLE IF NOT EXISTS Users (ID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, Username VARCHAR(32) UNIQUE, Password VARCHAR(64), Usergroup VARCHAR(255), IP VARCHAR(15));";
|
||||||
|
|
||||||
|
database.Query(query);
|
||||||
|
|
||||||
|
String file = Path.Combine(TShock.SavePath, "users.txt");
|
||||||
|
if (File.Exists(file))
|
||||||
{
|
{
|
||||||
if (TShock.Config.StorageType.ToLower() == "sqlite")
|
using (StreamReader sr = new StreamReader(file))
|
||||||
com.CommandText =
|
|
||||||
"CREATE TABLE IF NOT EXISTS 'Users' ('ID' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE, 'Username' VARCHAR(32) UNIQUE, 'Password' VARCHAR(64), 'Usergroup' TEXT, 'IP' VARCHAR(32));";
|
|
||||||
else if (TShock.Config.StorageType.ToLower() == "mysql")
|
|
||||||
com.CommandText =
|
|
||||||
"CREATE TABLE IF NOT EXISTS Users (ID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, Username VARCHAR(32) UNIQUE, Password VARCHAR(64), Usergroup VARCHAR(255), IP VARCHAR(15));";
|
|
||||||
|
|
||||||
com.ExecuteNonQuery();
|
|
||||||
|
|
||||||
String file = Path.Combine(TShock.SavePath, "users.txt");
|
|
||||||
if (File.Exists(file))
|
|
||||||
{
|
{
|
||||||
using (StreamReader sr = new StreamReader(file))
|
String line;
|
||||||
|
while ((line = sr.ReadLine()) != null)
|
||||||
{
|
{
|
||||||
String line;
|
if (line.Equals("") || line.Substring(0, 1).Equals("#"))
|
||||||
while ((line = sr.ReadLine()) != null )
|
continue;
|
||||||
|
String[] info = line.Split(' ');
|
||||||
|
String username = "";
|
||||||
|
String sha = "";
|
||||||
|
String group = "";
|
||||||
|
String ip = "";
|
||||||
|
|
||||||
|
String[] nameSha = info[0].Split(':');
|
||||||
|
|
||||||
|
if (nameSha.Length < 2)
|
||||||
{
|
{
|
||||||
if (line.Equals("") || line.Substring(0, 1).Equals("#") )
|
username = nameSha[0];
|
||||||
continue;
|
ip = nameSha[0];
|
||||||
String[] info = line.Split(' ');
|
group = info[1];
|
||||||
if (TShock.Config.StorageType.ToLower() == "sqlite")
|
|
||||||
com.CommandText = "INSERT OR IGNORE INTO Users (Username, Password, Usergroup, IP) VALUES (@name, @pass, @group, @ip);";
|
|
||||||
else if (TShock.Config.StorageType.ToLower() == "mysql")
|
|
||||||
com.CommandText = "INSERT IGNORE INTO Users SET Username=@name, Password=@pass, Usergroup=@group, IP=@ip ;";
|
|
||||||
|
|
||||||
String username = "";
|
|
||||||
String sha = "";
|
|
||||||
String group = "";
|
|
||||||
String ip = "";
|
|
||||||
|
|
||||||
String[] nameSha = info[0].Split(':');
|
|
||||||
|
|
||||||
if (nameSha.Length < 2)
|
|
||||||
{
|
|
||||||
username = nameSha[0];
|
|
||||||
ip = nameSha[0];
|
|
||||||
group = info[1];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
username = nameSha[0];
|
|
||||||
sha = nameSha[1];
|
|
||||||
group = info[1];
|
|
||||||
}
|
|
||||||
com.AddParameter("@name", username.Trim());
|
|
||||||
com.AddParameter("@pass", sha.Trim());
|
|
||||||
com.AddParameter("@group", group.Trim());
|
|
||||||
com.AddParameter("@ip", ip.Trim());
|
|
||||||
com.ExecuteNonQuery();
|
|
||||||
com.Parameters.Clear();
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
username = nameSha[0];
|
||||||
|
sha = nameSha[1];
|
||||||
|
group = info[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
|
||||||
|
"INSERT OR IGNORE INTO Users (Username, Password, Usergroup, IP) VALUES (@0, @1, @2, @3)" :
|
||||||
|
"INSERT IGNORE INTO Users SET Username=@0, Password=@1, Usergroup=@2, IP=@3";
|
||||||
|
|
||||||
|
database.Query(query, username.Trim(), sha.Trim(), group.Trim(), ip.Trim());
|
||||||
}
|
}
|
||||||
String path = Path.Combine(TShock.SavePath, "old_configs");
|
|
||||||
String file2 = Path.Combine(path, "users.txt");
|
|
||||||
if (!Directory.Exists(path))
|
|
||||||
System.IO.Directory.CreateDirectory(path);
|
|
||||||
if (File.Exists(file2))
|
|
||||||
File.Delete(file2);
|
|
||||||
File.Move(file, file2);
|
|
||||||
}
|
}
|
||||||
|
String path = Path.Combine(TShock.SavePath, "old_configs");
|
||||||
|
String file2 = Path.Combine(path, "users.txt");
|
||||||
|
if (!Directory.Exists(path))
|
||||||
|
System.IO.Directory.CreateDirectory(path);
|
||||||
|
if (File.Exists(file2))
|
||||||
|
File.Delete(file2);
|
||||||
|
File.Move(file, file2);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -107,24 +98,11 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
if (!TShock.Groups.GroupExists(user.Group))
|
||||||
{
|
throw new GroupNotExistsException(user.Group);
|
||||||
com.CommandText = "INSERT INTO Users (Username, Password, UserGroup, IP) VALUES (@name, @password, @group, @ip);";
|
|
||||||
com.AddParameter("@name", user.Name);
|
|
||||||
com.AddParameter("@password", Tools.HashPassword(user.Password));
|
|
||||||
|
|
||||||
if (!TShock.Groups.GroupExists(user.Group))
|
if (database.Query("INSERT INTO Users (Username, Password, UserGroup, IP) VALUES (@0, @1, @2, @3);", user.Name, Tools.HashPassword(user.Password), user.Group, user.Address) < 1)
|
||||||
throw new GroupNotExistsException(user.Group);
|
throw new UserExistsException(user.Name);
|
||||||
|
|
||||||
com.AddParameter("@group", user.Group);
|
|
||||||
com.AddParameter("@ip", user.Address);
|
|
||||||
|
|
||||||
using (var reader = com.ExecuteReader())
|
|
||||||
{
|
|
||||||
if (reader.RecordsAffected < 1)
|
|
||||||
throw new UserExistsException(user.Name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
@ -140,25 +118,18 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
int affected = -1;
|
||||||
|
if (!string.IsNullOrEmpty(user.Address))
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(user.Address))
|
affected = database.Query("DELETE FROM Users WHERE IP=@0", user.Address);
|
||||||
{
|
|
||||||
com.CommandText = "DELETE FROM Users WHERE IP=@ip";
|
|
||||||
com.AddParameter("@ip", user.Address);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
com.CommandText = "DELETE FROM Users WHERE Username=@name";
|
|
||||||
com.AddParameter("@name", user.Name);
|
|
||||||
}
|
|
||||||
|
|
||||||
using (var reader = com.ExecuteReader())
|
|
||||||
{
|
|
||||||
if (reader.RecordsAffected < 1)
|
|
||||||
throw new UserNotExistException(string.IsNullOrEmpty(user.Address) ? user.Name : user.Address);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
affected = database.Query("DELETE FROM Users WHERE Username=@0", user.Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (affected < 1)
|
||||||
|
throw new UserNotExistException(string.IsNullOrEmpty(user.Address) ? user.Name : user.Address);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
@ -176,18 +147,8 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
if (database.Query("UPDATE Users SET Password = @0 WHERE Username = @1;", Tools.HashPassword(password), user.Name) < 1)
|
||||||
{
|
throw new UserExistsException(user.Name);
|
||||||
com.CommandText = "UPDATE Users SET Password = @password WHERE Username = @name;";
|
|
||||||
com.AddParameter("@name", user.Name);
|
|
||||||
com.AddParameter("@password", Tools.HashPassword(password));
|
|
||||||
|
|
||||||
using (var reader = com.ExecuteReader())
|
|
||||||
{
|
|
||||||
if (reader.RecordsAffected < 1)
|
|
||||||
throw new UserExistsException(user.Name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
@ -204,22 +165,11 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
if (!TShock.Groups.GroupExists(group))
|
||||||
{
|
throw new GroupNotExistsException(group);
|
||||||
com.CommandText = "UPDATE Users SET UserGroup = @group WHERE Username = @name;";
|
|
||||||
com.AddParameter("@name", user.Name);
|
|
||||||
|
|
||||||
if (!TShock.Groups.GroupExists(group))
|
if (database.Query("UPDATE Users SET UserGroup = @0 WHERE Username = @1;", group, user.Name) < 1)
|
||||||
throw new GroupNotExistsException(group);
|
throw new UserExistsException(user.Name);
|
||||||
|
|
||||||
com.AddParameter("@group", group);
|
|
||||||
|
|
||||||
using (var reader = com.ExecuteReader())
|
|
||||||
{
|
|
||||||
if (reader.RecordsAffected < 1)
|
|
||||||
throw new UserExistsException(user.Name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
@ -238,21 +188,15 @@ namespace TShockAPI.DB
|
||||||
string[] returndata = new string[2];
|
string[] returndata = new string[2];
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
using (var reader = database.QueryReader("SELECT * FROM Users WHERE Username=@0", username))
|
||||||
{
|
{
|
||||||
com.CommandText = "SELECT * FROM Users WHERE Username=@name";
|
if (reader.Read())
|
||||||
com.AddParameter("@name", username.ToLower());
|
|
||||||
|
|
||||||
using (var reader = com.ExecuteReader())
|
|
||||||
{
|
{
|
||||||
if (reader.Read())
|
returndata[0] = reader.Get<string>("Password");
|
||||||
{
|
returndata[1] = reader.Get<string>("UserGroup");
|
||||||
returndata[0] = reader.Get<string>("Password");
|
return returndata;
|
||||||
returndata[1] = reader.Get<string>("UserGroup");
|
|
||||||
return returndata;
|
|
||||||
}
|
|
||||||
reader.Close();
|
|
||||||
}
|
}
|
||||||
|
reader.Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|
@ -266,18 +210,11 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
using (var reader = database.QueryReader("SELECT * FROM Users WHERE Username=@0", username))
|
||||||
{
|
{
|
||||||
com.CommandText = "SELECT * FROM Users WHERE Username=@name";
|
if (reader.Read())
|
||||||
com.AddParameter("@name", username.ToLower());
|
|
||||||
|
|
||||||
using (var reader = com.ExecuteReader())
|
|
||||||
{
|
{
|
||||||
if (reader.Read())
|
return reader.Get<int>("ID");
|
||||||
{
|
|
||||||
return reader.Get<int>("ID");
|
|
||||||
}
|
|
||||||
reader.Close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -296,18 +233,12 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
using (var reader = database.QueryReader("SELECT * FROM Users WHERE IP=@0", ip))
|
||||||
{
|
{
|
||||||
com.CommandText = "SELECT * FROM Users WHERE IP=@ip";
|
if (reader.Read())
|
||||||
com.AddParameter("@ip", ip);
|
|
||||||
|
|
||||||
using (var reader = com.ExecuteReader())
|
|
||||||
{
|
{
|
||||||
if (reader.Read())
|
string group = reader.Get<string>("UserGroup");
|
||||||
{
|
return Tools.GetGroup(group);
|
||||||
string group = reader.Get<string>("UserGroup");
|
|
||||||
return Tools.GetGroup(group);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -322,19 +253,13 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
using (var reader = database.QueryReader("SELECT IP, UserGroup FROM Users"))
|
||||||
{
|
{
|
||||||
com.CommandText = "SELECT * FROM Users";
|
while (reader.Read())
|
||||||
|
|
||||||
using (var reader = com.ExecuteReader())
|
|
||||||
{
|
{
|
||||||
while(reader.Read())
|
if (Tools.GetIPv4Address(reader.Get<string>("IP")) == ip)
|
||||||
{
|
{
|
||||||
if (Tools.GetIPv4Address(reader.Get<string>("IP")) == ip)
|
return Tools.GetGroup(reader.Get<string>("UserGroup"));
|
||||||
{
|
|
||||||
string group = reader.Get<string>("UserGroup");
|
|
||||||
return Tools.GetGroup(group);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -373,27 +298,23 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
IDataReader result;
|
||||||
|
if (string.IsNullOrEmpty(user.Address))
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(user.Address))
|
result = database.QueryReader("SELECT * FROM Users WHERE Username=@0", user.Name);
|
||||||
{
|
}
|
||||||
com.CommandText = "SELECT * FROM Users WHERE Username=@name";
|
else
|
||||||
com.AddParameter("@name", user.Name);
|
{
|
||||||
}
|
result = database.QueryReader("SELECT * FROM Users WHERE IP=@0", user.Address);
|
||||||
else
|
}
|
||||||
{
|
|
||||||
com.CommandText = "SELECT * FROM Users WHERE IP=@ip";
|
|
||||||
com.AddParameter("@ip", user.Address);
|
|
||||||
}
|
|
||||||
|
|
||||||
using (var reader = com.ExecuteReader())
|
using (var reader = result)
|
||||||
|
{
|
||||||
|
if (reader.Read())
|
||||||
{
|
{
|
||||||
if (reader.Read())
|
user.ID = reader.Get<int>("ID");
|
||||||
{
|
user.Group = reader.Get<string>("Usergroup");
|
||||||
user.ID = reader.Get<int>("ID");
|
return user;
|
||||||
user.Group = reader.Get<string>("Usergroup");
|
|
||||||
return user;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,112 +34,96 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
database = db;
|
database = db;
|
||||||
|
|
||||||
using (var com = database.CreateCommand())
|
string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
|
||||||
|
"CREATE TABLE IF NOT EXISTS 'Warps' ('X' NUMERIC, 'Y' NUMERIC, 'WarpName' TEXT PRIMARY KEY, 'WorldID' TEXT);" :
|
||||||
|
"CREATE TABLE IF NOT EXISTS Warps (X INT(11), Y INT(11), WarpName VARCHAR(255) PRIMARY, WorldID VARCHAR(255));";
|
||||||
|
|
||||||
|
database.Query(query);
|
||||||
|
|
||||||
|
String file = Path.Combine(TShock.SavePath, "warps.xml");
|
||||||
|
String name = "";
|
||||||
|
String world = "";
|
||||||
|
int x1 = 0;
|
||||||
|
int y1 = 0;
|
||||||
|
if (File.Exists(file))
|
||||||
{
|
{
|
||||||
if (TShock.Config.StorageType.ToLower() == "sqlite")
|
XmlReader reader;
|
||||||
com.CommandText =
|
using (reader = XmlReader.Create(new StreamReader(file)))
|
||||||
"CREATE TABLE IF NOT EXISTS 'Warps' ('X' NUMERIC, 'Y' NUMERIC, 'WarpName' TEXT PRIMARY KEY, 'WorldID' TEXT);";
|
|
||||||
else if (TShock.Config.StorageType.ToLower() == "mysql")
|
|
||||||
com.CommandText =
|
|
||||||
"CREATE TABLE IF NOT EXISTS Warps (X INT(11), Y INT(11), WarpName VARCHAR(255) PRIMARY, WorldID VARCHAR(255));";
|
|
||||||
|
|
||||||
com.ExecuteNonQuery();
|
|
||||||
|
|
||||||
String file = Path.Combine(TShock.SavePath, "warps.xml");
|
|
||||||
String name = "";
|
|
||||||
String world = "";
|
|
||||||
int x1 = 0;
|
|
||||||
int y1 = 0;
|
|
||||||
if (File.Exists(file))
|
|
||||||
{
|
{
|
||||||
XmlReader reader;
|
// Parse the file and display each of the nodes.
|
||||||
using (reader = XmlReader.Create(new StreamReader(file)))
|
while (reader.Read())
|
||||||
{
|
{
|
||||||
// Parse the file and display each of the nodes.
|
switch (reader.NodeType)
|
||||||
while (reader.Read())
|
|
||||||
{
|
{
|
||||||
switch (reader.NodeType)
|
case XmlNodeType.Element:
|
||||||
{
|
switch (reader.Name)
|
||||||
case XmlNodeType.Element:
|
{
|
||||||
switch (reader.Name)
|
case "Warp":
|
||||||
{
|
name = "";
|
||||||
case "Warp":
|
world = "";
|
||||||
name = "";
|
x1 = 0;
|
||||||
world = "";
|
y1 = 0;
|
||||||
x1 = 0;
|
break;
|
||||||
y1 = 0;
|
case "WarpName":
|
||||||
break;
|
while (reader.NodeType != XmlNodeType.Text)
|
||||||
case "WarpName":
|
reader.Read();
|
||||||
while (reader.NodeType != XmlNodeType.Text)
|
name = reader.Value;
|
||||||
reader.Read();
|
break;
|
||||||
name = reader.Value;
|
case "X":
|
||||||
break;
|
while (reader.NodeType != XmlNodeType.Text)
|
||||||
case "X":
|
reader.Read();
|
||||||
while (reader.NodeType != XmlNodeType.Text)
|
int.TryParse(reader.Value, out x1);
|
||||||
reader.Read();
|
break;
|
||||||
int.TryParse(reader.Value, out x1);
|
case "Y":
|
||||||
break;
|
while (reader.NodeType != XmlNodeType.Text)
|
||||||
case "Y":
|
reader.Read();
|
||||||
while (reader.NodeType != XmlNodeType.Text)
|
int.TryParse(reader.Value, out y1);
|
||||||
reader.Read();
|
break;
|
||||||
int.TryParse(reader.Value, out y1);
|
case "WorldName":
|
||||||
break;
|
while (reader.NodeType != XmlNodeType.Text)
|
||||||
case "WorldName":
|
reader.Read();
|
||||||
while (reader.NodeType != XmlNodeType.Text)
|
world = reader.Value;
|
||||||
reader.Read();
|
break;
|
||||||
world = reader.Value;
|
}
|
||||||
break;
|
break;
|
||||||
}
|
case XmlNodeType.Text:
|
||||||
break;
|
|
||||||
case XmlNodeType.Text:
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case XmlNodeType.XmlDeclaration:
|
case XmlNodeType.XmlDeclaration:
|
||||||
case XmlNodeType.ProcessingInstruction:
|
case XmlNodeType.ProcessingInstruction:
|
||||||
break;
|
break;
|
||||||
case XmlNodeType.Comment:
|
case XmlNodeType.Comment:
|
||||||
break;
|
break;
|
||||||
case XmlNodeType.EndElement:
|
case XmlNodeType.EndElement:
|
||||||
if (reader.Name.Equals("Warp"))
|
if (reader.Name.Equals("Warp"))
|
||||||
{
|
{
|
||||||
if (TShock.Config.StorageType.ToLower() == "sqlite")
|
query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
|
||||||
com.CommandText = "INSERT OR IGNORE INTO Warps VALUES (@tx, @ty,@name, @worldid);";
|
"INSERT OR IGNORE INTO Warps VALUES (@0, @1,@2, @3);" :
|
||||||
else if (TShock.Config.StorageType.ToLower() == "mysql")
|
"INSERT IGNORE INTO Warps SET X=@0, Y=@1, WarpName=@2, WorldID=@3;";
|
||||||
com.CommandText = "INSERT IGNORE INTO Warps SET X=@tx, Y=@ty, WarpName=@name, WorldID=@worldid;";
|
database.Query(query, x1, y1, name, world);
|
||||||
com.AddParameter("@tx", x1);
|
}
|
||||||
com.AddParameter("@ty", y1);
|
break;
|
||||||
com.AddParameter("@name", name);
|
|
||||||
com.AddParameter("@worldid", world);
|
|
||||||
com.ExecuteNonQuery();
|
|
||||||
com.Parameters.Clear();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
reader.Close();
|
|
||||||
String path = Path.Combine(TShock.SavePath, "old_configs");
|
|
||||||
String file2 = Path.Combine(path, "warps.xml");
|
|
||||||
if (!Directory.Exists(path))
|
|
||||||
System.IO.Directory.CreateDirectory(path);
|
|
||||||
if (File.Exists(file2))
|
|
||||||
File.Delete(file2);
|
|
||||||
//File.Move(file, file2);
|
|
||||||
}
|
}
|
||||||
|
reader.Close();
|
||||||
|
String path = Path.Combine(TShock.SavePath, "old_configs");
|
||||||
|
String file2 = Path.Combine(path, "warps.xml");
|
||||||
|
if (!Directory.Exists(path))
|
||||||
|
System.IO.Directory.CreateDirectory(path);
|
||||||
|
if (File.Exists(file2))
|
||||||
|
File.Delete(file2);
|
||||||
|
//File.Move(file, file2);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ConvertDB()
|
public void ConvertDB()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
database.Query("UPDATE Warps SET WorldID=@0", Main.worldID.ToString());
|
||||||
{
|
|
||||||
com.CommandText = "UPDATE Warps SET WorldID=@worldid";
|
|
||||||
com.AddParameter("@worldid", Main.worldID.ToString());
|
|
||||||
com.ExecuteNonQuery();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
@ -151,16 +135,8 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
database.Query("INSERT INTO Warps (X, Y, WarpName, WorldID) VALUES (@0, @1, @2, @3);", x, y, name, worldid);
|
||||||
{
|
return true;
|
||||||
com.CommandText = "INSERT INTO Warps (X, Y, WarpName, WorldID) VALUES (@x, @y, @name, @worldid);";
|
|
||||||
com.AddParameter("@x", x);
|
|
||||||
com.AddParameter("@y", y);
|
|
||||||
com.AddParameter("@name", name.ToLower());
|
|
||||||
com.AddParameter("@worldid", worldid);
|
|
||||||
com.ExecuteNonQuery();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
@ -173,14 +149,8 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
database.Query("DELETE FROM Warps WHERE WarpName=@0 AND WorldID=@1", name, Main.worldID.ToString());
|
||||||
{
|
return true;
|
||||||
com.CommandText = "DELETE FROM Warps WHERE WarpName=@name AND WorldID=@worldid";
|
|
||||||
com.AddParameter("@name", name.ToLower());
|
|
||||||
com.AddParameter("@worldid", Main.worldID.ToString());
|
|
||||||
com.ExecuteNonQuery();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
@ -193,18 +163,11 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
using (var reader = database.QueryReader("SELECT * FROM Warps WHERE WarpName=@0 AND WorldID=@1", name, Main.worldID.ToString()))
|
||||||
{
|
{
|
||||||
com.CommandText = "SELECT * FROM Warps WHERE WarpName=@name AND WorldID=@worldid";
|
if (reader.Read())
|
||||||
com.AddParameter("@name", name);
|
|
||||||
com.AddParameter("@worldid", Main.worldID.ToString());
|
|
||||||
using (var reader = com.ExecuteReader())
|
|
||||||
{
|
{
|
||||||
if (reader.Read())
|
return new Warp(new Vector2(reader.Get<int>("X"), reader.Get<int>("Y")), reader.Get<string>("WarpName"), reader.Get<string>("WorldID"));
|
||||||
{
|
|
||||||
return new Warp(new Vector2(reader.Get<int>("X"), reader.Get<int>("Y")), reader.Get<string>("WarpName"), reader.Get<string>("WorldID"));
|
|
||||||
}
|
|
||||||
reader.Close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -225,15 +188,10 @@ namespace TShockAPI.DB
|
||||||
var warps = new List<Warp>();
|
var warps = new List<Warp>();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var com = database.CreateCommand())
|
using (var reader = database.QueryReader("SELECT WarpName FROM Warps WHERE WorldID=@0", worldid))
|
||||||
{
|
{
|
||||||
com.CommandText = "SELECT WarpName FROM Warps WHERE WorldID=@worldid";
|
while (reader.Read())
|
||||||
com.AddParameter("@worldid", worldid);
|
warps.Add(new Warp { WarpName = reader.Get<string>("WarpName") });
|
||||||
using (var reader = com.ExecuteReader())
|
|
||||||
{
|
|
||||||
while (reader.Read())
|
|
||||||
warps.Add(new Warp { WarpName = reader.Get<string>("WarpName") });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue