diff --git a/itd/models/event.py b/itd/models/event.py new file mode 100644 index 0000000..775bd8c --- /dev/null +++ b/itd/models/event.py @@ -0,0 +1,33 @@ +from uuid import UUID +from datetime import datetime +from typing import Literal + +from pydantic import BaseModel, Field + +from itd.enums import NotificationType, NotificationTargetType +from itd.models.user import UserNotification + + +class StreamConnect(BaseModel): + """Событие подключения к SSE потоку""" + user_id: UUID = Field(alias='userId') + timestamp: int + + +class StreamNotification(BaseModel): + """Уведомление из SSE потока""" + id: UUID + type: NotificationType + + target_type: NotificationTargetType | None = Field(None, alias='targetType') + target_id: UUID | None = Field(None, alias='targetId') + + preview: str | None = None + read_at: datetime | None = Field(None, alias='readAt') + created_at: datetime = Field(alias='createdAt') + + user_id: UUID = Field(alias='userId') + actor: UserNotification + + read: bool = False + sound: bool = True