<?php

declare(strict_types=1);

namespace App\Module\Core\Application\DTO;

use App\Module\Core\Domain\Entity\User;
use DateTimeImmutable;

final readonly class UserOutput
{
    public function __construct(
        public ?int $id,
        public string $username,
        /** @var list<string> */
        public array $roles,
        public ?DateTimeImmutable $createdAt,
    ) {}

    public static function fromEntity(User $user): self
    {
        return new self(
            id: $user->getId(),
            username: $user->getUsername(),
            roles: $user->getRoles(),
            createdAt: $user->getCreatedAt(),
        );
    }
}
