indexNameResolver = $indexNameResolver; $this->batch = $batch; $this->resourceConnection = $resourceConnection; $this->batchSize = $batchSize; } /** * @inheritdoc */ public function saveIndex(IndexName $indexName, \Traversable $documents, string $connectionName): void { $connection = $this->resourceConnection->getConnection($connectionName); $tableName = $this->indexNameResolver->resolveName($indexName); $columns = [IndexStructure::SKU, IndexStructure::QUANTITY, IndexStructure::IS_SALABLE]; foreach ($this->batch->getItems($documents, $this->batchSize) as $batchDocuments) { $connection->insertArray($tableName, $columns, $batchDocuments); } } /** * @inheritdoc */ public function cleanIndex(IndexName $indexName, \Traversable $documents, string $connectionName): void { $connection = $this->resourceConnection->getConnection($connectionName); $tableName = $this->indexNameResolver->resolveName($indexName); $connection->delete($tableName, ['sku IN (?)' => iterator_to_array($documents)]); } }