from typing import Optional
from datetime import datetime
from pydantic import BaseModel, Field, ConfigDict


class UsuarioTimeBase(BaseModel):
    usuario_id: int = Field(..., description="ID do usuário")
    time_id: int = Field(..., description="ID do time")
    funcao: Optional[str] = Field(
        None,
        max_length=50,
        description="Função/cargo do usuário no time")

    model_config = ConfigDict(
        from_attributes=True,
        validate_assignment=True,
    )


class UsuarioTimeCreate(UsuarioTimeBase):
    """Schema para vincular um usuário a um time"""
    pass


class UsuarioTimeUpdate(BaseModel):
    """Schema para atualizar o vínculo (apenas função)"""
    funcao: Optional[str] = Field(
        None,
        max_length=50,
        description="Função/cargo do usuário no time",
    )

    model_config = ConfigDict(
        from_attributes=True,
        validate_assignment=True,
    )


class UsuarioTimeResponse(UsuarioTimeBase):
    """Schema de resposta do vínculo"""
    data_entrada: datetime = Field(..., description="Data de entrada no time")

    model_config = ConfigDict(
        from_attributes=True,
        validate_assignment=True,
    )
