from uuid import UUID
from datetime import datetime

from pydantic import BaseModel, Field

from itd.enums import NotificationType, NotificationTargetType
from itd.models.user import UserNotification

class Notification(BaseModel):
    id: UUID
    type: NotificationType

    target_type: NotificationTargetType | None = Field(None, alias='targetType') # none - follows, other - NotificationTragetType.POST
    target_id: UUID | None = Field(None, alias='targetId') # none - follows

    preview: str | None = None # follow - none, comment/reply - content, repost - original post content, like - post content, wall_post - wall post content

    read: bool = False
    read_at: datetime | None = Field(None, alias='readAt')
    created_at: datetime = Field(alias='createdAt')

    actor: UserNotification