optimize flow retrieval
This commit is contained in:
@@ -15,13 +15,14 @@ use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
|
||||
final readonly class ShopSearchService
|
||||
{
|
||||
public function __construct(
|
||||
private CommerceQueryParser $queryParser,
|
||||
private CommerceQueryParser $queryParser,
|
||||
private ShopwareCriteriaBuilder $criteriaBuilder,
|
||||
private StoreApiClient $storeApiClient,
|
||||
private bool $enabled = true,
|
||||
private int $maxResults = 25,
|
||||
private string $baseUrl
|
||||
) {
|
||||
private StoreApiClient $storeApiClient,
|
||||
private bool $enabled = true,
|
||||
private int $maxResults = 25,
|
||||
private string $baseUrl
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -65,12 +66,12 @@ final readonly class ShopSearchService
|
||||
}
|
||||
|
||||
$results[] = new ShopProductResult(
|
||||
id: (string) ($row['id'] ?? ''),
|
||||
name: trim((string) ($row['translated']['name'] ?? '')),
|
||||
productNumber: isset($row['productNumber']) ? (string) $row['productNumber'] : null,
|
||||
id: (string)($row['id'] ?? ''),
|
||||
name: trim((string)($row['translated']['name'] ?? '')),
|
||||
productNumber: isset($row['productNumber']) ? (string)$row['productNumber'] : null,
|
||||
manufacturer: $this->extractManufacturer($row),
|
||||
price: $this->extractPrice($row),
|
||||
available: isset($row['available']) ? (bool) $row['available'] : null,
|
||||
available: isset($row['available']) ? (bool)$row['available'] : null,
|
||||
url: $this->baseUrl . $this->extractUrl($row),
|
||||
highlights: $this->extractHighlights($row),
|
||||
description: $this->cleanUpDescription($row),
|
||||
@@ -81,7 +82,7 @@ final readonly class ShopSearchService
|
||||
|
||||
return array_values(array_filter(
|
||||
$results,
|
||||
static fn (ShopProductResult $product): bool => $product->name !== ''
|
||||
static fn(ShopProductResult $product): bool => $product->name !== ''
|
||||
));
|
||||
}
|
||||
|
||||
@@ -97,12 +98,13 @@ final readonly class ShopSearchService
|
||||
private function cleanUpDescription(array $description): string
|
||||
{
|
||||
if (isset($description['translated']['description'])) {
|
||||
$newDesc = strip_tags((string) $description['translated']['description']);
|
||||
$newDesc = strip_tags((string)$description['translated']['description']);
|
||||
$newDesc = html_entity_decode($newDesc);
|
||||
$newDesc = preg_replace('/^[ \t]*\R/m', '', $newDesc);
|
||||
$newDesc = preg_replace('/[ \t]{2,}/', ' ', $newDesc);
|
||||
$result = trim((string) $newDesc);
|
||||
$result = trim((string)$newDesc);
|
||||
|
||||
return mb_substr($result, 0, 500);
|
||||
return mb_substr($result, 0, 1500);
|
||||
}
|
||||
|
||||
return '';
|
||||
@@ -140,7 +142,7 @@ final readonly class ShopSearchService
|
||||
return null;
|
||||
}
|
||||
|
||||
return number_format((float) $unitPrice, 2, ',', '.') . ' €';
|
||||
return number_format((float)$unitPrice, 2, ',', '.') . ' €';
|
||||
}
|
||||
|
||||
private function extractUrl(array $row): ?string
|
||||
@@ -173,7 +175,7 @@ final readonly class ShopSearchService
|
||||
$highlights = [];
|
||||
|
||||
if (isset($row['available'])) {
|
||||
$highlights[] = (bool) $row['available'] ? 'Verfügbar' : 'Nicht verfügbar';
|
||||
$highlights[] = (bool)$row['available'] ? 'Verfügbar' : 'Nicht verfügbar';
|
||||
}
|
||||
|
||||
if (isset($row['productNumber']) && is_string($row['productNumber']) && trim($row['productNumber']) !== '') {
|
||||
|
||||
Reference in New Issue
Block a user