inbox/resolvers/unread.py
2023-10-13 19:45:30 +03:00

31 lines
816 B
Python

from services.redis import redis
import json
from services.auth import login_required
async def get_unread_counter(chat_id: str, author_id: int) -> int:
try:
unread = await redis.execute("LLEN", f"chats/{chat_id}/unread/{author_id}")
return unread or 0
except Exception:
return 0
async def get_total_unread_counter(author_id: int) -> int:
chats = await redis.execute("GET", f"chats_by_author/{author_id}")
unread = 0
if chats:
chats = json.loads(chats)
for chat_id in chats:
n = await get_unread_counter(chat_id.decode("utf-8"), author_id)
unread += n
return unread
@login_required
async def resolve_total_unread_counter(_, info):
author_id = info.context["author_id"]
return get_total_unread_counter(author_id)