from pydantic import BaseModel, ConfigDict, Field from datetime import datetime from typing import Optional class NotificationResponse(BaseModel): id: int user_id: int type: str title: Optional[str] = None message: Optional[str] = None data: Optional[dict] = None source_type: Optional[str] = None source_id: Optional[int] = None is_read: bool created_at: datetime model_config = ConfigDict(from_attributes=True) class NotificationListResponse(BaseModel): notifications: list[NotificationResponse] unread_count: int total: int class MarkReadRequest(BaseModel): model_config = ConfigDict(extra="forbid") notification_ids: list[int] = Field(..., min_length=1, max_length=100)