fix: reduce snapshot payloads via serializer group and hydration

This commit is contained in:
Björn Fromme committed 2026-03-24 17:06:10 +01:00
1 parent 3b6ee90a7e
commit 6f07678f04
15 files changed
+142 -105

No files matched your search

+26 -26
View File
@@ -20,43 +20,43 @@ use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
class Travel
{
use SortByPriceTrait;
#[Groups(['api:list', 'api:single'])]
#[Groups(['api:list', 'api:single', 'snapshot'])]
public ?int $id = null;
#[Groups(['api:list', 'api:single'])]
#[Groups(['api:list', 'api:single', 'snapshot'])]
public ?string $code = null;
#[Groups(['api:list', 'api:single'])]
#[Groups(['api:list', 'api:single', 'snapshot'])]
public ?string $productCode = null;
#[Groups(['api:list', 'api:single'])]
#[Groups(['api:list', 'api:single', 'snapshot'])]
public ?int $productId = null;
#[Groups(['api:list', 'api:single'])]
#[Groups(['api:list', 'api:single', 'snapshot'])]
public ?string $label = null;
#[Groups(['api:list', 'api:single'])]
#[Groups(['api:list', 'api:single', 'snapshot'])]
public ?int $hotelId = null;
#[Groups(['api:single'])]
#[Groups(['api:single', 'snapshot'])]
public ?Hotel $hotel = null;
#[Groups(['api:list', 'api:single'])]
#[Groups(['api:list', 'api:single', 'snapshot'])]
#[Context([DateTimeNormalizer::FORMAT_KEY => 'Y-m-d'])]
public ?\DateTimeImmutable $dateFrom = null;
#[Groups(['api:list', 'api:single'])]
#[Groups(['api:list', 'api:single', 'snapshot'])]
#[Context([DateTimeNormalizer::FORMAT_KEY => 'Y-m-d'])]
public ?\DateTimeImmutable $dateTo = null;
#[Groups(['api:list', 'api:single'])]
#[Groups(['api:list', 'api:single', 'snapshot'])]
public ?string $type = null;
/**
* Travel booking status from BusProNet API.
* Possible values: 'Frei', 'Anfrage', 'Buchungsstop'.
*/
#[Groups(['api:single'])]
#[Groups(['api:single', 'snapshot'])]
public ?string $status = null;
/**
@@ -65,67 +65,67 @@ class Travel
*
* @var array<string>
*/
#[Groups(['api:single'])]
#[Groups(['api:single', 'snapshot'])]
public array $allowedBookingStatus = [];
#[Groups(['api:list', 'api:single'])]
#[Groups(['api:list', 'api:single', 'snapshot'])]
public ?float $priceFrom = null;
/**
* @var array<int, CrmSelectionGroup>
*/
#[Groups(['api:single'])]
#[Groups(['api:single', 'snapshot'])]
public array $selectionGroups = [];
/**
* @var array<int, Service>
*/
#[Groups(['api:single'])]
#[Groups(['api:single', 'snapshot'])]
public array $additionalServices = [];
#[Groups(['api:single'])]
#[Groups(['api:single', 'snapshot'])]
public bool $additionalServicesMutable = true;
/**
* @var array<int, Service>
*/
#[Groups(['api:single'])]
#[Groups(['api:single', 'snapshot'])]
public array $transportationServices = [];
#[Groups(['api:single'])]
#[Groups(['api:single', 'snapshot'])]
public bool $transportationServicesMutable = true;
/**
* @var array<int, Pickup>
*/
#[Groups(['api:single'])]
#[Groups(['api:single', 'snapshot'])]
public array $pickups = [];
/**
* @var array<int, Pickup>
*/
#[Groups(['api:single'])]
#[Groups(['api:single', 'snapshot'])]
public array $dropOffs = [];
#[Groups(['api:single'])]
#[Groups(['api:single', 'snapshot'])]
public bool $pickupsMutable = true;
/**
* @var array<int, Room>
*/
#[Groups(['api:single'])]
#[Groups(['api:single', 'snapshot'])]
public array $rooms = [];
#[Groups(['api:single'])]
#[Groups(['api:single', 'snapshot'])]
public bool $roomsMutable = true;
#[Groups(['api:single'])]
#[Groups(['api:single', 'snapshot'])]
public bool $participantDataMutable = true;
#[Groups(['api:single'])]
#[Groups(['api:single', 'snapshot'])]
public bool $participantCountMutable = true;
#[Groups(['api:single'])]
#[Groups(['api:single', 'snapshot'])]
public ?Guide $guide = null;
/**