초기커밋
This commit is contained in:
240
BrokerApiCore/Repository/SapphireExchangeOrderRepo.cs
Normal file
240
BrokerApiCore/Repository/SapphireExchangeOrderRepo.cs
Normal 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;
|
||||
// }
|
||||
// }
|
||||
Reference in New Issue
Block a user