From d8e935176dfd380a614a2636d02a07f272716477 Mon Sep 17 00:00:00 2001 From: ilya-bkv Date: Sat, 22 Apr 2023 11:22:24 +0300 Subject: [PATCH] Subscriptions fix by @stepn_v --- resolvers/zine/profile.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/resolvers/zine/profile.py b/resolvers/zine/profile.py index ddcafc33..98041b2c 100644 --- a/resolvers/zine/profile.py +++ b/resolvers/zine/profile.py @@ -101,28 +101,43 @@ async def followed_reactions(user_id): Reaction.createdAt > user.lastSeen ).all() - +# dufok mod (^*^') : @query.field("userFollowedTopics") -@login_required -async def get_followed_topics(_, info, user_id) -> List[Topic]: +async def get_followed_topics(_, info, slug) -> List[Topic]: + user_id_query = select(User.id).where(User.slug == slug) + with local_session() as session: + user_id = session.execute(user_id_query).scalar() + + if user_id is None: + raise ValueError("User not found") + return await followed_topics(user_id) async def followed_topics(user_id): return followed_by_user(user_id) - +# dufok mod (^*^') : @query.field("userFollowedAuthors") -async def get_followed_authors(_, _info, user_id: int) -> List[User]: +async def get_followed_authors(_, _info, slug) -> List[User]: + # 1. First, we need to get the user_id for the given slug + user_id_query = select(User.id).where(User.slug == slug) + with local_session() as session: + user_id = session.execute(user_id_query).scalar() + + if user_id is None: + raise ValueError("User not found") + return await followed_authors(user_id) - +# 2. Now, we can use the user_id to get the followed authors async def followed_authors(user_id): q = select(User) q = add_author_stat_columns(q) q = q.join(AuthorFollower, AuthorFollower.author == User.id).where( AuthorFollower.follower == user_id ) + # 3. Pass the query to the get_authors_from_query function and return the results return get_authors_from_query(q)