diff --git a/resolvers/editor.py b/resolvers/editor.py index 18774af7..252d498d 100644 --- a/resolvers/editor.py +++ b/resolvers/editor.py @@ -464,6 +464,11 @@ async def update_shout(_, info, shout_id: int, shout_input=None, publish=False): # Используем уже обновленный объект shout_by_id вместо нового запроса shout_dict = shout_by_id.dict() # dict() теперь включает все связи logger.info(f"Final shout data with relations: {shout_dict}") + # После успешного сохранения + logger.info(f"Checking saved shout: {shout_dict}") + logger.info(f"published_at: {shout_dict.get('published_at')}") + logger.info(f"deleted_at: {shout_dict.get('deleted_at')}") + logger.info(f"topics: {shout_dict.get('topics')}") return {"shout": shout_dict, "error": None} else: logger.warning(f"Access denied: author #{author_id} cannot edit shout#{shout_id}") diff --git a/resolvers/feed.py b/resolvers/feed.py index 325554bc..831411f8 100644 --- a/resolvers/feed.py +++ b/resolvers/feed.py @@ -173,3 +173,21 @@ async def load_shouts_with_topic(_, info, slug: str, options) -> List[Shout]: except Exception as error: logger.debug(error) return [] + + +def apply_filters(q, filters): + """ + Применяет фильтры к запросу + """ + logger.info(f"Applying filters: {filters}") + + if filters.get("published"): + q = q.filter(Shout.published_at.is_not(None)) + logger.info("Added published filter") + + if filters.get("topic"): + topic_slug = filters["topic"] + q = q.join(ShoutTopic).join(Topic).filter(Topic.slug == topic_slug) + logger.info(f"Added topic filter: {topic_slug}") + + return q diff --git a/resolvers/reader.py b/resolvers/reader.py index a80870b2..d68ea503 100644 --- a/resolvers/reader.py +++ b/resolvers/reader.py @@ -63,12 +63,16 @@ def query_with_stat(info): Добавляет подзапрос статистики """ - q = ( - select(Shout) - .where(and_(Shout.published_at.is_not(None), Shout.deleted_at.is_(None))) - .join(Author, Author.id == Shout.created_by) + q = select(Shout).filter( + and_( + Shout.published_at.is_not(None), # Проверяем published_at + Shout.deleted_at.is_(None), # Проверяем deleted_at + ) ) + # Добавим логирование + logger.info(f"Base query filters: published_at IS NOT NULL AND deleted_at IS NULL") + # Главный автор main_author = aliased(Author) q = q.join(main_author, main_author.id == Shout.created_by) @@ -143,6 +147,9 @@ def query_with_stat(info): q = q.outerjoin(topics_subquery, topics_subquery.c.shout == Shout.id) q = q.add_columns(topics_subquery.c.topics) + # Добавим логирование + logger.info("Added topics join to query") + if has_field(info, "stat"): stats_subquery = ( select(