2023-10-05 19:59:50 +00:00
|
|
|
from services.redis import redis
|
|
|
|
import json
|
|
|
|
|
|
|
|
|
|
|
|
async def get_unread_counter(chat_id: str, author_id: int):
|
|
|
|
try:
|
|
|
|
unread = await redis.execute(
|
2023-10-11 19:59:05 +00:00
|
|
|
"LLEN", f"chats/{chat_id}/unread/{author_id}"
|
2023-10-05 19:59:50 +00:00
|
|
|
)
|
2023-10-13 12:20:06 +00:00
|
|
|
return unread or 0
|
2023-10-05 19:59:50 +00:00
|
|
|
except Exception:
|
|
|
|
return 0
|
|
|
|
|
|
|
|
|
|
|
|
async def get_total_unread_counter(author_id: int):
|
2023-10-11 12:41:04 +00:00
|
|
|
print(f"[services.unread] get_total_unread_counter({author_id})")
|
2023-10-13 12:10:56 +00:00
|
|
|
chats = await redis.execute("SMEMBERS", f"chats_by_author/{author_id}")
|
2023-10-05 19:59:50 +00:00
|
|
|
unread = 0
|
2023-10-13 12:10:56 +00:00
|
|
|
for chat_id in list(chats):
|
2023-10-13 12:13:01 +00:00
|
|
|
n = await get_unread_counter(chat_id, author_id)
|
2023-10-13 12:10:56 +00:00
|
|
|
unread += n
|
2023-10-05 19:59:50 +00:00
|
|
|
return unread
|