from typing import Literal

from pydantic import BaseModel, Field


class ContentPageIn(BaseModel):
    slug: str = Field(min_length=2, max_length=120)
    title: str = Field(min_length=2, max_length=200)
    body: str
    status: Literal["draft", "published"] = "draft"


class ContentPagePatchIn(BaseModel):
    title: str | None = Field(default=None, min_length=2, max_length=200)
    body: str | None = None
    status: Literal["draft", "published"] | None = None


class ContentPageOut(BaseModel):
    id: str
    slug: str
    title: str
    body: str
    status: str
