초기커밋

This commit is contained in:
2025-05-01 07:20:41 +09:00
commit 98bb2e3c5c
2747 changed files with 646947 additions and 0 deletions

View File

@@ -0,0 +1,240 @@
// using Microsoft.EntityFrameworkCore;
//
// using ServerCommon;
//
// namespace BrokerCore.Repository;
//
// using Common;
//
// using DbEntity;
// using Context;
//
// public class SapphireExchangeOrderRepo
// {
// private readonly MetaverseBrokerDbContext m_db_context;
//
// public SapphireExchangeOrderRepo(MetaverseBrokerDbContext dbContext)
// {
// m_db_context = dbContext;
// }
//
// //================================================================================
// // 사파이어 교환 주문을 추가한다.
// // 트랜잭션을 사용한다.
// //================================================================================
// public async Task<Result> add(SapphireExchangeOrder order, CancellationToken cancellationToken = default)
// {
// var result = new Result();
// try
// {
// m_db_context.SapphireExchangeOrders.Add(order);
// await m_db_context.SaveChangesAsync(cancellationToken);
// return result;
// }
// catch (Exception e)
// {
// result.setFail(ServerErrorCode.InternalServerError, e.Message);
// }
//
// return result;
// }
//
// public async Task<Result> delete(SapphireExchangeOrder order, CancellationToken cancellationToken = default)
// {
// var result = new Result();
// try
// {
// m_db_context.SapphireExchangeOrders.Remove(order);
// await m_db_context.SaveChangesAsync(cancellationToken);
// }
// catch (Exception e)
// {
// result.setFail(ServerErrorCode.InternalServerError, e.Message);
// }
//
// return result;
// }
//
// //================================================================================
// // 사파이어 교환 주문을 비동기로 업데이트한다.
// // 트랜잭션을 사용한다.
// // OrderId를 키로 사용한다.
// // OrderType과 OrderCompletedAt만 업데이트한다.
// //================================================================================
// public async Task<(Result, SapphireExchangeOrder?)> findAndComplete(string orderId,
// CancellationToken cancellationToken = default)
// {
// var result = new Result();
// // var transaction = await m_db_context.Database.BeginTransactionAsync(cancellationToken).ConfigureAwait(false);
// // await using var transaction1 = transaction.ConfigureAwait(false);
// try
// {
// var order = await m_db_context.SapphireExchangeOrders.Where(x => x.OrderId == orderId).FirstOrDefaultAsync(cancellationToken);
// Guard.Against.isNull(order, ServerErrorCode.ExchangeOrderIdNotFound, "Invalid orderId");
// if (order.OrderStatus != ExchangeOrderStatus.Pending)
// {
// result.setFail(ServerErrorCode.Success, $"Fail To Complete OrderStatus Not Pending: orderId {orderId}, order_status {order.OrderStatus}");
// return (result, order);
// }
//
// order.OrderStatus = ExchangeOrderStatus.Completed;
// order.CompletedAt = DateTime.Now;
// m_db_context.SapphireExchangeOrders.Attach(order);
// m_db_context.Entry(order).Property(x => x.OrderStatus).IsModified = true;
// m_db_context.Entry(order).Property(x => x.CompletedAt).IsModified = true;
// await m_db_context.SaveChangesAsync(cancellationToken).ConfigureAwait(false);
// // await transaction.CommitAsync(cancellationToken).ConfigureAwait(false);
// return (new Result(), order);
// }
// catch (Exception e)
// {
// // await transaction.RollbackAsync(cancellationToken).ConfigureAwait(false);
// return (new Result { ResultString = e.Message }, null);
// }
// }
//
// // public async Task<Result> updateForPending(SapphireExchangeOrder order,
// // CancellationToken cancellationToken = default)
// // {
// // // await using var transaction = await m_db_context.Database.BeginTransactionAsync(cancellationToken);
// // try
// // {
// // m_db_context.SapphireExchangeOrders.Attach(order);
// // m_db_context.Entry(order).Property(x => x.OrderStatus).IsModified = true;
// // await m_db_context.SaveChangesAsync(cancellationToken);
// // // await transaction.CommitAsync(cancellationToken);
// // return new Result();
// // }
// // catch (Exception e)
// // {
// // // await transaction.RollbackAsync(cancellationToken);
// // return new Result { ResultString = e.Message };
// // }
// // }
// //==========================================================================
// //SELECT *
// // FROM `sapphire_exchange_order`
// // WHERE `PlanetId` = @planetId
// // AND `UserGuid` = @userGuid
// // AND (@orderStatus IS NULL OR `OrderStatus` = @orderStatus)
// // ORDER BY `CreatedAt` ASC
// // LIMIT @pageSize OFFSET @offset;
// //==========================================================================
// public async Task<(Result, IEnumerable<SapphireExchangeOrder>?)> findList(
// string planetId,
// string userGuid,
// ExchangeOrderStatus? orderStatus = null,
// int pageIndex = 1,
// int pageSize = 20,
// string sortOrder = "asc",
// CancellationToken cancellationToken = default)
// {
// var result = new Result();
// try
// {
// var query = m_db_context.SapphireExchangeOrders.AsQueryable();
//
// if (!string.IsNullOrEmpty(planetId))
// {
// query = query.Where(x => x.PlanetId == planetId);
// }
//
// if (!string.IsNullOrEmpty(userGuid))
// {
// query = query.Where(x => x.UserGuid == userGuid);
// }
//
// //orderStatus.HasValue는 orderStatus가 null일 때도 에러가 발생하지 않음. orderStatus가 null이면 HasValue는 false를 반환.
// if (orderStatus.HasValue)
// {
// query = query.Where(x => x.OrderStatus == orderStatus);
// }
//
// query = sortOrder.ToLower() == "desc"
// ? query.OrderByDescending(o => o.CreatedAt)
// : query.OrderBy(o => o.CreatedAt);
//
// var orders = await query
// .Skip((pageIndex - 1) * pageSize)
// .Take(pageSize)
// .ToArrayAsync(cancellationToken);
//
// return (result, orders);
// }
// catch (Exception e)
// {
// result.setFail(ServerErrorCode.DynamoDbException, e.Message);
// return (result, null);
// }
// }
//
// //================================================================================
// // 사파이어 교환 주문 목록을 비동기로 조회한다.
// // OrderType과 PlanetId로 검색한다.
// // Result, IEnumerable<>를 반환한다.
// // 조건에 맞는 값이 없다면 빈 배열을 반환한다.
// //================================================================================
// public async Task<(Result, IEnumerable<SapphireExchangeOrder>?)> findList_old(string planetId, string userGuid,
// ExchangeOrderStatus? orderStatus = null, int pageIndex = 1, int pageSize = 20, CancellationToken cancellationToken = default)
// {
// var result = new Result();
// try
// {
// if (orderStatus == null)
// {
// var orders = await m_db_context.SapphireExchangeOrders
// .OrderBy(o => o.CreatedAt)
// .Skip((pageIndex - 1) * pageSize)
// .Take(pageSize)
// .Where(x => x.PlanetId == planetId && x.UserGuid == userGuid).ToArrayAsync(cancellationToken);
// return (result, orders);
// }
// else
// {
// var orders = await m_db_context.SapphireExchangeOrders
// .Where(x => x.PlanetId == planetId && x.UserGuid == userGuid && x.OrderStatus == orderStatus)
// .Skip((pageIndex - 1) * pageSize)
// .Take(pageSize)
// .ToArrayAsync(cancellationToken);
// return (result, orders);
// }
// }
// catch (Exception e)
// {
// result.setFail(ServerErrorCode.RdbError, e.Message);
// return (result, null);
// }
// }
//
// public async Task<PaginatedList<SapphireExchangeOrder>> getSapphireExchangeOrders(int pageIndex, int pageSize)
// {
// var query = m_db_context.Set<SapphireExchangeOrder>().AsNoTracking();
//
// var count = await query.CountAsync();
// var items = await query
// .OrderBy(o => o.CreatedAt)
// .Skip((pageIndex - 1) * pageSize)
// .Take(pageSize)
// .ToListAsync();
//
// return new PaginatedList<SapphireExchangeOrder>(items, count, pageIndex, pageSize);
// }
//
// public class PaginatedList<T> : List<T>
// {
// public int PageIndex { get; private set; }
// public int TotalPages { get; private set; }
// public int TotalCount { get; private set; }
//
// public PaginatedList(List<T> items, int count, int pageIndex, int pageSize)
// {
// PageIndex = pageIndex;
// TotalCount = count;
//
// this.AddRange(items);
// }
//
// public bool HasPreviousPage => PageIndex > 1;
// public bool HasNextPage => PageIndex < TotalPages;
// }
// }