From 57a2d082ef68c864ef787f4b1a4b328e5b9e8c95 Mon Sep 17 00:00:00 2001 From: high Date: Sun, 24 Jul 2011 10:12:18 -0400 Subject: [PATCH] Added query function for easier queries. Normalized method names in GroupManager.cs --- TShockAPI/Commands.cs | 8 +- TShockAPI/DB/BanManager.cs | 118 +++++++------------ TShockAPI/DB/DbExt.cs | 40 ++++++- TShockAPI/DB/GroupManager.cs | 208 ++++++++++++---------------------- TShockAPI/DB/ItemManager.cs | 84 ++++++-------- TShockAPI/DB/RegionManager.cs | 9 +- TShockAPI/DB/SqlTable.cs | 11 ++ TShockAPI/TShockAPI.csproj | 3 +- 8 files changed, 205 insertions(+), 276 deletions(-) create mode 100644 TShockAPI/DB/SqlTable.cs diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 230add18..896cc4bd 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -1218,7 +1218,7 @@ namespace TShockAPI args.Parameters.RemoveAt(0); String permissions = String.Join(",", args.Parameters ); - String response = TShock.Groups.addGroup(groupname, permissions); + String response = TShock.Groups.AddGroup(groupname, permissions); if( response.Length > 0 ) args.Player.SendMessage(response, Color.Green); } @@ -1234,7 +1234,7 @@ namespace TShockAPI { String groupname = args.Parameters[0]; - String response = TShock.Groups.delGroup(groupname); + String response = TShock.Groups.DeleteGroup(groupname); if (response.Length > 0) args.Player.SendMessage(response, Color.Green); } @@ -1256,14 +1256,14 @@ namespace TShockAPI if (com.Equals("add")) { - String response = TShock.Groups.addPermission(groupname, args.Parameters); + String response = TShock.Groups.AddPermissions(groupname, args.Parameters); if (response.Length > 0) args.Player.SendMessage(response, Color.Green); return; } else if (com.Equals("del") || com.Equals("delete")) { - String response = TShock.Groups.delPermission(groupname, args.Parameters); + String response = TShock.Groups.DeletePermissions(groupname, args.Parameters); if (response.Length > 0) args.Player.SendMessage(response, Color.Green); return; diff --git a/TShockAPI/DB/BanManager.cs b/TShockAPI/DB/BanManager.cs index b4beb54d..20bf5c84 100644 --- a/TShockAPI/DB/BanManager.cs +++ b/TShockAPI/DB/BanManager.cs @@ -34,45 +34,39 @@ namespace TShockAPI.DB { database = db; - using (var com = database.CreateCommand()) + string query; + if (TShock.Config.StorageType.ToLower() == "sqlite") + query = + "CREATE TABLE IF NOT EXISTS 'Bans' ('IP' TEXT PRIMARY KEY, 'Name' TEXT, 'Reason' TEXT);"; + else + query = + "CREATE TABLE IF NOT EXISTS Bans (IP VARCHAR(255) PRIMARY, Name VARCHAR(255), Reason VARCHAR(255));"; + + db.Query(query); + + String file = Path.Combine(TShock.SavePath, "bans.txt"); + if (File.Exists(file)) { - if (TShock.Config.StorageType.ToLower() == "sqlite") - com.CommandText = - "CREATE TABLE IF NOT EXISTS 'Bans' ('IP' TEXT PRIMARY KEY, 'Name' TEXT, 'Reason' TEXT);"; - else if (TShock.Config.StorageType.ToLower() == "mysql") - com.CommandText = - "CREATE TABLE IF NOT EXISTS Bans (IP VARCHAR(255) PRIMARY, Name VARCHAR(255), Reason VARCHAR(255));"; - - com.ExecuteNonQuery(); - - String file = Path.Combine( TShock.SavePath, "bans.txt" ); - if (File.Exists(file)) + using (StreamReader sr = new StreamReader(file)) { - using (StreamReader sr = new StreamReader(file)) + String line; + while ((line = sr.ReadLine()) != null) { - String line; - while ((line = sr.ReadLine()) != null) - { - String[] info = line.Split('|'); - if (TShock.Config.StorageType.ToLower() == "sqlite") - com.CommandText = "INSERT OR IGNORE INTO Bans (IP, Name, Reason) VALUES (@ip, @name, @reason);"; - else if (TShock.Config.StorageType.ToLower() == "mysql") - com.CommandText = "INSERT IGNORE INTO Bans SET IP=@ip, Name=@name, Reason=@reason;"; - com.AddParameter("@ip", info[0].Trim()); - com.AddParameter("@name", info[1].Trim()); - com.AddParameter("@reason", info[2].Trim()); - com.ExecuteNonQuery(); - com.Parameters.Clear(); - } + String[] info = line.Split('|'); + if (TShock.Config.StorageType.ToLower() == "sqlite") + query = "INSERT OR IGNORE INTO Bans (IP, Name, Reason) VALUES (@0, @1, @2);"; + else + query = "INSERT IGNORE INTO Bans SET IP=@0, Name=@1, Reason=@2;"; + db.Query(query, info[0].Trim(), info[1].Trim(), info[2].Trim()); } - String path = Path.Combine(TShock.SavePath, "old_configs"); - String file2 = Path.Combine(path, "bans.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, "bans.txt"); + if (!Directory.Exists(path)) + System.IO.Directory.CreateDirectory(path); + if (File.Exists(file2)) + File.Delete(file2); + File.Move(file, file2); } } @@ -80,17 +74,10 @@ namespace TShockAPI.DB { try { - using (var com = database.CreateCommand()) + using (var reader = database.QueryReader("SELECT * FROM Bans WHERE IP=@0", ip)) { - com.CommandText = "SELECT * FROM Bans WHERE IP=@ip"; - com.AddParameter("@ip", ip); - using (var reader = com.ExecuteReader()) - { - if (reader.Read()) - return new Ban((string)reader["IP"], (string)reader["Name"], (string)reader["Reason"]); - - reader.Close(); - } + if (reader.Read()) + return new Ban((string)reader["IP"], (string)reader["Name"], (string)reader["Reason"]); } } catch (Exception ex) @@ -108,20 +95,14 @@ namespace TShockAPI.DB } try { - using (var com = database.CreateCommand()) + var namecol = casesensitive ? "Name" : "UPPER(Name)"; + if (!casesensitive) + name = name.ToUpper(); + using (var reader = database.QueryReader("SELECT * FROM Bans WHERE " + namecol + "=@0", name)) { - var namecol = casesensitive ? "Name" : "UPPER(Name)"; - if (!casesensitive) - name = name.ToUpper(); - com.CommandText = "SELECT * FROM Bans WHERE " + namecol + "=@name"; - com.AddParameter("@name", name); - using (var reader = com.ExecuteReader()) - { - if (reader.Read()) - return new Ban((string)reader["IP"], (string)reader["Name"], (string)reader["Reason"]); + if (reader.Read()) + return new Ban((string)reader["IP"], (string)reader["Name"], (string)reader["Reason"]); - reader.Close(); - } } } catch (Exception ex) @@ -135,15 +116,7 @@ namespace TShockAPI.DB { try { - using (var com = database.CreateCommand()) - { - com.CommandText = "INSERT INTO Bans (IP, Name, Reason) VALUES (@ip, @name, @reason);"; - com.AddParameter("@ip", ip); - com.AddParameter("@name", name); - com.AddParameter("@reason", reason); - com.ExecuteNonQuery(); - } - return true; + return database.Query("INSERT INTO Bans (IP, Name, Reason) VALUES (@0, @1, @2);", ip, name, reason) != 0; } catch (Exception ex) { @@ -156,13 +129,7 @@ namespace TShockAPI.DB { try { - using (var com = database.CreateCommand()) - { - com.CommandText = "DELETE FROM Bans WHERE IP=@ip"; - com.AddParameter("@ip", ip); - com.ExecuteNonQuery(); - return true; - } + return database.Query("DELETE FROM Bans WHERE IP=@ip", ip) != 0; } catch (Exception ex) { @@ -174,12 +141,7 @@ namespace TShockAPI.DB { try { - using (var com = database.CreateCommand()) - { - com.CommandText = "DELETE FROM Bans"; - com.ExecuteNonQuery(); - return true; - } + return database.Query("DELETE FROM Bans") != 0; } catch (Exception ex) { diff --git a/TShockAPI/DB/DbExt.cs b/TShockAPI/DB/DbExt.cs index 13942cf2..49014ac8 100644 --- a/TShockAPI/DB/DbExt.cs +++ b/TShockAPI/DB/DbExt.cs @@ -7,7 +7,45 @@ using System.Text; namespace TShockAPI.DB { public static class DbExt - { + { + + /// + /// Executes a query on a database. + /// + /// Database to query + /// Query string with parameters as @0, @1, etc. + /// Parameters to be put in the query + /// Rows affected by query + public static int Query(this IDbConnection db, string query, params object[] args) + { + using (var com = db.CreateCommand()) + { + com.CommandText = query; + for (int i = 0; i < args.Length; i++) + com.AddParameter("@" + i, args[i]); + + return com.ExecuteNonQuery(); + } + } + /// + /// Executes a query on a database. + /// + /// Database to query + /// Query string with parameters as @0, @1, etc. + /// Parameters to be put in the query + /// Query result as IDataReader + public static IDataReader QueryReader(this IDbConnection db, string query, params object[] args) + { + using (var com = db.CreateCommand()) + { + com.CommandText = query; + for (int i = 0; i < args.Length; i++) + com.AddParameter("@" + i, args[i]); + + return com.ExecuteReader(); + } + } + public static IDbDataParameter AddParameter(this IDbCommand command, string name, object data) { var parm = command.CreateParameter(); diff --git a/TShockAPI/DB/GroupManager.cs b/TShockAPI/DB/GroupManager.cs index bd0edb4e..c82b2eaa 100644 --- a/TShockAPI/DB/GroupManager.cs +++ b/TShockAPI/DB/GroupManager.cs @@ -18,17 +18,15 @@ namespace TShockAPI.DB { database = db; - using (var com = database.CreateCommand()) - { - if (TShock.Config.StorageType.ToLower() == "sqlite") - com.CommandText = - "CREATE TABLE IF NOT EXISTS 'GroupList' ('GroupName' TEXT PRIMARY KEY, 'Commands' TEXT, 'OrderBy' TEXT);"; - else if (TShock.Config.StorageType.ToLower() == "mysql") - com.CommandText = - "CREATE TABLE IF NOT EXISTS GroupList (GroupName VARCHAR(255) PRIMARY, Commands VARCHAR(255), OrderBy VARCHAR(255));"; + string query; + if (TShock.Config.StorageType.ToLower() == "sqlite") + query = + "CREATE TABLE IF NOT EXISTS 'GroupList' ('GroupName' TEXT PRIMARY KEY, 'Commands' TEXT, 'OrderBy' TEXT);"; + else + query = + "CREATE TABLE IF NOT EXISTS GroupList (GroupName VARCHAR(255) PRIMARY, Commands VARCHAR(255), OrderBy VARCHAR(255));"; - com.ExecuteNonQuery(); - } + db.Query(query); //Add default groups AddGroup("trustedadmin", "admin,maintenance,cfg,butcher,item,heal,immunetoban,ignorecheatdetection,ignoregriefdetection,usebanneditem,manageusers"); @@ -60,18 +58,14 @@ namespace TShockAPI.DB comms = comms + ","; comms = comms + info[i].Trim(); } - using (var com = database.CreateCommand()) - { - if (TShock.Config.StorageType.ToLower() == "sqlite") - com.CommandText = "INSERT OR IGNORE INTO GroupList (GroupName, Commands, OrderBy) VALUES (@groupname, @commands, @order);"; - else if (TShock.Config.StorageType.ToLower() == "mysql") - com.CommandText = "INSERT IGNORE INTO GroupList SET GroupName=@groupname, Commands=@commands, OrderBy=@order;"; - com.AddParameter("@groupname", info[0].Trim()); - com.AddParameter("@commands", comms); - com.AddParameter("@order", hasOrder ? info[info.Length - 1] : "0"); - com.ExecuteNonQuery(); - } + if (TShock.Config.StorageType.ToLower() == "sqlite") + query = "INSERT OR IGNORE INTO GroupList (GroupName, Commands, OrderBy) VALUES (@0, @1, @2);"; + else if (TShock.Config.StorageType.ToLower() == "mysql") + query = "INSERT IGNORE INTO GroupList SET GroupName=@0, Commands=@1, OrderBy=@2;"; + + db.Query(query, info[0].Trim(), comms, hasOrder ? info[info.Length - 1] : "0"); + } } } @@ -86,27 +80,6 @@ namespace TShockAPI.DB } - /// - /// Adds group with name and permissions if it does not exist. - /// - /// name of group - /// permissions - public void AddGroup(string name, string commands) - { - using (var com = database.CreateCommand()) - { - if (TShock.Config.StorageType.ToLower() == "sqlite") - com.CommandText = - "INSERT OR IGNORE INTO GroupList (GroupName, Commands, OrderBy) VALUES (@groupname, @commands, @order);"; - else if (TShock.Config.StorageType.ToLower() == "mysql") - com.CommandText = - "INSERT IGNORE INTO GroupList SET GroupName=@groupname, Commands=@commands, OrderBy=@order;"; - com.AddParameter("@groupname", name); - com.AddParameter("@commands", commands); - com.AddParameter("@order", "0"); - com.ExecuteNonQuery(); - } - } public bool GroupExists(string group) { @@ -123,93 +96,74 @@ namespace TShockAPI.DB return false; } - public String addGroup(String name, String permissions) + /// + /// Adds group with name and permissions if it does not exist. + /// + /// name of group + /// permissions + public String AddGroup(String name, String permissions) { String message = ""; - if( GroupExists( name ) ) + if (GroupExists(name)) return "Error: Group already exists. Use /modGroup to change permissions."; - using (var com = database.CreateCommand()) - { - if (TShock.Config.StorageType.ToLower() == "sqlite") - com.CommandText = "INSERT OR IGNORE INTO GroupList (GroupName, Commands, OrderBy) VALUES (@groupname, @commands, @order);"; - else if (TShock.Config.StorageType.ToLower() == "mysql") - com.CommandText = "INSERT IGNORE INTO GroupList SET GroupName=@groupname, Commands=@commands, OrderBy=@order;"; - com.AddParameter("@groupname", name); - com.AddParameter("@commands", permissions); - com.AddParameter("@order", "0"); - if (com.ExecuteNonQuery() == 1) - message = "Group " + name + " has been created successfully."; - Group g = new Group(name); - g.permissions.Add(permissions); - groups.Add(g); - } + + + + string query = (TShock.Config.StorageType.ToLower() == "sqlite") ? + "INSERT OR IGNORE INTO GroupList (GroupName, Commands, OrderBy) VALUES (@0, @1, @2);" : + "INSERT IGNORE INTO GroupList SET GroupName=@0, Commands=@1, OrderBy=@2;"; + if (database.Query(query, name, permissions, "0") == 1) + message = "Group " + name + " has been created successfully."; + Group g = new Group(name); + g.permissions.Add(permissions); + groups.Add(g); + return message; } - public String delGroup(String name) + public String DeleteGroup(String name) { String message = ""; if (!GroupExists(name)) return "Error: Group doesn't exists."; - using (var com = database.CreateCommand()) - { - com.CommandText = "Delete FROM GroupList WHERE GroupName=@groupname;"; - com.AddParameter("@groupname", name); - if (com.ExecuteNonQuery() == 1) - message = "Group " + name + " has been deleted successfully."; - groups.Remove(Tools.GetGroup(name)); - } + + if (database.Query("DELETE FROM GroupList WHERE GroupName=@0", name) == 1) + message = "Group " + name + " has been deleted successfully."; + groups.Remove(Tools.GetGroup(name)); + return message; } - public String addPermission(String name, List permissions) + public String AddPermissions(String name, List permissions) { String message = ""; if (!GroupExists(name)) return "Error: Group doesn't exists."; - using (var com = database.CreateCommand()) - { - Group g = Tools.GetGroup(name); - List perm = g.permissions; - foreach (String p in permissions) - { - if (!perm.Contains(p)) - { - if (perm.Count > 0 && perm[0].Equals("")) - perm[0] = p; - else - g.permissions.Add(p); - } - } - com.CommandText = "UPDATE GroupList SET Commands=@perm WHERE GroupName=@name;"; - com.AddParameter("@perm", String.Join(",", perm)); - com.AddParameter("@name", name); - if (com.ExecuteNonQuery() == 1) - message = "Group " + name + " has been modified successfully."; - } + + var group = Tools.GetGroup(name); + //Add existing permissions (without duplicating) + permissions.AddRange(group.permissions.Where(s => !permissions.Contains(s))); + + if (database.Query("UPDATE GroupList SET Commands=@0 WHERE GroupName=@1", String.Join(",", permissions), name) != 0) + message = "Group " + name + " has been modified successfully."; + return message; } - public String delPermission(String name, List permissions) + public String DeletePermissions(String name, List permissions) { String message = ""; if (!GroupExists(name)) return "Error: Group doesn't exists."; - using (var com = database.CreateCommand()) - { - Group g = Tools.GetGroup(name); - List perm = g.permissions; - foreach (String p in permissions) - { - if (perm.Contains(p)) - g.permissions.Remove(p); - } - com.CommandText = "UPDATE GroupList SET Commands=@perm WHERE GroupName=@name;"; - com.AddParameter("@perm", String.Join(",", perm)); - com.AddParameter("@name", name); - if (com.ExecuteNonQuery() == 1) - message = "Group " + name + " has been modified successfully."; - } + + var group = Tools.GetGroup(name); + + //Only get permissions that exist in the group. + var newperms = permissions.Where(s => group.permissions.Contains(s)); + + if (database.Query("UPDATE GroupList SET Commands=@0 WHERE GroupName=@1", String.Join(",", newperms), name) != 0) + message = "Group " + name + " has been modified successfully."; + return message; } @@ -220,41 +174,23 @@ namespace TShockAPI.DB try { - using (var com = database.CreateCommand()) - { - com.CommandText = "SELECT * FROM Grouplist;"; - using (var reader = com.ExecuteReader()) - { - while (reader.Read()) - { - Group group = null; - string groupname = reader.Get("GroupName"); - group = new Group(groupname); - //Inherit Given commands - String[] commands = reader.Get("Commands").Split(','); - for (int i = 0; i < commands.Length; i++) - { - group.AddPermission(commands[i].Trim()); - } - groups.Add(group); - } - } - /** ORDER BY IS DUMB - //Inherit all commands from group below in order, unless Order is 0 (unique groups anyone) - foreach (Group group in groups) + using (var reader = database.QueryReader("SELECT * FROM Grouplist;")) + { + while (reader.Read()) { - if (group.Order != 0 && group.Order < groups.Count) + Group group = null; + string groupname = reader.Get("GroupName"); + group = new Group(groupname); + + //Inherit Given commands + String[] commands = reader.Get("Commands").Split(','); + for (int i = 0; i < commands.Length; i++) { - for (int i = group.Order + 1; i < groups.Count; i++) - { - for (int j = 0; j < groups[i].permissions.Count; j++) - { - group.AddPermission(groups[i].permissions[j]); - } - } + group.AddPermission(commands[i].Trim()); } - }*/ + groups.Add(group); + } } } catch (Exception ex) diff --git a/TShockAPI/DB/ItemManager.cs b/TShockAPI/DB/ItemManager.cs index 12ddb646..d30c580f 100644 --- a/TShockAPI/DB/ItemManager.cs +++ b/TShockAPI/DB/ItemManager.cs @@ -18,48 +18,42 @@ namespace TShockAPI.DB { database = db; - using (var com = database.CreateCommand()) + + string query = (TShock.Config.StorageType.ToLower() == "sqlite") ? + "CREATE TABLE IF NOT EXISTS 'ItemBans' ('ItemName' TEXT PRIMARY KEY);" : + "CREATE TABLE IF NOT EXISTS ItemBans (ItemName VARCHAR(255) PRIMARY);"; + database.Query(query); + + String file = Path.Combine(TShock.SavePath, "itembans.txt"); + if (File.Exists(file)) { - if (TShock.Config.StorageType.ToLower() == "sqlite") - com.CommandText = - "CREATE TABLE IF NOT EXISTS 'ItemBans' ('ItemName' TEXT PRIMARY KEY);"; - else if (TShock.Config.StorageType.ToLower() == "mysql") - com.CommandText = - "CREATE TABLE IF NOT EXISTS ItemBans (ItemName VARCHAR(255) PRIMARY);"; - com.ExecuteNonQuery(); - - String file = Path.Combine(TShock.SavePath, "itembans.txt"); - if (File.Exists(file)) + using (StreamReader sr = new StreamReader(file)) { - using (StreamReader sr = new StreamReader(file)) + String line; + while ((line = sr.ReadLine()) != null) { - String line; - while ((line = sr.ReadLine()) != null) + if (!line.Equals("") && !line.Substring(0, 1).Equals("#")) { - if (!line.Equals("") && !line.Substring(0, 1).Equals("#")) - { - if (TShock.Config.StorageType.ToLower() == "sqlite") - com.CommandText = "INSERT OR IGNORE INTO 'ItemBans' (ItemName) VALUES (@name);"; - else if (TShock.Config.StorageType.ToLower() == "mysql") - com.CommandText = "INSERT IGNORE INTO ItemBans SET ItemName=@name;"; - int id = 0; - int.TryParse(line, out id); - com.AddParameter("@name", Tools.GetItemById(id).name); - com.ExecuteNonQuery(); - com.Parameters.Clear(); - } + query = (TShock.Config.StorageType.ToLower() == "sqlite") ? + "INSERT OR IGNORE INTO 'ItemBans' (ItemName) VALUES (@0);" : + "INSERT IGNORE INTO ItemBans SET ItemName=@0;"; + + int id = 0; + int.TryParse(line, out id); + + database.Query(query, Tools.GetItemById(id).name); } } - - String path = Path.Combine(TShock.SavePath, "old_configs"); - String file2 = Path.Combine(path, "itembans.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, "itembans.txt"); + if (!Directory.Exists(path)) + System.IO.Directory.CreateDirectory(path); + if (File.Exists(file2)) + File.Delete(file2); + File.Move(file, file2); } UpdateItemBans(); @@ -74,7 +68,7 @@ namespace TShockAPI.DB using (var reader = com.ExecuteReader()) { - while (reader!=null&&reader.Read()) + while (reader != null && reader.Read()) ItemBans.Add(reader.Get("ItemName")); } } @@ -83,14 +77,9 @@ namespace TShockAPI.DB { try { - using (var com = database.CreateCommand()) - { - com.CommandText = "INSERT INTO ItemBans (ItemName) VALUES (@itemname);"; - com.AddParameter("@itemname", Tools.GetItemByName(itemname)[0].name); - com.ExecuteNonQuery(); - if( !ItemIsBanned( itemname ) ) - ItemBans.Add(itemname); - } + database.Query("INSERT INTO ItemBans (ItemName) VALUES (@0);", Tools.GetItemByName(itemname)[0].name); + if (!ItemIsBanned(itemname)) + ItemBans.Add(itemname); } catch (Exception ex) { @@ -104,13 +93,8 @@ namespace TShockAPI.DB return; try { - using (var com = database.CreateCommand()) - { - com.CommandText = "Delete FROM 'ItemBans' WHERE ItemName=@itemname;"; - com.AddParameter("@itemname", Tools.GetItemByName(itemname)[0].name); - com.ExecuteNonQuery(); - ItemBans.Remove(itemname); - } + database.Query("Delete FROM 'ItemBans' WHERE ItemName=@0;", Tools.GetItemByName(itemname)[0].name); + ItemBans.Remove(itemname); } catch (Exception ex) { diff --git a/TShockAPI/DB/RegionManager.cs b/TShockAPI/DB/RegionManager.cs index 2c298dca..f05126c4 100644 --- a/TShockAPI/DB/RegionManager.cs +++ b/TShockAPI/DB/RegionManager.cs @@ -43,14 +43,11 @@ namespace TShockAPI.DB using (var com = database.CreateCommand()) { - if (TShock.Config.StorageType.ToLower() == "sqlite") - com.CommandText = - "CREATE TABLE IF NOT EXISTS 'Regions' ('X1' NUMERIC, 'Y1' NUMERIC, 'height' NUMERIC, 'width' NUMERIC, 'RegionName' TEXT PRIMARY KEY, 'WorldID' TEXT, 'UserIds' TEXT, 'Protected' NUMERIC);"; - else if (TShock.Config.StorageType.ToLower() == "mysql") - com.CommandText = + 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 INT(11), Y1 INT(11), height INT(11), width INT(11), RegionName VARCHAR(255) PRIMARY, WorldID VARCHAR(255), UserIds VARCHAR(255), Protected INT(1));"; - com.ExecuteNonQuery(); + database.Query(query); String file = Path.Combine(TShock.SavePath, "regions.xml"); String name = ""; diff --git a/TShockAPI/DB/SqlTable.cs b/TShockAPI/DB/SqlTable.cs new file mode 100644 index 00000000..4d1dc44c --- /dev/null +++ b/TShockAPI/DB/SqlTable.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace TShockAPI.DB +{ + class SqlTable + { + } +} diff --git a/TShockAPI/TShockAPI.csproj b/TShockAPI/TShockAPI.csproj index ab773528..06d95c87 100644 --- a/TShockAPI/TShockAPI.csproj +++ b/TShockAPI/TShockAPI.csproj @@ -96,6 +96,7 @@ + @@ -170,7 +171,7 @@ - +