import uuid
from datetime import datetime
from typing import Optional, List
from pydantic import BaseModel


class NotificationOut(BaseModel):
    notification_id: uuid.UUID
    recipient_type: str
    user_id: Optional[uuid.UUID] = None
    dealer_id: Optional[str] = None
    category: str
    event_type: str
    title: str
    message: str
    reference_type: Optional[str] = None
    reference_id: Optional[str] = None
    action_url: Optional[str] = None
    is_read: bool
    read_at: Optional[datetime] = None
    created_at: datetime

    class Config:
        from_attributes = True


class NotificationListResponse(BaseModel):
    notifications: List[NotificationOut]
    unread_count: int
