134 lines
4.9 KiB
C#
134 lines
4.9 KiB
C#
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<string> RowsBase = new List<string>();
|
|
StringBuilder sCommandImp = new StringBuilder("INSERT INTO poeco_implicit(bid, imp) VALUES ");
|
|
List<string> RowsImp = new List<string>();
|
|
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();
|
|
}
|
|
}
|
|
}
|