This commit is contained in:
48
utils/common_result.py
Normal file
48
utils/common_result.py
Normal file
@@ -0,0 +1,48 @@
|
||||
from dataclasses import dataclass
|
||||
from typing import Any
|
||||
|
||||
from graphql.error import GraphQLError
|
||||
|
||||
# Импорт Author отложен для избежания циклических импортов
|
||||
from orm.community import Community
|
||||
from orm.draft import Draft
|
||||
from orm.reaction import Reaction
|
||||
from orm.shout import Shout
|
||||
from orm.topic import Topic
|
||||
from utils.logger import root_logger as logger
|
||||
|
||||
|
||||
def handle_error(operation: str, error: Exception) -> GraphQLError:
|
||||
"""Обрабатывает ошибки в резолверах"""
|
||||
logger.error(f"Ошибка при {operation}: {error}")
|
||||
return GraphQLError(f"Не удалось {operation}: {error}")
|
||||
|
||||
|
||||
@dataclass
|
||||
class CommonResult:
|
||||
"""Общий результат для GraphQL запросов"""
|
||||
|
||||
error: str | None = None
|
||||
drafts: list[Draft] | None = None # Draft objects
|
||||
draft: Draft | None = None # Draft object
|
||||
slugs: list[str] | None = None
|
||||
shout: Shout | None = None
|
||||
shouts: list[Shout] | None = None
|
||||
author: Any | None = None # Author type resolved at runtime
|
||||
authors: list[Any] | None = None # Author type resolved at runtime
|
||||
reaction: Reaction | None = None
|
||||
reactions: list[Reaction] | None = None
|
||||
topic: Topic | None = None
|
||||
topics: list[Topic] | None = None
|
||||
community: Community | None = None
|
||||
communities: list[Community] | None = None
|
||||
|
||||
|
||||
@dataclass
|
||||
class AuthorFollowsResult:
|
||||
"""Результат для get_author_follows запроса"""
|
||||
|
||||
topics: list[Any] | None = None # Topic dicts
|
||||
authors: list[Any] | None = None # Author dicts
|
||||
communities: list[Any] | None = None # Community dicts
|
||||
error: str | None = None
|
||||
Reference in New Issue
Block a user