Open DavidBadura opened 1 month ago
POC:
<?php
declare(strict_types=1);
namespace Patchlevel\EventSourcing\Message\Serializer;
final class LegacyHeadersSerializer implements HeadersSerializer
{
public function __construct(
private readonly HeadersSerializer $parent,
) {
}
/**
* @param list<object> $headers
*
* @return array<string, array<string, mixed>>
*/
public function serialize(array $headers): array
{
return $this->parent->serialize($headers);
}
/**
* @param array<string, mixed> $serializedHeaders
*
* @return list<object>
*/
public function deserialize(array $serializedHeaders): array
{
$legacyHeaders = [];
if (array_key_exists('application-id', $serializedHeaders)) {
$legacyHeaders[] = new ApplicationHeader($serializedHeaders['application-id']);
unset($serializedHeaders['application-id']);
}
$headers = $this->parent->deserialize($serializedHeaders);
return array_merge($legacyHeaders, $headers);
}
}
It is currently not possible to upgrade from version 1 to version 2 without hacking into the DB yourself. An upgrade path must be found here.