import uuid from datetime import datetime from typing import Optional, List from pydantic import BaseModel, ConfigDict class PostBase(BaseModel): title: str slug: str excerpt: Optional[str] = None body: str = "" author: Optional[str] = None featured_image_url: Optional[str] = None tags: List[str] = [] published: bool = False class PostCreate(PostBase): pass class PostUpdate(BaseModel): title: Optional[str] = None slug: Optional[str] = None excerpt: Optional[str] = None body: Optional[str] = None author: Optional[str] = None featured_image_url: Optional[str] = None tags: Optional[List[str]] = None published: Optional[bool] = None class PostResponse(PostBase): id: uuid.UUID created_at: datetime updated_at: datetime model_config = ConfigDict(from_attributes=True) class PaginatedPostsResponse(BaseModel): items: List[PostResponse] total: int page: int per_page: int total_pages: int