Skip to content

Commit f1d8711

Browse files
committed
MAGETWO-54682: Fast load of product options
- MAGETWO-55404: Make lightweight product price resolver for configurable product -- rename interface
1 parent 740d107 commit f1d8711

11 files changed

+67
-82
lines changed

app/code/Magento/Catalog/Model/ResourceModel/Product/Indexer/ProductProviderByIndexPrice.php renamed to app/code/Magento/Catalog/Model/ResourceModel/Product/Indexer/LinkedProductSelectBuilderByIndexPrice.php

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,9 @@
88
use Magento\Catalog\Model\Product;
99
use Magento\Framework\DB\Select;
1010
use Magento\Store\Model\Store;
11-
use Magento\Catalog\Model\ResourceModel\Product\ProductProviderByPriceInterface;
11+
use Magento\Catalog\Model\ResourceModel\Product\LinkedProductSelectBuilderInterface;
1212

13-
/**
14-
* Class ProductProviderByIndexPrice
15-
*/
16-
class ProductProviderByIndexPrice implements ProductProviderByPriceInterface
13+
class LinkedProductSelectBuilderByIndexPrice implements LinkedProductSelectBuilderInterface
1714
{
1815
/**
1916
* @var \Magento\Store\Model\StoreManagerInterface
@@ -48,7 +45,7 @@ public function __construct(
4845
/**
4946
* {@inheritdoc}
5047
*/
51-
public function getSelect($productId)
48+
public function build($productId)
5249
{
5350
return [$this->resource->getConnection()->select()
5451
->from(['t' => $this->resource->getTableName('catalog_product_index_price')], 'entity_id')

app/code/Magento/Catalog/Model/ResourceModel/Product/ProductProviderByBasePrice.php renamed to app/code/Magento/Catalog/Model/ResourceModel/Product/LinkedProductSelectBuilderByBasePrice.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,7 @@
99
use Magento\Framework\DB\Select;
1010
use Magento\Store\Model\Store;
1111

12-
/**
13-
* Class ProductProviderByBasePrice
14-
*/
15-
class ProductProviderByBasePrice implements ProductProviderByPriceInterface
12+
class LinkedProductSelectBuilderByBasePrice implements LinkedProductSelectBuilderInterface
1613
{
1714
/**
1815
* @var \Magento\Store\Model\StoreManagerInterface
@@ -55,7 +52,7 @@ public function __construct(
5552
/**
5653
* {@inheritdoc}
5754
*/
58-
public function getSelect($productId)
55+
public function build($productId)
5956
{
6057
$priceAttribute = $this->eavConfig->getAttribute(Product::ENTITY, 'price');
6158
$priceSelect = $this->resource->getConnection()->select()

app/code/Magento/Catalog/Model/ResourceModel/Product/ProductProviderBySpecialPrice.php renamed to app/code/Magento/Catalog/Model/ResourceModel/Product/LinkedProductSelectBuilderBySpecialPrice.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,7 @@
99
use Magento\Framework\DB\Select;
1010
use Magento\Store\Model\Store;
1111

12-
/**
13-
* Class ProductProviderBySpecialPrice
14-
*/
15-
class ProductProviderBySpecialPrice implements ProductProviderByPriceInterface
12+
class LinkedProductSelectBuilderBySpecialPrice implements LinkedProductSelectBuilderInterface
1613
{
1714
/**
1815
* @var \Magento\Store\Model\StoreManagerInterface
@@ -71,7 +68,7 @@ public function __construct(
7168
/**
7269
* {@inheritdoc}
7370
*/
74-
public function getSelect($productId)
71+
public function build($productId)
7572
{
7673
$connection = $this->resource->getConnection();
7774
$specialPriceAttribute = $this->eavConfig->getAttribute(Product::ENTITY, 'special_price');

app/code/Magento/Catalog/Model/ResourceModel/Product/ProductProviderByTierPrice.php renamed to app/code/Magento/Catalog/Model/ResourceModel/Product/LinkedProductSelectBuilderByTierPrice.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use Magento\Catalog\Model\Product;
99
use Magento\Framework\DB\Select;
1010

11-
class ProductProviderByTierPrice implements ProductProviderByPriceInterface
11+
class LinkedProductSelectBuilderByTierPrice implements LinkedProductSelectBuilderInterface
1212
{
1313
/**
1414
* Default website id
@@ -56,7 +56,7 @@ public function __construct(
5656
/**
5757
* {@inheritdoc}
5858
*/
59-
public function getSelect($productId)
59+
public function build($productId)
6060
{
6161
$priceSelect = $this->resource->getConnection()->select()
6262
->from(['t' => $this->resource->getTableName('catalog_product_entity_tier_price')], 'entity_id')
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
/**
3+
* Copyright © 2016 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Catalog\Model\ResourceModel\Product;
8+
9+
class LinkedProductSelectBuilderComposite implements LinkedProductSelectBuilderInterface
10+
{
11+
/**
12+
* @var LinkedProductSelectBuilderInterface[]
13+
*/
14+
private $linkedProductSelectBuilder;
15+
16+
/**
17+
* @param LinkedProductSelectBuilderInterface[] $linkedProductSelectBuilder
18+
*/
19+
public function __construct($linkedProductSelectBuilder)
20+
{
21+
$this->linkedProductSelectBuilder = $linkedProductSelectBuilder;
22+
}
23+
24+
/**
25+
* {@inheritdoc}
26+
*/
27+
public function build($productId)
28+
{
29+
$select = [];
30+
foreach ($this->linkedProductSelectBuilder as $productSelectBuilder) {
31+
$select = array_merge($select, $productSelectBuilder->build($productId));
32+
}
33+
34+
return $select;
35+
}
36+
}

app/code/Magento/Catalog/Model/ResourceModel/Product/ProductProviderByPriceInterface.php renamed to app/code/Magento/Catalog/Model/ResourceModel/Product/LinkedProductSelectBuilderInterface.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
/**
99
* Provide Select object for retrieve product id with minimal price
1010
*/
11-
interface ProductProviderByPriceInterface
11+
interface LinkedProductSelectBuilderInterface
1212
{
1313
/**
1414
* @param int $productId
1515
* @return \Magento\Framework\DB\Select[]
1616
*/
17-
public function getSelect($productId);
17+
public function build($productId);
1818
}

app/code/Magento/Catalog/Model/ResourceModel/Product/ProductProviderByPriceComposite.php

Lines changed: 0 additions & 39 deletions
This file was deleted.

app/code/Magento/Catalog/etc/di.xml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -537,14 +537,14 @@
537537
</argument>
538538
</arguments>
539539
</type>
540-
<preference for="Magento\Catalog\Model\ResourceModel\Product\ProductProviderByPriceInterface" type="Magento\Catalog\Model\ResourceModel\Product\ProductProviderByPriceComposite" />
541-
<type name="Magento\Catalog\Model\ResourceModel\Product\ProductProviderByPriceComposite">
542-
<arguments>
543-
<argument name="productProviderByPrice" xsi:type="array">
544-
<item name="basePrice" xsi:type="object">Magento\Catalog\Model\ResourceModel\Product\ProductProviderByBasePrice</item>
545-
<item name="specialPrice" xsi:type="object">Magento\Catalog\Model\ResourceModel\Product\ProductProviderBySpecialPrice</item>
546-
<item name="tierPrice" xsi:type="object">Magento\Catalog\Model\ResourceModel\Product\ProductProviderByTierPrice</item>
547-
<item name="indexPrice" xsi:type="object">Magento\Catalog\Model\ResourceModel\Product\Indexer\ProductProviderByIndexPrice</item>
540+
<preference for="Magento\Catalog\Model\ResourceModel\Product\LinkedProductSelectBuilderInterface" type="Magento\Catalog\Model\ResourceModel\Product\LinkedProductSelectBuilderComposite" />
541+
<type name="Magento\Catalog\Model\ResourceModel\Product\LinkedProductSelectBuilderComposite">
542+
<arguments>
543+
<argument name="linkedProductSelectBuilder" xsi:type="array">
544+
<item name="basePrice" xsi:type="object">Magento\Catalog\Model\ResourceModel\Product\LinkedProductSelectBuilderByBasePrice</item>
545+
<item name="specialPrice" xsi:type="object">Magento\Catalog\Model\ResourceModel\Product\LinkedProductSelectBuilderBySpecialPrice</item>
546+
<item name="tierPrice" xsi:type="object">Magento\Catalog\Model\ResourceModel\Product\LinkedProductSelectBuilderByTierPrice</item>
547+
<item name="indexPrice" xsi:type="object">Magento\Catalog\Model\ResourceModel\Product\Indexer\LinkedProductSelectBuilderByIndexPrice</item>
548548
</argument>
549549
</arguments>
550550
</type>

app/code/Magento/CatalogRule/Model/ResourceModel/Product/ProductProviderByRulePrice.php renamed to app/code/Magento/CatalogRule/Model/ResourceModel/Product/LinkedProductSelectBuilderByCatalogRulePrice.php

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,9 @@
88
use Magento\Catalog\Model\Product;
99
use Magento\Framework\DB\Select;
1010
use Magento\Store\Model\Store;
11-
use Magento\Catalog\Model\ResourceModel\Product\ProductProviderByPriceInterface;
11+
use Magento\Catalog\Model\ResourceModel\Product\LinkedProductSelectBuilderInterface;
1212

13-
/**
14-
* Class ProductProviderByRulePrice
15-
*/
16-
class ProductProviderByRulePrice implements ProductProviderByPriceInterface
13+
class LinkedProductSelectBuilderByCatalogRulePrice implements LinkedProductSelectBuilderInterface
1714
{
1815
/**
1916
* @var \Magento\Store\Model\StoreManagerInterface
@@ -64,7 +61,7 @@ public function __construct(
6461
/**
6562
* {@inheritdoc}
6663
*/
67-
public function getSelect($productId)
64+
public function build($productId)
6865
{
6966
$timestamp = $this->localeDate->scopeTimeStamp($this->storeManager->getStore());
7067
$currentDate = $this->dateTime->formatDate($timestamp, false);

app/code/Magento/CatalogRule/etc/di.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@
3333
</argument>
3434
</arguments>
3535
</virtualType>
36-
<type name="Magento\Catalog\Model\ResourceModel\Product\ProductProviderByPriceComposite">
36+
<type name="Magento\Catalog\Model\ResourceModel\Product\LinkedProductSelectBuilderComposite">
3737
<arguments>
38-
<argument name="productProviderByPrice" xsi:type="array">
39-
<item name="rulePrice" xsi:type="object">Magento\CatalogRule\Model\ResourceModel\Product\ProductProviderByRulePrice</item>
38+
<argument name="linkedProductSelectBuilder" xsi:type="array">
39+
<item name="catalogRulePrice" xsi:type="object">Magento\CatalogRule\Model\ResourceModel\Product\LinkedProductSelectBuilderByCatalogRulePrice</item>
4040
</argument>
4141
</arguments>
4242
</type>

0 commit comments

Comments
 (0)