fix: reduce snapshot payloads via serializer group and hydration

This commit is contained in:
Björn Fromme
2026-03-24 17:06:10 +01:00
parent 3b6ee90a7e
commit 6f07678f04
15 changed files with 142 additions and 105 deletions
+25 -25
View File
@@ -17,78 +17,78 @@ use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
*/
class Service
{
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
public ?int $id = null;
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
public ?string $category = null;
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
public ?string $status = null;
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
public bool $mandatory = false;
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
public bool $autoBook = false;
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
public ?string $label = null;
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
#[Context([DateTimeNormalizer::FORMAT_KEY => 'Y-m-d'])]
public ?\DateTimeImmutable $dateFrom = null;
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
public ?string $timeFrom = null;
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
public ?string $dayTime = null;
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
#[Context([DateTimeNormalizer::FORMAT_KEY => 'Y-m-d'])]
public ?\DateTimeImmutable $dateTo = null;
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
public ?string $subType = null;
#[Groups(['booking'])]
public ?int $totalCount = null;
#[Groups(['api:single'])]
#[Groups(['api:single', 'snapshot'])]
public array $mapping = [];
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
public ?float $price = null;
#[Groups(['api:single'])]
#[Groups(['api:single', 'snapshot'])]
public ?float $totalPrice = null;
#[Groups(['api:single'])]
#[Groups(['api:single', 'snapshot'])]
public array $individualPrice = [];
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
public ?int $available = null;
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
public ?string $source = null;
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
public ?string $direction = null;
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
public ?int $ageFrom = null;
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
public ?int $ageTo = null;
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
public ?int $birthYearFrom = null;
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
public ?int $birthYearTo = null;
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
public ?string $ageConstraintType = null;
#[Groups(['api:single'])]
@@ -97,7 +97,7 @@ class Service
#[Groups(['api:single'])]
public ?string $rawAgeConstraintData = null;
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
public ?string $description = null;
/**
@@ -107,6 +107,6 @@ class Service
* When false, this service's price is excluded when determining which insurance
* tier is appropriate for a participant.
*/
#[Groups(['api:single', 'api:list'])]
#[Groups(['api:single', 'api:list', 'snapshot'])]
public bool $includeInInsuranceCalculation = true;
}