$payload */ public function __construct( public readonly int $id, public readonly int $siteId, public readonly string $type, public readonly array $payload, public readonly string $state, public readonly int $attempts, public readonly ?string $leaseOwner, public readonly ?string $lastError, ) { } /** @param array $row */ public static function fromRow(array $row): self { return new self( (int) $row['id'], (int) $row['site_id'], (string) $row['type'], (array) json_decode((string) $row['payload'], true, 32, JSON_THROW_ON_ERROR), (string) $row['state'], (int) $row['attempts'], $row['lease_owner'] === null ? null : (string) $row['lease_owner'], $row['last_error'] === null ? null : (string) $row['last_error'], ); } }