All managers now use querybuilder for creating tables to make for easy changes.
This commit is contained in:
parent
423a33325a
commit
1a801b268c
8 changed files with 74 additions and 80 deletions
|
|
@ -19,6 +19,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
using System;
|
using System;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using MySql.Data.MySqlClient;
|
||||||
|
|
||||||
namespace TShockAPI.DB
|
namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
|
|
@ -30,15 +31,13 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
database = db;
|
database = db;
|
||||||
|
|
||||||
string query;
|
var table = new SqlTable("Bans",
|
||||||
if (TShock.Config.StorageType.ToLower() == "sqlite")
|
new SqlColumn("IP", MySqlDbType.String, 16) { Primary = true },
|
||||||
query =
|
new SqlColumn("Name", MySqlDbType.Text),
|
||||||
"CREATE TABLE IF NOT EXISTS 'Bans' ('IP' TEXT PRIMARY KEY, 'Name' TEXT, 'Reason' TEXT);";
|
new SqlColumn("Reason", MySqlDbType.Text)
|
||||||
else
|
);
|
||||||
query =
|
var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
|
||||||
"CREATE TABLE IF NOT EXISTS Bans (IP VARCHAR(255) PRIMARY, Name VARCHAR(255), Reason VARCHAR(255));";
|
creator.EnsureExists(table);
|
||||||
|
|
||||||
db.Query(query);
|
|
||||||
|
|
||||||
String file = Path.Combine(TShock.SavePath, "bans.txt");
|
String file = Path.Combine(TShock.SavePath, "bans.txt");
|
||||||
if (File.Exists(file))
|
if (File.Exists(file))
|
||||||
|
|
@ -49,6 +48,7 @@ namespace TShockAPI.DB
|
||||||
while ((line = sr.ReadLine()) != null)
|
while ((line = sr.ReadLine()) != null)
|
||||||
{
|
{
|
||||||
String[] info = line.Split('|');
|
String[] info = line.Split('|');
|
||||||
|
string query;
|
||||||
if (TShock.Config.StorageType.ToLower() == "sqlite")
|
if (TShock.Config.StorageType.ToLower() == "sqlite")
|
||||||
query = "INSERT OR IGNORE INTO Bans (IP, Name, Reason) VALUES (@0, @1, @2);";
|
query = "INSERT OR IGNORE INTO Bans (IP, Name, Reason) VALUES (@0, @1, @2);";
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -17,29 +17,13 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
database = db;
|
database = db;
|
||||||
|
|
||||||
string query = "";
|
var table = new SqlTable("GroupList",
|
||||||
|
|
||||||
/*var table = new SqlTable("GroupList",
|
|
||||||
new SqlColumn("GroupName", MySqlDbType.VarChar, 32) { Primary = true },
|
new SqlColumn("GroupName", MySqlDbType.VarChar, 32) { Primary = true },
|
||||||
new SqlColumn("Commands", MySqlDbType.Text),
|
new SqlColumn("Commands", MySqlDbType.Text),
|
||||||
new SqlColumn("ChatColor", MySqlDbType.Text)
|
new SqlColumn("ChatColor", MySqlDbType.Text)
|
||||||
);
|
);
|
||||||
|
var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
|
||||||
new SqlTableCreator(db, new MysqlQueryCreator()).EnsureExists(table);*/
|
creator.EnsureExists(table);
|
||||||
|
|
||||||
|
|
||||||
if (db.GetSqlType() == SqlType.Sqlite)
|
|
||||||
{
|
|
||||||
db.Query("CREATE TABLE IF NOT EXISTS 'GroupList' ('GroupName' TEXT PRIMARY KEY, 'Commands' TEXT);");
|
|
||||||
db.Query("CREATE TEMPORARY TABLE 'GroupList_backup' ('GroupName' TEXT, 'Commands' TEXT); INSERT INTO 'GroupList_backup' SELECT GroupName,Commands FROM 'GroupList'; DROP TABLE 'GroupList'; CREATE TABLE 'GroupList' ('GroupName' TEXT PRIMARY KEY, 'Commands' TEXT); INSERT INTO 'GroupList' SELECT GroupName,Commands FROM 'GroupList_backup'; DROP TABLE 'GroupList_backup';");
|
|
||||||
db.Query("ALTER TABLE 'GroupList' ADD COLUMN 'ChatColor' TEXT");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
db.Query("CREATE TABLE IF NOT EXISTS GroupList (GroupName VARCHAR(255) PRIMARY, Commands VARCHAR(255));");
|
|
||||||
db.Query("ALTER TABLE GroupList DROP COLUMN OrderBy");
|
|
||||||
db.Query("ALTER TABLE GroupList ADD COLUMN ChatColor VARCHAR(255)");
|
|
||||||
}
|
|
||||||
|
|
||||||
//Add default groups
|
//Add default groups
|
||||||
AddGroup("trustedadmin", "admin,maintenance,cfg,butcher,item,heal,immunetoban,ignorecheatdetection,ignoregriefdetection,usebanneditem,manageusers");
|
AddGroup("trustedadmin", "admin,maintenance,cfg,butcher,item,heal,immunetoban,ignorecheatdetection,ignoregriefdetection,usebanneditem,manageusers");
|
||||||
|
|
@ -68,6 +52,7 @@ namespace TShockAPI.DB
|
||||||
comms = comms + info[i].Trim();
|
comms = comms + info[i].Trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string query = "";
|
||||||
if (TShock.Config.StorageType.ToLower() == "sqlite")
|
if (TShock.Config.StorageType.ToLower() == "sqlite")
|
||||||
query = "INSERT OR IGNORE INTO GroupList (GroupName, Commands) VALUES (@0, @1);";
|
query = "INSERT OR IGNORE INTO GroupList (GroupName, Commands) VALUES (@0, @1);";
|
||||||
else if (TShock.Config.StorageType.ToLower() == "mysql")
|
else if (TShock.Config.StorageType.ToLower() == "mysql")
|
||||||
|
|
@ -195,17 +180,13 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
group.AddPermission(commands[i].Trim());
|
group.AddPermission(commands[i].Trim());
|
||||||
}
|
}
|
||||||
try
|
String[] chatcolour = (reader.Get<String>("ChatColor") ?? "").Split(',');
|
||||||
{
|
|
||||||
String[] chatcolour = reader.Get<String>("ChatColor").Split(',');
|
|
||||||
if (chatcolour.Length == 3)
|
if (chatcolour.Length == 3)
|
||||||
{
|
{
|
||||||
byte.TryParse(chatcolour[0], out group.R);
|
byte.TryParse(chatcolour[0], out group.R);
|
||||||
byte.TryParse(chatcolour[1], out group.G);
|
byte.TryParse(chatcolour[1], out group.G);
|
||||||
byte.TryParse(chatcolour[2], out group.B);
|
byte.TryParse(chatcolour[2], out group.B);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
catch { }
|
|
||||||
groups.Add(group);
|
groups.Add(group);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,7 @@ namespace TShockAPI.DB
|
||||||
{MySqlDbType.TinyText, "TEXT"},
|
{MySqlDbType.TinyText, "TEXT"},
|
||||||
{MySqlDbType.MediumText, "TEXT"},
|
{MySqlDbType.MediumText, "TEXT"},
|
||||||
{MySqlDbType.LongText, "TEXT"},
|
{MySqlDbType.LongText, "TEXT"},
|
||||||
|
{MySqlDbType.Int32, "NUMERIC"},
|
||||||
};
|
};
|
||||||
public string DbTypeToString(MySqlDbType type, int? length)
|
public string DbTypeToString(MySqlDbType type, int? length)
|
||||||
{
|
{
|
||||||
|
|
@ -101,6 +102,7 @@ namespace TShockAPI.DB
|
||||||
{MySqlDbType.TinyText, "TINYTEXT"},
|
{MySqlDbType.TinyText, "TINYTEXT"},
|
||||||
{MySqlDbType.MediumText, "MEDIUMTEXT"},
|
{MySqlDbType.MediumText, "MEDIUMTEXT"},
|
||||||
{MySqlDbType.LongText, "LONGTEXT"},
|
{MySqlDbType.LongText, "LONGTEXT"},
|
||||||
|
{MySqlDbType.Int32, "INT"},
|
||||||
};
|
};
|
||||||
public string DbTypeToString(MySqlDbType type, int? length)
|
public string DbTypeToString(MySqlDbType type, int? length)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using MySql.Data.MySqlClient;
|
||||||
|
|
||||||
namespace TShockAPI.DB
|
namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
|
|
@ -14,11 +15,11 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
database = db;
|
database = db;
|
||||||
|
|
||||||
|
var table = new SqlTable("ItemBans",
|
||||||
string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
|
new SqlColumn("ItemName", MySqlDbType.VarChar, 50) { Primary = true }
|
||||||
"CREATE TABLE IF NOT EXISTS 'ItemBans' ('ItemName' TEXT PRIMARY KEY);" :
|
);
|
||||||
"CREATE TABLE IF NOT EXISTS ItemBans (ItemName VARCHAR(255) PRIMARY);";
|
var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
|
||||||
database.Query(query);
|
creator.EnsureExists(table);
|
||||||
|
|
||||||
String file = Path.Combine(TShock.SavePath, "itembans.txt");
|
String file = Path.Combine(TShock.SavePath, "itembans.txt");
|
||||||
if (File.Exists(file))
|
if (File.Exists(file))
|
||||||
|
|
@ -31,7 +32,7 @@ namespace TShockAPI.DB
|
||||||
if (!line.Equals("") && !line.Substring(0, 1).Equals("#"))
|
if (!line.Equals("") && !line.Substring(0, 1).Equals("#"))
|
||||||
{
|
{
|
||||||
|
|
||||||
query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
|
string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
|
||||||
"INSERT OR IGNORE INTO 'ItemBans' (ItemName) VALUES (@0);" :
|
"INSERT OR IGNORE INTO 'ItemBans' (ItemName) VALUES (@0);" :
|
||||||
"INSERT IGNORE INTO ItemBans SET ItemName=@0;";
|
"INSERT IGNORE INTO ItemBans SET ItemName=@0;";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ using System.Data;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using Microsoft.Xna.Framework;
|
using Microsoft.Xna.Framework;
|
||||||
|
using MySql.Data.MySqlClient;
|
||||||
using Terraria;
|
using Terraria;
|
||||||
|
|
||||||
namespace TShockAPI.DB
|
namespace TShockAPI.DB
|
||||||
|
|
@ -36,17 +37,21 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
database = db;
|
database = db;
|
||||||
|
|
||||||
using (var com = database.CreateCommand())
|
var table = new SqlTable("Regions",
|
||||||
{
|
new SqlColumn("X1", MySqlDbType.Int32),
|
||||||
string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
|
new SqlColumn("Y1", MySqlDbType.Int32),
|
||||||
"CREATE TABLE IF NOT EXISTS 'Regions' ('X1' NUMERIC, 'Y1' NUMERIC, 'height' NUMERIC, 'width' NUMERIC, 'RegionName' TEXT PRIMARY KEY, 'WorldID' TEXT, 'UserIds' TEXT, 'Protected' NUMERIC);" :
|
new SqlColumn("height", MySqlDbType.Int32),
|
||||||
"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));";
|
new SqlColumn("width", MySqlDbType.Int32),
|
||||||
|
new SqlColumn("RegionName", MySqlDbType.VarChar, 50) { Primary = true },
|
||||||
database.Query(query);
|
new SqlColumn("WorldID", MySqlDbType.Text),
|
||||||
|
new SqlColumn("UserIds", MySqlDbType.Text),
|
||||||
|
new SqlColumn("Protected", MySqlDbType.Int32)
|
||||||
|
);
|
||||||
|
var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
|
||||||
|
creator.EnsureExists(table);
|
||||||
|
|
||||||
ImportOld();
|
ImportOld();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ImportOld()
|
public void ImportOld()
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ using System.Collections.Generic;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using Microsoft.Xna.Framework;
|
using Microsoft.Xna.Framework;
|
||||||
|
using MySql.Data.MySqlClient;
|
||||||
using Terraria;
|
using Terraria;
|
||||||
|
|
||||||
namespace TShockAPI.DB
|
namespace TShockAPI.DB
|
||||||
|
|
@ -33,15 +34,15 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
database = db;
|
database = db;
|
||||||
|
|
||||||
string query;
|
var table = new SqlTable("RememberedPos",
|
||||||
if (TShock.Config.StorageType.ToLower() == "sqlite")
|
new SqlColumn("Name", MySqlDbType.VarChar, 50) { Primary = true },
|
||||||
query =
|
new SqlColumn("IP", MySqlDbType.Text),
|
||||||
"CREATE TABLE IF NOT EXISTS 'RememberedPos' ('Name' TEXT PRIMARY KEY, 'IP' TEXT, 'X' NUMERIC, 'Y' NUMERIC, 'WorldID' TEXT);";
|
new SqlColumn("X", MySqlDbType.Int32),
|
||||||
else
|
new SqlColumn("Y", MySqlDbType.Int32),
|
||||||
query =
|
new SqlColumn("WorldID", MySqlDbType.Text)
|
||||||
"CREATE TABLE IF NOT EXISTS RememberedPos (Name VARCHAR(255) PRIMARY, IP VARCHAR(255), X INT(11), Y INT(11), WorldID VARCHAR(255));";
|
);
|
||||||
|
var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
|
||||||
db.Query(query);
|
creator.EnsureExists(table);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector2 GetLeavePos(string name, string IP)
|
public Vector2 GetLeavePos(string name, string IP)
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
using System;
|
using System;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using MySql.Data.MySqlClient;
|
||||||
|
|
||||||
namespace TShockAPI.DB
|
namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
|
|
@ -31,12 +32,15 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
database = db;
|
database = db;
|
||||||
|
|
||||||
|
var table = new SqlTable("Users",
|
||||||
string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
|
new SqlColumn("ID", MySqlDbType.Int32) { Primary = true, AutoIncrement = true },
|
||||||
"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));" :
|
new SqlColumn("Username", MySqlDbType.VarChar, 32) { Unique = true },
|
||||||
"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));";
|
new SqlColumn("Password", MySqlDbType.VarChar, 64),
|
||||||
|
new SqlColumn("Usergroup", MySqlDbType.Text),
|
||||||
database.Query(query);
|
new SqlColumn("IP", MySqlDbType.VarChar, 32)
|
||||||
|
);
|
||||||
|
var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
|
||||||
|
creator.EnsureExists(table);
|
||||||
|
|
||||||
String file = Path.Combine(TShock.SavePath, "users.txt");
|
String file = Path.Combine(TShock.SavePath, "users.txt");
|
||||||
if (File.Exists(file))
|
if (File.Exists(file))
|
||||||
|
|
@ -69,7 +73,7 @@ namespace TShockAPI.DB
|
||||||
group = info[1];
|
group = info[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
|
string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
|
||||||
"INSERT OR IGNORE INTO Users (Username, Password, Usergroup, IP) VALUES (@0, @1, @2, @3)" :
|
"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";
|
"INSERT IGNORE INTO Users SET Username=@0, Password=@1, Usergroup=@2, IP=@3";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ using System.Data;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using Microsoft.Xna.Framework;
|
using Microsoft.Xna.Framework;
|
||||||
|
using MySql.Data.MySqlClient;
|
||||||
using Terraria;
|
using Terraria;
|
||||||
|
|
||||||
namespace TShockAPI.DB
|
namespace TShockAPI.DB
|
||||||
|
|
@ -34,16 +35,15 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
database = db;
|
database = db;
|
||||||
|
|
||||||
string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
|
var table = new SqlTable("Warps",
|
||||||
"CREATE TABLE IF NOT EXISTS 'Warps' ('X' NUMERIC, 'Y' NUMERIC, 'WarpName' TEXT PRIMARY KEY, 'WorldID' TEXT);" :
|
new SqlColumn("WarpName", MySqlDbType.VarChar, 50) { Primary = true},
|
||||||
"CREATE TABLE IF NOT EXISTS Warps (X INT(11), Y INT(11), WarpName VARCHAR(255) PRIMARY, WorldID VARCHAR(255));";
|
new SqlColumn("X", MySqlDbType.Int32),
|
||||||
|
new SqlColumn("Y", MySqlDbType.Int32),
|
||||||
if (TShock.Config.StorageType.ToLower() == "sqlite")
|
new SqlColumn("WorldID", MySqlDbType.Text),
|
||||||
db.Query("ALTER TABLE 'Warps' ADD COLUMN 'Private' TEXT");
|
new SqlColumn("Private", MySqlDbType.Text)
|
||||||
else
|
);
|
||||||
db.Query("ALTER TABLE Warps ADD COLUMN Private VARCHAR(255)");
|
var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
|
||||||
|
creator.EnsureExists(table);
|
||||||
database.Query(query);
|
|
||||||
|
|
||||||
String file = Path.Combine(TShock.SavePath, "warps.xml");
|
String file = Path.Combine(TShock.SavePath, "warps.xml");
|
||||||
String name = "";
|
String name = "";
|
||||||
|
|
@ -102,7 +102,7 @@ namespace TShockAPI.DB
|
||||||
case XmlNodeType.EndElement:
|
case XmlNodeType.EndElement:
|
||||||
if (reader.Name.Equals("Warp"))
|
if (reader.Name.Equals("Warp"))
|
||||||
{
|
{
|
||||||
query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
|
string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
|
||||||
"INSERT OR IGNORE INTO Warps VALUES (@0, @1,@2, @3);" :
|
"INSERT OR IGNORE INTO Warps VALUES (@0, @1,@2, @3);" :
|
||||||
"INSERT IGNORE INTO Warps SET X=@0, Y=@1, WarpName=@2, WorldID=@3;";
|
"INSERT IGNORE INTO Warps SET X=@0, Y=@1, WarpName=@2, WorldID=@3;";
|
||||||
database.Query(query, x1, y1, name, world);
|
database.Query(query, x1, y1, name, world);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue