From b43c7f3e9290fbaf176bd584a226f6b5724ff560 Mon Sep 17 00:00:00 2001
From: SeungGwa123 <skwan123@naver.com>
Date: Thu, 5 Dec 2024 15:31:29 +0900
Subject: [PATCH] fix: ask service error fix

---
 .../server/src/trade/trade-ask.service.ts     | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/packages/server/src/trade/trade-ask.service.ts b/packages/server/src/trade/trade-ask.service.ts
index 05d5f153..e127dac9 100644
--- a/packages/server/src/trade/trade-ask.service.ts
+++ b/packages/server/src/trade/trade-ask.service.ts
@@ -174,7 +174,7 @@ export class AskService extends TradeAskBidService implements OnModuleInit {
 
       for (const order of orderbook) {
         if (order.bid_price < askDto.receivedPrice) break;
-        await this.executeTransaction(async (queryRunner) => {
+        const tradeResult = await this.executeTransaction(async (queryRunner) => {
           const remainingQuantity = await this.executeAskTrade(
             askDto,
             order,
@@ -183,6 +183,7 @@ export class AskService extends TradeAskBidService implements OnModuleInit {
 
           return !isMinimumQuantity(remainingQuantity);
         });
+        if (!tradeResult) break;
       }
     } catch (error) {
       if (error instanceof TradeNotFoundException) {
@@ -244,15 +245,13 @@ export class AskService extends TradeAskBidService implements OnModuleInit {
     buyData.assetName = buyData.tradeCurrency;
     buyData.tradeCurrency = assetName;
 
-    await Promise.all([
-      this.tradeHistoryRepository.createTradeHistory(
-        user,
-        buyData,
-        queryRunner,
-      ),
-      this.processAssetUpdate(asset, buyData, queryRunner),
-      this.updateAccountBalances(askDto, buyData, queryRunner),
-    ]);
+    await this.tradeHistoryRepository.createTradeHistory(
+      user,
+      buyData,
+      queryRunner,
+    )
+    await this.processAssetUpdate(asset, buyData, queryRunner)
+    await this.updateAccountBalances(askDto, buyData, queryRunner)
 
     return await this.updateTradeData(tradeData, buyData, queryRunner);
   }