diff --git a/resolvers/listener.py b/resolvers/listener.py index 3eb62c1..803785a 100644 --- a/resolvers/listener.py +++ b/resolvers/listener.py @@ -1,12 +1,11 @@ import json -from typing import List, Dict from orm.notification import Notification from services.db import local_session from services.rediscache import redis -def handle_reaction(notification: Dict[str, str | int | List[int]]): +def handle_reaction(notification: dict[str, str | int]): """создаеёт новое хранимое уведомление""" try: with local_session() as session: diff --git a/resolvers/schema.py b/resolvers/schema.py index 6c7095d..3697c02 100644 --- a/resolvers/schema.py +++ b/resolvers/schema.py @@ -35,6 +35,12 @@ class NotificationSeenResult: error: str +@strawberry.type +class NotificationsResult: + notifications: List[Notification] + unread: int + + def notification_seen_by_viewer(viewer_id, notification_id, session): seen = ( session.query(NotificationSeen) @@ -49,7 +55,7 @@ def notification_seen_by_viewer(viewer_id, notification_id, session): class Query: @strawberry.field @login_required - async def load_notifications(self, info, limit: int = 50, offset: int = 0) -> dict[str, List[Notification] | int]: + async def load_notifications(self, info, limit: int = 50, offset: int = 0) -> NotificationsResult: """загружаем уведомления""" user_id = info.context["user_id"] @@ -72,7 +78,7 @@ class Query: unread = sum(1 for n in nslist if not n.seen_by_viewer) - return {"notifications": nslist, "unread": unread} + return NotificationsResult(notifications=nslist, unread=unread) @strawberry.type @@ -90,7 +96,8 @@ class Mutation: except Exception as e: session.rollback() print(f"[mark_notification_as_read] error: {str(e)}") - return {} + return NotificationSeenResult(error="cant mark as read") + return NotificationSeenResult() @strawberry.mutation @login_required @@ -104,7 +111,8 @@ class Mutation: except Exception as e: session.rollback() print(f"[mark_all_notifications_as_read] error: {str(e)}") - return {} + return NotificationSeenResult(error="cant mark as read") + return NotificationSeenResult() schema = strawberry.Schema(query=Query, mutation=Mutation)