<?php

namespace App\DTOs;

readonly class CatalogReviewSource
{
    public function __construct(
        public string $name,
        public string $url,
        public string $angle,
    ) {}

    /**
     * @param  array<string, mixed>  $data
     */
    public static function fromArray(array $data): self
    {
        return new self(
            name: (string) ($data['name'] ?? ''),
            url: (string) ($data['url'] ?? ''),
            angle: (string) ($data['angle'] ?? ''),
        );
    }

    /**
     * @return array{name: string, url: string, angle: string}
     */
    public function toArray(): array
    {
        return [
            'name' => $this->name,
            'url' => $this->url,
            'angle' => $this->angle,
        ];
    }
}
