From 8856bfc97851de10352e8bf9cb7c9dec53846d3f Mon Sep 17 00:00:00 2001 From: Untone Date: Sat, 23 Dec 2023 22:00:22 +0300 Subject: [PATCH] resolvers-fix --- main.py | 1 - orm/shout.py | 4 ++-- resolvers/reader.py | 22 ++++++++++++++-------- schemas/core.graphql | 4 ++-- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/main.py b/main.py index 73c53d44..0fbe5329 100644 --- a/main.py +++ b/main.py @@ -16,7 +16,6 @@ from resolvers.webhook import WebhookEndpoint from services.rediscache import redis from services.schema import resolvers from settings import DEV_SERVER_PID_FILE_NAME, MODE, SENTRY_DSN -import asyncio from services.viewed import ViewedStorage diff --git a/orm/shout.py b/orm/shout.py index a71281e3..024be792 100644 --- a/orm/shout.py +++ b/orm/shout.py @@ -72,9 +72,9 @@ class Shout(Base): cover_caption = Column(String, nullable=True, comment="Cover image alt caption") lead = Column(String, nullable=True) description = Column(String, nullable=True) - title = Column(String, nullable=True) + title = Column(String, nullable=False) subtitle = Column(String, nullable=True) - layout = Column(String, nullable=True) + layout = Column(String, nullable=False, default="article") media = Column(JSON, nullable=True) authors = relationship(lambda: Author, secondary="shout_author") diff --git a/resolvers/reader.py b/resolvers/reader.py index f8b319ef..ca4317e2 100644 --- a/resolvers/reader.py +++ b/resolvers/reader.py @@ -14,6 +14,7 @@ from services.search import SearchService from services.viewed import ViewedStorage from resolvers.topic import get_random_topic + def add_stat_columns(q): aliased_reaction = aliased(Reaction) @@ -324,15 +325,21 @@ async def load_shouts_unrated(_, info, limit: int = 50, offset: int = 0): q = add_stat_columns(q) q = q.group_by(Shout.id).order_by(func.random()).limit(limit).offset(offset) - - return get_shouts_from_query(q, info.context.get("user_id")) + user_id = info.context.get("user_id") + if user_id: + with local_session() as session: + author = session.query(Author).filter(Author.user == user_id).first() + if author: + return get_shouts_from_query(q, author.id) + else: + return get_shouts_from_query(q) -def get_shouts_from_query(q, user_id=None): +def get_shouts_from_query(q, author_id=None): shouts = [] with local_session() as session: for [shout, reacted_stat, commented_stat, rating_stat, last_comment] in session.execute( - q, {"user_id": user_id} + q, {"author_id": author_id} ).unique(): shouts.append(shout) shout.stat = { @@ -407,8 +414,9 @@ async def load_shouts_random_top(_, _info, params): return get_shouts_from_query(q) + @query.field("load_shouts_random_topic") -async def load_shouts_random_topic(_, info, limit): +async def load_shouts_random_topic(_, info, limit: int = 10): topic = get_random_topic() shouts = [] if topic: @@ -419,9 +427,7 @@ async def load_shouts_random_topic(_, info, limit): joinedload(Shout.topics), ) .join(ShoutTopic, and_(Shout.id == ShoutTopic.shout, ShoutTopic.topic == topic.id)) - .where( - and_(Shout.deleted_at.is_(None), Shout.layout.is_not(None), Shout.visibility == "public") - ) + .filter(and_(Shout.deleted_at.is_(None), Shout.visibility == "public")) ) q = add_stat_columns(q) diff --git a/schemas/core.graphql b/schemas/core.graphql index 9c89093c..0fd9acef 100644 --- a/schemas/core.graphql +++ b/schemas/core.graphql @@ -121,13 +121,13 @@ type Shout { deleted_by: Author authors: [Author] communities: [Community] - title: String + title: String! subtitle: String lang: String community: String cover: String cover_caption: String - layout: String + layout: String! version_of: String visibility: ShoutVisibility updated_at: Int