reactions-for-slugs

This commit is contained in:
2022-09-01 13:16:22 +03:00
parent 1f40e55f83
commit fe13488584
3 changed files with 22 additions and 7 deletions

View File

@@ -50,9 +50,9 @@ def reactions_unfollow(user, slug):
@login_required
async def create_reaction(_, info, inp):
user = info.context["request"].user
# TODO: filter allowed reaction kinds
reaction = Reaction.create(**inp)
ReactedStorage.increment(reaction.shout, reaction.replyTo)
try:
@@ -116,6 +116,19 @@ async def get_shout_reactions(_, info, slug, page, size):
r.createdBy = await UserStorage.get_user(r.createdBy or 'discours')
return reactions
@query.field("reactionsForSlugs")
async def get_shout_reactions(_, info, slugs, page, size):
offset = page * size
reactions = []
with local_session() as session:
for slug in slugs:
reactions += session.query(Reaction).\
filter(Reaction.shout == slug).\
limit(size).offset(offset).all()
for r in reactions:
r.createdBy = await UserStorage.get_user(r.createdBy or 'discours')
return reactions
@query.field("reactionsAll")
async def get_all_reactions(_, info, page=1, size=10):
@@ -140,4 +153,4 @@ async def get_reactions_by_author(_, info, slug, page=1, size=50):
reactions = session.query(Reaction).filter(Reaction.createdBy == slug).limit(size).offset(offset)
for r in reactions:
r.createdBy = await UserStorage.get_user(r.createdBy or 'discours')
return reactions
return reactions