from datetime import datetime from typing import Optional from pydantic import BaseModel, ConfigDict, Field class AnnouncementCreate(BaseModel): title: str = Field(..., min_length=1, max_length=200) content: str = Field(..., min_length=1) class AnnouncementUpdate(BaseModel): title: Optional[str] = Field(default=None, min_length=1, max_length=200) content: Optional[str] = None is_published: Optional[bool] = None class AnnouncementResponse(BaseModel): id: int title: str content: str is_published: bool published_at: Optional[datetime] = None created_at: datetime updated_at: datetime model_config = ConfigDict(from_attributes=True)