diff --git a/resolvers/follower.py b/resolvers/follower.py index a3f72c9e..126b3540 100644 --- a/resolvers/follower.py +++ b/resolvers/follower.py @@ -3,6 +3,7 @@ from typing import List import logging from sqlalchemy import select +from sqlalchemy.orm import aliased from orm.author import Author, AuthorFollower from orm.community import Community @@ -103,12 +104,13 @@ async def get_my_followed(_, info): with local_session() as session: author = session.query(Author).filter(Author.user == user_id).first() if author: - authors_query = ( - select(Author) - .join(AuthorFollower, AuthorFollower.follower == Author.id) - .filter(AuthorFollower.follower == author.id) - ) + aliased_authors = aliased(Author) + authors_query = ( + session.query(aliased_authors) + .join(AuthorFollower, AuthorFollower.follower == author.id) + .filter(AuthorFollower.author == aliased_authors.id) + ) topics_query = select(Topic).join(TopicFollower, TopicFollower.follower == Author.id) for [author] in session.execute(authors_query): diff --git a/resolvers/topic.py b/resolvers/topic.py index d659e9d9..3d46077c 100644 --- a/resolvers/topic.py +++ b/resolvers/topic.py @@ -13,10 +13,9 @@ async def followed_topics(follower_id): q = select(Author) q = add_topic_stat_columns(q) q = q.join(TopicFollower, TopicFollower.author == Author.id).where(TopicFollower.follower == follower_id) - # Pass the query to the get_authors_from_query function and return the results + # Pass the query to the get_topics_from_query function and return the results return get_topics_from_query(q) - def add_topic_stat_columns(q): aliased_shout_author = aliased(ShoutAuthor) aliased_topic_follower = aliased(TopicFollower)