From 57d9072ba143d4156a2e9b7b1f57d480ff888eef Mon Sep 17 00:00:00 2001 From: knst-kotov Date: Wed, 16 Feb 2022 13:44:26 +0300 Subject: [PATCH] add userComments --- resolvers/profile.py | 21 +++++++++++++++++++-- schema.graphql | 1 + 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/resolvers/profile.py b/resolvers/profile.py index feb31573..978fe32f 100644 --- a/resolvers/profile.py +++ b/resolvers/profile.py @@ -1,10 +1,11 @@ from orm import User, UserRole, Role, UserRating -from orm.user import AuthorSubscription +from orm.user import AuthorSubscription, UserStorage +from orm.comment import Comment from orm.base import local_session from resolvers.base import mutation, query, subscription from auth.authenticate import login_required -from sqlalchemy import func, and_ +from sqlalchemy import func, and_, desc from sqlalchemy.orm import selectinload import asyncio @@ -48,6 +49,22 @@ async def update_profile(_, info, profile): return {} +@query.field("userComments") +async def user_comments(_, info, slug, page, size): + user = await UserStorage.get_user_by_slug(slug) + if not user: + return + + page = page - 1 + with local_session() as session: + comments = session.query(Comment).\ + filter(Comment.author == user.id).\ + order_by(desc(Comment.createdAt)).\ + limit(size).\ + offset(page * size) + + return comments + @mutation.field("authorSubscribe") @login_required async def author_subscribe(_, info, slug): diff --git a/schema.graphql b/schema.graphql index 30c25521..7a8fa441 100644 --- a/schema.graphql +++ b/schema.graphql @@ -168,6 +168,7 @@ type Query { getUsersBySlugs(slugs: [String]!): [User]! # rateUser(shout: Int): Int! getUserRoles(slug: String!): [Role]! + userComments(slug: String!, page: Int!, size: Int!): [Comment]! # messages enterChat(chatId: String!, size: Int = 50): EnterChatResult!