diff --git a/resolvers/profile.py b/resolvers/profile.py index 6abca175..c5d51cf1 100644 --- a/resolvers/profile.py +++ b/resolvers/profile.py @@ -2,6 +2,7 @@ from orm import User, UserRole, Role, UserRating from orm.user import AuthorSubscription, UserStorage from orm.comment import Comment from orm.base import local_session +from orm.topic import Topic, TopicSubscription from resolvers.base import mutation, query, subscription from auth.authenticate import login_required @@ -81,6 +82,14 @@ async def user_subscribers(_, info, slug): where(AuthorSubscription.author == slug) return users +@query.field("userSubscribedTopics") +async def user_subscribed_topics(_, info, slug): + with local_session() as session: + topics = session.query(Topic).\ + join(TopicSubscription).\ + where(TopicSubscription.subscriber == slug) + return topics + @mutation.field("rateUser") @login_required async def rate_user(_, info, slug, value): diff --git a/schema.graphql b/schema.graphql index b11d01fa..a643ccc0 100644 --- a/schema.graphql +++ b/schema.graphql @@ -170,6 +170,7 @@ type Query { userComments(slug: String!, page: Int!, size: Int!): [Comment]! userSubscriptions(slug: String!): [User]! userSubscribers(slug: String!): [User]! + userSubscribedTopics(slug: String!): [Topic]! # messages enterChat(chatId: String!, size: Int = 50): EnterChatResult!