trig
All checks were successful
deploy / deploy (push) Successful in 1m20s

This commit is contained in:
Untone 2023-12-24 16:23:06 +03:00
parent d01e1f2313
commit 90923c40e6

View File

@ -2,7 +2,7 @@ from sqlalchemy import and_
from orm.notification import NotificationSeen
from services.db import local_session
from resolvers.model import Notification, NotificationSeenResult, NotificationReaction
from typing import List
import strawberry
import logging
import json
@ -61,15 +61,35 @@ class Mutation:
[shout_id, reply_to_id] = thread.split("::")
with local_session() as session:
# TODO: handle new follower and new shout notifications
new_reaction_notifications = session.query(Notification).filter(Notification.action == "create", Notification.entity == "reaction", Notification.created_at > after).all()
removed_reaction_notifications = session.query(Notification).filter(Notification.action == "delete", Notification.entity == "reaction", Notification.created_at > after).all()
new_reaction_notifications = (
session.query(Notification)
.filter(
Notification.action == "create",
Notification.entity == "reaction",
Notification.created_at > after,
)
.all()
)
removed_reaction_notifications = (
session.query(Notification)
.filter(
Notification.action == "delete",
Notification.entity == "reaction",
Notification.created_at > after,
)
.all()
)
exclude = set([])
for nr in removed_reaction_notifications:
reaction: NotificationReaction = json.loads(nr.payload)
exclude.add(reaction.id)
for n in new_reaction_notifications:
reaction: NotificationReaction = json.loads(n.payload)
if reaction.id not in exclude and str(reaction.shout) == str(shout_id) and str(reaction.reply_to) == str(reply_to_id):
if (
reaction.id not in exclude
and str(reaction.shout) == str(shout_id)
and str(reaction.reply_to) == str(reply_to_id)
):
try:
ns = NotificationSeen(notification=n.id, viewer=author_id)
session.add(ns)