<?php

declare(strict_types=1);

namespace Modules\{{ Module }}\DTOs;

use App\Foundation\Dto\Dto;
use Modules\{{ Module }}\Http\Requests\Store{{ Entity }}Request;
use Modules\{{ Module }}\Http\Requests\Update{{ Entity }}Request;

final readonly class {{ Entity }}Data extends Dto
{
    public function __construct(
        public ?string $name = null,
    ) {}

    public static function fromStoreRequest(Store{{ Entity }}Request $request): self
    {
        /** @var array{name: string} $validated */
        $validated = $request->validated();

        return new self(
            name: $validated['name'],
        );
    }

    public static function fromUpdateRequest(Update{{ Entity }}Request $request): self
    {
        /** @var array{name?: string} $validated */
        $validated = $request->validated();

        return new self(
            name: $validated['name'] ?? null,
        );
    }
}
