6 declare(strict_types=1);
26 private $resourceConnection;
31 private $indexNameBuilder;
36 private $indexNameResolver;
41 private $metadataPool;
56 $this->indexNameBuilder = $indexNameBuilder;
57 $this->indexNameResolver = $indexNameResolver;
58 $this->metadataPool = $metadataPool;
70 $connection = $this->resourceConnection->getConnection();
72 $indexName = $this->indexNameBuilder
74 ->addDimension(
'stock_', (
string)$stockId)
78 $indexTableName = $this->indexNameResolver->resolveName($indexName);
80 $metadata = $this->metadataPool->getMetadata(ProductInterface::class);
81 $linkField = $metadata->getLinkField();
85 [
'stock' => $indexTableName],
92 [
'product_entity' => $this->resourceConnection->getTableName(
'catalog_product_entity')],
93 'product_entity.sku = stock.sku',
96 [
'parent_link' => $this->resourceConnection->getTableName(
'catalog_product_super_link')],
97 'parent_link.product_id = product_entity.entity_id',
100 [
'parent_product_entity' => $this->resourceConnection->getTableName(
'catalog_product_entity')],
101 'parent_product_entity.' . $linkField .
' = parent_link.parent_id',
104 ->group([
'parent_product_entity.sku']);
__construct(ResourceConnection $resourceConnection, IndexNameBuilder $indexNameBuilder, IndexNameResolverInterface $indexNameResolver, MetadataPool $metadataPool)