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


class TimeBase(BaseModel):
    nome: str = Field(
        ...,
        description="Nome do time",
        min_length=1,
        max_length=150,
    )
    descricao: Optional[str] = Field(
        None, description="Descrição do time", max_length=255
    )
    empresa_id: str = Field(
        ...,
        description="ID da empresa",
        min_length=1,
        max_length=36,
    )

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


class TimeCreate(TimeBase):
    pass


class TimeUpdate(BaseModel):
    nome: Optional[str] = Field(None, min_length=1, max_length=150)
    descricao: Optional[str] = Field(None, max_length=255)
    empresa_id: Optional[str] = Field(None, min_length=1, max_length=36)

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


class Time(TimeBase):
    id: int = Field(..., description="ID do time")

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


class TimeResponse(Time):
    pass
