<?php
declare(strict_types=1);
namespace VehicleIngestBundle\Message;
/**
* Async message dispatched by LeasingController onto the `vehicle_ingest` transport (routed in
* config/config.yaml). Consumed by IngestLeasingMessageHandler, which resolves $adId to a
* vehicle and delegates to LeasingMapper::apply()/clear() (Plan 3, Task 5) to actually persist
* $data onto the vehicle's `Leasing` objectbrick and recompute `filterRate` - see
* LeasingMapper's class docblock for the field mapping and its sandbox-unconfirmed points.
*
* $operation is 'upsert' (PUT) or 'delete' (DELETE). $data is the decoded JSON body for
* 'upsert' (null for 'delete').
*/
final class IngestLeasingMessage
{
public function __construct(
public readonly string $adId,
public readonly string $operation,
public readonly ?array $data,
) {
}
}