/** * @param \Generated\Shared\Transfer\ProductSearchPreferencesTransfer $productSearchPreferencesTransfer * * @return void */ public function save(ProductSearchPreferencesTransfer $productSearchPreferencesTransfer) { $this->productSearchQueryContainer->getConnection()->beginTransaction(); $idProductAttributesMetadata = $productSearchPreferencesTransfer->requireIdProductAttributesMetadata()->getIdProductAttributesMetadata(); $this->cleanProductSearchAttributeMap($idProductAttributesMetadata); $this->addFullText($productSearchPreferencesTransfer, $idProductAttributesMetadata)->addFullTextBoosted($productSearchPreferencesTransfer, $idProductAttributesMetadata)->addSuggestionTerms($productSearchPreferencesTransfer, $idProductAttributesMetadata)->addCompletionTerms($productSearchPreferencesTransfer, $idProductAttributesMetadata); /* * TODO: we need to touch all products to trigger collectors (search only if possible) to update the searchable data. * Maybe we'd need a different event to trigger the product search collector ("Apply search preferences" button in the UI). */ $this->productSearchQueryContainer->getConnection()->commit(); }