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


class PalavraBase(BaseModel):
    palavra: str = Field(
        ...,
        description="Palavra-chave",
        min_length=1,
        max_length=255,
    )

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


class PalavraCreate(PalavraBase):
    pass


class PalavraUpdate(BaseModel):
    palavra: Optional[str] = Field(
        None,
        description="Palavra-chave",
        min_length=1,
        max_length=255)

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


class Palavra(PalavraBase):
    id: int = Field(..., description="ID da palavra")

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


class PalavraResponse(Palavra):
    pass
