return subscribed topics as slugs

This commit is contained in:
knst-kotov 2022-04-29 10:51:51 +03:00
parent 9fab68fc29
commit 6919b2603c
2 changed files with 10 additions and 8 deletions

View File

@ -12,12 +12,14 @@ from sqlalchemy import func, and_, desc
from sqlalchemy.orm import selectinload from sqlalchemy.orm import selectinload
import asyncio import asyncio
def _get_user_subscribed_topics(slug): def _get_user_subscribed_topic_slugs(slug):
with local_session() as session: with local_session() as session:
topics = session.query(Topic).\ rows = session.query(Topic.slug).\
join(TopicSubscription).\ join(TopicSubscription).\
where(TopicSubscription.subscriber == slug) where(TopicSubscription.subscriber == slug).\
return topics all()
slugs = [row.slug for row in rows]
return slugs
@query.field("getCurrentUser") @query.field("getCurrentUser")
@login_required @login_required
@ -27,7 +29,7 @@ async def get_current_user(_, info):
return { return {
"user": user, "user": user,
"totalUnreadMessages": total_unread_messages, "totalUnreadMessages": total_unread_messages,
"userSubscribedTopics": _get_user_subscribed_topics(user.slug) "userSubscribedTopics": _get_user_subscribed_topic_slugs(user.slug)
} }
@query.field("getUsersBySlugs") @query.field("getUsersBySlugs")
@ -98,7 +100,7 @@ async def user_subscribers(_, info, slug):
@query.field("userSubscribedTopics") @query.field("userSubscribedTopics")
async def user_subscribed_topics(_, info, slug): async def user_subscribed_topics(_, info, slug):
return _get_user_subscribed_topics(slug) return _get_user_subscribed_topic_slugs(slug)
@mutation.field("rateUser") @mutation.field("rateUser")
@login_required @login_required

View File

@ -16,7 +16,7 @@ type UserResult {
error: String error: String
user: User user: User
totalUnreadMessages: Int totalUnreadMessages: Int
userSubscribedTopics: [Topic]! userSubscribedTopics: [String]!
} }
input ShoutInput { input ShoutInput {
@ -138,7 +138,7 @@ type Query {
userComments(slug: String!, page: Int!, size: Int!): [Comment]! userComments(slug: String!, page: Int!, size: Int!): [Comment]!
userSubscriptions(slug: String!): [User]! userSubscriptions(slug: String!): [User]!
userSubscribers(slug: String!): [User]! userSubscribers(slug: String!): [User]!
userSubscribedTopics(slug: String!): [Topic]! userSubscribedTopics(slug: String!): [String]!
shoutsCommentedByUser(slug: String!, page: Int!, size: Int!): [Shout]! shoutsCommentedByUser(slug: String!, page: Int!, size: Int!): [Shout]!
shoutsRatedByUser(slug: String!, page: Int!, size: Int!): [Shout]! shoutsRatedByUser(slug: String!, page: Int!, size: Int!): [Shout]!