Files
lol_coder/lck_cl_data_solution/updateServer/Form1.cs
2026-04-01 20:20:09 +09:00

248 lines
7.9 KiB
C#

using MongoDB.Bson;
using MongoDB.Bson.IO;
using MongoDB.Bson.Serialization;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace updateServer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
NetManager manager = new NetManager();
manager.start();
UpdateManager.getInstance().init();
///ESPORTSTMNT06_1730991크로노
//UpdateManager.getInstance().startUpdateEventRaw("ESPORTSTMNT02_1921265", false);
//UpdateManager.getInstance().GameListUpdateWorker(true);
}
private void button2_Click(object sender, EventArgs e)
{
UpdateManager.getInstance().startUpdateEventRaw(txbPlatformID.Text, false);
}
private void button3_Click(object sender, EventArgs e)
{
UpdateManager.getInstance().GameListUpdateWorker(false);
}
private void button4_Click(object sender, EventArgs e)
{
UpdateManager.getInstance().GameListUpdateWorker(true);
//UpdateManager.getInstance().startUpdateEventRaw("ESPORTSTMNT06_1721059", false);
//UpdateManager.getInstance().finishGameListUpdateWorker();
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBox1.SelectedItems.Count < 1) return;
string[] selectedItem = listBox1.SelectedItems[0].ToString().Split('_');
txbGameID.Text = selectedItem.Last();
txbPlatformID.Text = selectedItem[0] + "_" + selectedItem[1];
UpdateManager.getInstance().GameKey = txbGameID.Text;
UpdateManager.getInstance().GameName = txbPlatformID.Text;
}
public void removeWorkerList()
{
/*
List<string> items = new List<string>();
foreach (string s in UpdateManager.getInstance().mUpdateWorkerTable.Keys)
items.Add(s);
foreach (string s in items)
{
MessageBox.Show("!!" + s);
UpdateManager.getInstance().mUpdateWorkerTable.Remove(s);
}
*/
}
public void updateWorkerList()
{
this.Invoke(new MethodInvoker(() => {
lstBoxUpdateGameList.Items.Clear();
foreach (string item in UpdateManager.getInstance().mUpdateWorkerTable.Keys)
{
lstBoxUpdateGameList.Items.Add(item);
}
}));
}
public void Msg()
{
//MessageBox.Show("!!");
}
public void updateGameRoomList(List<string> recvData)
{
this.Invoke(new MethodInvoker(() => {
listBox1.Items.Clear();
foreach (string item in recvData)
{
listBox1.Items.Add(item);
}
}));
}
private void button5_Click(object sender, EventArgs e)
{
UpdateManager.getInstance().finishGameListUpdateWorker();
}
async void exportDB()
{
string basicfileName = DateTime.Now.Date.ToString("yyyyMMdd"); // initialize to the output file
MongoClient dd = new MongoClient(DEFINE.DB_접속정보);
List<string> collectionNames = dd.GetDatabase("datalol").ListCollectionNames().ToList();
int endedTask = 0;
this.Invoke(new MethodInvoker(() => label4.Text = endedTask + "/" + collectionNames.Count().ToString()));
DirectoryInfo di = new DirectoryInfo(@"c:\lol_db_backup\" + basicfileName);
if (!di.Exists)
{
di.Create();
}
foreach (string item in collectionNames)
{
IMongoCollection<BsonDocument> collection = dd.GetDatabase("datalol").GetCollection<BsonDocument>(item); // initialize to the collection to read from
using (var streamWriter = new StreamWriter(@"c:\lol_db_backup\" + basicfileName + @"\" + item + ".json"))
{
await collection.Find(new BsonDocument())
.ForEachAsync(async (document) =>
{
using (var stringWriter = new StringWriter())
using (var jsonWriter = new JsonWriter(stringWriter))
{
var context = MongoDB.Bson.Serialization.BsonSerializationContext.CreateRoot(jsonWriter);
collection.DocumentSerializer.Serialize(context, document);
var line = stringWriter.ToString();
await streamWriter.WriteLineAsync(line);
}
}
);
endedTask += 1;
this.Invoke(new MethodInvoker(() => label4.Text = endedTask + "/" + collectionNames.Count().ToString()));
}
}
}
async void importDB()
{
//MongoClient dd = new MongoClient(DEFINE.몽고DB_접속정보);
MongoClient dd = new MongoClient("mongodb://root:veryhardpassword123@211.42.188.8:50003");
List<string> collectionNames = dd.GetDatabase("datalol").ListCollectionNames().ToList();
//List<string> collectionNames = new List<string>();
//collectionNames.Remove("building_destroyed");
//collectionNames.Add("game_end");
//collectionNames.Add("game_info");
string basicfileName = DateTime.Now.Date.ToString("yyyyMMdd");
foreach (var item in collectionNames)
{
//IMongoCollection<BsonDocument> collection = dd.GetDatabase("data_lol_test_seed").GetCollection<BsonDocument>(item);
IMongoCollection<BsonDocument> collection = dd.GetDatabase("datalol").GetCollection<BsonDocument>(item);
using (var streamReader = new StreamReader(@"c:\lol_db_backup\" + basicfileName + @"\" + item + ".json"))
{
string line;
while ((line = await streamReader.ReadLineAsync()) != null)
{
using (var jsonReader = new JsonReader(line))
{
var context = BsonDeserializationContext.CreateRoot(jsonReader);
var document = collection.DocumentSerializer.Deserialize(context);
await collection.InsertOneAsync(document);
}
}
}
}
}
async void clearDB()
{
MongoClient dd = new MongoClient(DEFINE.DB_접속정보);
List<string> collectionNames = dd.GetDatabase("datalol").ListCollectionNames().ToList();
string basicfileName = DateTime.Now.Date.ToShortDateString();
var mEventDataBaseTarget = dd.GetDatabase("datalol");
foreach (string item in collectionNames)
{
await mEventDataBaseTarget.GetCollection<BsonValue>(item)
.DeleteManyAsync(x => true);
}
UpdateManager.getInstance().mUpdateWorkerTable.Clear();
updateWorkerList();
}
private void btnExport_Click(object sender, EventArgs e)
{
exportDB();
//importDB();
}
private void button6_Click(object sender, EventArgs e)
{
clearDB();
}
}
}