[성현모] Update기능 추가, 중복 유니크키 예외처리 추가

This commit is contained in:
SHM
2025-04-22 12:22:30 +09:00
parent 4a0770deb1
commit bf5c87ad34
4 changed files with 99 additions and 34 deletions

View File

@ -81,12 +81,12 @@ namespace HubX.Library.Socket.Packet
bool isJsonRequest = true; bool isJsonRequest = true;
//convert to object //convert to object
var jsonObject = recvData.ToObject<C2S_INSERT_UniqueKey>(); var jsonObject = recvData.ToObject<C2S_SELECT_UniqueKey>();
//json 요청 아닐때 변환 //json 요청 아닐때 변환
if (jsonObject == null) if (jsonObject == null)
{ {
var recvDataList = recvData.Split(","); var recvDataList = recvData.Split(",");
jsonObject = new C2S_INSERT_UniqueKey jsonObject = new C2S_SELECT_UniqueKey
{ {
Identity = recvDataList[0] Identity = recvDataList[0]
}; };
@ -128,12 +128,12 @@ namespace HubX.Library.Socket.Packet
bool isJsonRequest = true; bool isJsonRequest = true;
//convert to object //convert to object
var jsonObject = recvData.ToObject<C2S_INSERT_UniqueKey>(); var jsonObject = recvData.ToObject<C2S_UPDATE_UniqueKey>();
//json 요청 아닐때 변환 //json 요청 아닐때 변환
if (jsonObject == null) if (jsonObject == null)
{ {
var recvDataList = recvData.Split(","); var recvDataList = recvData.Split(",");
jsonObject = new C2S_INSERT_UniqueKey jsonObject = new C2S_UPDATE_UniqueKey
{ {
Identity = recvDataList[0], Identity = recvDataList[0],
Data1 = recvDataList[1], Data1 = recvDataList[1],
@ -149,7 +149,7 @@ namespace HubX.Library.Socket.Packet
//insert DB //insert DB
if (jsonObject != null) if (jsonObject != null)
{ {
Request_InsertUniqueKey request = new Request_InsertUniqueKey(); Request_UpdateUniqueKey request = new Request_UpdateUniqueKey();
request.Identity = jsonObject.Identity; request.Identity = jsonObject.Identity;
request.Data1 = jsonObject.Data1; request.Data1 = jsonObject.Data1;
request.Data2 = jsonObject.Data2; request.Data2 = jsonObject.Data2;
@ -158,7 +158,7 @@ namespace HubX.Library.Socket.Packet
request.Data5 = jsonObject.Data5; request.Data5 = jsonObject.Data5;
SystemX.Core.Communication.Http http = new(); SystemX.Core.Communication.Http http = new();
var res = await http.PostJsonAsync<Request_InsertUniqueKey, Response_InsertUniqueKy>("https://127.0.0.1:9000/UniqueKey/InsertUniqueKey", request); var res = await http.PostJsonAsync<Request_UpdateUniqueKey, Response_UpdateUniqueKy>("https://127.0.0.1:9000/UniqueKey/UpdateUniqueKey", request);
result = res.ToJson(); result = res.ToJson();
//json 요청이 아니면 변환 //json 요청이 아니면 변환
@ -174,7 +174,7 @@ namespace HubX.Library.Socket.Packet
if (client == null) if (client == null)
return; return;
client.Session.Send(Encoding.UTF8.GetBytes(result), EnumMessageId.S2C_INSERT_UniqueKey); client.Session.Send(Encoding.UTF8.GetBytes(result), EnumMessageId.S2C_UPDATE_UniqueKey);
} }
} }
} }

View File

@ -39,5 +39,17 @@ namespace HubX.Server.Controllers
return Results.Ok(res); return Results.Ok(res);
} }
[HttpPost]
public async Task<IResult> UpdateUniqueKey(Request_UpdateUniqueKey request)
{
var guid = Guid.NewGuid();
Log4net.WriteLine($"[Requeust]({guid}) UniqueKey/UpdateUniqueKey::{request.ToJson()}", LogType.CONTROLLER);
Response_UpdateUniqueKy res = await _uniqueKeyService.Request_UpdateUniqueKey(request);
Log4net.WriteLine($"[Response]({guid}) UniqueKey/UpdateUniqueKey::{res.ToJson()}", LogType.CONTROLLER);
return Results.Ok(res);
}
} }
} }

View File

@ -25,38 +25,47 @@ namespace HubX.Server.Services
{ {
response.Identity = request.Identity; response.Identity = request.Identity;
var storage = new TStorage
{
CIdentity = request.Identity,
CData1 = request.Data1,
CData2 = request.Data2,
CData3 = request.Data3,
CData4 = request.Data4,
CData5 = request.Data5,
CDateTime = DateTime.Now
};
bool transactionResult = true; bool transactionResult = true;
var context = _efCoreService.GetDBContext<HubXContext>(); var context = _efCoreService.GetDBContext<HubXContext>();
if (context != null) if (context != null)
{ {
using (var transaction = await context.CreateTransactionAsync()) var data = context.TStorages.Where(x=>x.CIdentity == request.Identity);
{ if (data?.Count() > 0)
await context.AddAsync(storage); {
transactionResult = await context.CloseTransactionAsync(transaction); Log4net.WriteLine($"Exist Unique Key", LogType.Error);
} response.Result = "Exist Unique Key";
} }
else
{
var storage = new TStorage
{
CIdentity = request.Identity,
CData1 = request.Data1,
CData2 = request.Data2,
CData3 = request.Data3,
CData4 = request.Data4,
CData5 = request.Data5,
//db error CDateTime = DateTime.Now
if (transactionResult == false) };
{
response.Result = EnumResult.Failed.ToString(); using (var transaction = await context.CreateTransactionAsync())
Log4net.WriteLine($"Transaction Error", LogType.Error); {
} await context.AddAsync(storage);
else transactionResult = await context.CloseTransactionAsync(transaction);
{ }
Log4net.WriteLine($"Transaction Success", LogType.DB);
//db error
if (transactionResult == false)
{
response.Result = EnumResult.Failed.ToString();
Log4net.WriteLine($"Transaction Error", LogType.Error);
}
else
{
Log4net.WriteLine($"Transaction Success", LogType.DB);
}
}
} }
} }
@ -100,5 +109,49 @@ namespace HubX.Server.Services
return response; return response;
} }
public async Task<Response_UpdateUniqueKy> Request_UpdateUniqueKey(Request_UpdateUniqueKey request)
{
Response_UpdateUniqueKy response = new Response_UpdateUniqueKy();
if (request != null)
{
response.Identity = request.Identity;
bool transactionResult = true;
var context = _efCoreService.GetDBContext<HubXContext>();
if (context != null)
{
var selected = context.TStorages.First(x => x.CIdentity == request.Identity);
if (selected != null)
{
selected.CData1 = request.Data1;
selected.CData2 = request.Data2;
selected.CData3 = request.Data3;
selected.CData4 = request.Data4;
selected.CData5 = request.Data5;
using (var transaction = await context.CreateTransactionAsync())
{
context.Update(selected);
transactionResult = await context.CloseTransactionAsync(transaction);
}
}
}
//db error
if (transactionResult == false)
{
response.Result = EnumResult.Failed.ToString();
Log4net.WriteLine($"Transaction Error", LogType.Error);
}
else
{
Log4net.WriteLine($"Transaction Success", LogType.DB);
}
}
return response;
}
} }
} }