Skip to content

Commit 0858f24

Browse files
committed
Performance optimization
1 parent 2d2b3a1 commit 0858f24

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

app/code/Magento/QuoteGraphQl/Model/GetDiscounts.php

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,17 @@
1818

1919
use Magento\Framework\Api\SearchCriteriaBuilder;
2020
use Magento\Framework\Exception\LocalizedException;
21+
use Magento\Framework\ObjectManager\ResetAfterRequestInterface;
2122
use Magento\Quote\Api\Data\CartInterface;
2223
use Magento\Quote\Model\Quote;
2324
use Magento\SalesRule\Api\CouponRepositoryInterface;
2425
use Magento\SalesRule\Api\Data\CouponInterface;
2526
use Magento\SalesRule\Api\Data\RuleDiscountInterface;
2627

27-
class GetDiscounts
28+
class GetDiscounts implements ResetAfterRequestInterface
2829
{
30+
private array $couponsByCode = [];
31+
2932
/**
3033
* @param CouponRepositoryInterface $couponRepository
3134
* @param SearchCriteriaBuilder $criteriaBuilder
@@ -96,12 +99,24 @@ private function getCoupon(CartInterface $quote): ?CouponInterface
9699
if (!$couponCode) {
97100
return null;
98101
}
102+
if (isset($this->couponsByCode[$couponCode])) {
103+
return $this->couponsByCode[$couponCode];
104+
}
99105
$couponModels = $this->couponRepository->getList(
100106
$this->criteriaBuilder->addFilter('code', $couponCode)->create()
101107
)->getItems();
102108
if (empty($couponModels)) {
103109
return null;
104110
}
105-
return reset($couponModels);
111+
$this->couponsByCode[$couponCode] = reset($couponModels);
112+
return $this->couponsByCode[$couponCode];
113+
}
114+
115+
/**
116+
* @inheritdoc
117+
*/
118+
public function _resetState(): void
119+
{
120+
$this->couponsByCode = [];
106121
}
107122
}

0 commit comments

Comments
 (0)