"""User GraphQL type."""

from typing import Any

import strawberry
from django.contrib.auth import get_user_model

UserModel = get_user_model()


@strawberry.type
class UserType:
    """GraphQL type for User model."""

    id: strawberry.ID
    username: str
    email: str
    first_name: str
    last_name: str
    date_joined: str

    @classmethod
    def from_model(cls, user: Any) -> "UserType":
        """Create UserType from Django User model instance."""
        return cls(
            id=strawberry.ID(str(user.pk)),
            username=user.username,
            email=user.email,
            first_name=user.first_name,
            last_name=user.last_name,
            date_joined=user.date_joined.isoformat() if user.date_joined else "",
        )
