6 declare(strict_types=1);
27 private $resourceConnection;
32 private $indexNameBuilder;
37 private $indexNameResolver;
42 private $metadataPool;
57 $this->indexNameBuilder = $indexNameBuilder;
58 $this->indexNameResolver = $indexNameResolver;
59 $this->metadataPool = $metadataPool;
71 $connection = $this->resourceConnection->getConnection();
73 $indexName = $this->indexNameBuilder
75 ->addDimension(
'stock_', (
string)$stockId)
79 $indexTableName = $this->indexNameResolver->resolveName($indexName);
81 $metadata = $this->metadataPool->getMetadata(ProductInterface::class);
82 $linkField = $metadata->getLinkField();
86 [
'stock' => $indexTableName],
93 [
'product_entity' => $this->resourceConnection->getTableName(
'catalog_product_entity')],
94 'product_entity.sku = stock.sku',
97 [
'parent_link' => $this->resourceConnection->getTableName(
'catalog_product_link')],
98 'parent_link.linked_product_id = product_entity.entity_id 99 AND parent_link.link_type_id = ' . Link::LINK_TYPE_GROUPED,
102 [
'parent_product_entity' => $this->resourceConnection->getTableName(
'catalog_product_entity')],
103 'parent_product_entity.' . $linkField .
' = parent_link.product_id',
106 ->group([
'parent_product_entity.sku']);
__construct(ResourceConnection $resourceConnection, IndexNameBuilder $indexNameBuilder, IndexNameResolverInterface $indexNameResolver, MetadataPool $metadataPool)