using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Data.SqlClient; using System.IO; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace PoEco.Net.DB { internal class ClassGen { public static MySqlConnection MxPoEDB() { MySqlConnection conn; string myConnectionString; myConnectionString = $"server={JSON.Settings.GetdbHost()};port={JSON.Settings.GetdbPort()};uid={JSON.Settings.GetdbUser()};pwd={JSON.Settings.GetdbPass()};database={JSON.Settings.GetdbName()};"; conn = new MySqlConnection(); conn.ConnectionString = myConnectionString; return conn; } public static void AddClass(int id, string name) { MySqlConnection con = MxPoEDB(); string cmdText = $"INSERT INTO poeco_classes(cid, name) VALUES ('{id}','{name}')"; MySqlCommand cmd = new MySqlCommand(cmdText, con); con.Open(); cmd.ExecuteNonQuery(); con.Close(); } public static void AddBase(string querycmd) { MySqlConnection con = MxPoEDB(); //string cmdText = $"INSERT INTO poeco_bases(bid, cid, name) VALUES ('{bid}', '{cid}', '{MySql.Data.MySqlClient.MySqlHelper.EscapeString(name)}')"; string cmdText = querycmd; MySqlCommand cmd = new MySqlCommand(cmdText, con); con.Open(); cmd.ExecuteNonQuery(); con.Close(); } public static void AddImplicit(string querycmd) { MySqlConnection con = MxPoEDB(); //string cmdText = $"INSERT INTO poeco_implicit(bid, imp) VALUES ('{bid}', '{MySql.Data.MySqlClient.MySqlHelper.EscapeString(imp)}')"; string cmdText = querycmd; MySqlCommand cmd = new MySqlCommand(cmdText, con); con.Open(); cmd.ExecuteNonQuery(); con.Close(); } public static void DeleteClass() { MySqlConnection con = MxPoEDB(); string cmdText = $"DELETE FROM poeco_classes"; MySqlCommand cmd = new MySqlCommand(cmdText, con); con.Open(); cmd.ExecuteNonQuery(); con.Close(); } public static void DeleteBase() { MySqlConnection con = MxPoEDB(); string cmdText = $"DELETE FROM poeco_bases"; MySqlCommand cmd = new MySqlCommand(cmdText, con); con.Open(); cmd.ExecuteNonQuery(); con.Close(); } public static void DeleteImplicit() { MySqlConnection con = MxPoEDB(); string cmdText = $"DELETE FROM poeco_implicit"; MySqlCommand cmd = new MySqlCommand(cmdText, con); con.Open(); cmd.ExecuteNonQuery(); con.Close(); } public static void GenClass() { DeleteClass(); DeleteBase(); DeleteImplicit(); DirectoryInfo dir = new DirectoryInfo("data/lua"); int cid = 1; int bid = 1; StringBuilder sCommandBase = new StringBuilder("INSERT INTO poeco_bases(bid, cid, name) VALUES "); List RowsBase = new List(); StringBuilder sCommandImp = new StringBuilder("INSERT INTO poeco_implicit(bid, imp) VALUES "); List RowsImp = new List(); foreach (var f in dir.GetFiles()) { var fnp = Path.GetFileNameWithoutExtension(f.FullName); var fnpUp = char.ToUpper(f.Name[0]) + fnp.Substring(1); AddClass(cid, fnpUp); Utilities.Message.drawProgress(cid, dir.EnumerateFiles().Count()); foreach (var l in File.ReadLines(@"data/lua/" + f.Name)) { int ll = l.Length; if (l.Contains("itemBases[")) { RowsBase.Add($"('{bid}','{cid}','{MySql.Data.MySqlClient.MySqlHelper.EscapeString(l.Split('"', '"')[1])}')"); } if (l.Contains("\timplicit = \"")) { RowsImp.Add($"('{bid}','{MySql.Data.MySqlClient.MySqlHelper.EscapeString(l.Split('"', '"')[1])}')"); bid++; } } cid++; } sCommandBase.Append(string.Join(",", RowsBase)); sCommandBase.Append(";"); AddBase(sCommandBase.ToString()); sCommandImp.Append(string.Join(",", RowsImp)); sCommandImp.Append(";"); AddImplicit(sCommandImp.ToString()); sCommandBase.Clear(); sCommandImp.Clear(); } } }