From 6919b2603cbee9679c2bd1a267733758d8eb97ce Mon Sep 17 00:00:00 2001 From: knst-kotov Date: Fri, 29 Apr 2022 10:51:51 +0300 Subject: [PATCH] return subscribed topics as slugs --- resolvers/profile.py | 14 ++++++++------ schema.graphql | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/resolvers/profile.py b/resolvers/profile.py index 407996e3..5dc73fb1 100644 --- a/resolvers/profile.py +++ b/resolvers/profile.py @@ -12,12 +12,14 @@ from sqlalchemy import func, and_, desc from sqlalchemy.orm import selectinload import asyncio -def _get_user_subscribed_topics(slug): +def _get_user_subscribed_topic_slugs(slug): with local_session() as session: - topics = session.query(Topic).\ + rows = session.query(Topic.slug).\ join(TopicSubscription).\ - where(TopicSubscription.subscriber == slug) - return topics + where(TopicSubscription.subscriber == slug).\ + all() + slugs = [row.slug for row in rows] + return slugs @query.field("getCurrentUser") @login_required @@ -27,7 +29,7 @@ async def get_current_user(_, info): return { "user": user, "totalUnreadMessages": total_unread_messages, - "userSubscribedTopics": _get_user_subscribed_topics(user.slug) + "userSubscribedTopics": _get_user_subscribed_topic_slugs(user.slug) } @query.field("getUsersBySlugs") @@ -98,7 +100,7 @@ async def user_subscribers(_, info, slug): @query.field("userSubscribedTopics") async def user_subscribed_topics(_, info, slug): - return _get_user_subscribed_topics(slug) + return _get_user_subscribed_topic_slugs(slug) @mutation.field("rateUser") @login_required diff --git a/schema.graphql b/schema.graphql index 77d19d66..12e692b4 100644 --- a/schema.graphql +++ b/schema.graphql @@ -16,7 +16,7 @@ type UserResult { error: String user: User totalUnreadMessages: Int - userSubscribedTopics: [Topic]! + userSubscribedTopics: [String]! } input ShoutInput { @@ -138,7 +138,7 @@ type Query { userComments(slug: String!, page: Int!, size: Int!): [Comment]! userSubscriptions(slug: String!): [User]! userSubscribers(slug: String!): [User]! - userSubscribedTopics(slug: String!): [Topic]! + userSubscribedTopics(slug: String!): [String]! shoutsCommentedByUser(slug: String!, page: Int!, size: Int!): [Shout]! shoutsRatedByUser(slug: String!, page: Int!, size: Int!): [Shout]!