From 044c21f9567ee4de76898edebe2f221b9756dc84 Mon Sep 17 00:00:00 2001 From: Tony Rewin Date: Thu, 5 Oct 2023 00:43:07 +0300 Subject: [PATCH] resolvers-import-fix --- main.py | 3 ++- resolvers/__init__.py | 60 +++++++++++++++++-------------------------- resolvers/chats.py | 5 +--- resolvers/load.py | 5 +--- resolvers/messages.py | 5 +--- resolvers/search.py | 4 +-- services/schema.py | 13 ++++++++++ 7 files changed, 42 insertions(+), 53 deletions(-) create mode 100644 services/schema.py diff --git a/main.py b/main.py index d210403..4195817 100644 --- a/main.py +++ b/main.py @@ -1,12 +1,13 @@ import os +from importlib import import_module from os.path import exists from ariadne import load_schema_from_path, make_executable_schema from ariadne.asgi import GraphQL from starlette.applications import Starlette from services.redis import redis -from resolvers import resolvers from settings import DEV_SERVER_PID_FILE_NAME, SENTRY_DSN, MODE +import_module("resolvers") schema = make_executable_schema(load_schema_from_path("inbox.graphql"), resolvers) # type: ignore diff --git a/resolvers/__init__.py b/resolvers/__init__.py index 53e685f..51222e6 100644 --- a/resolvers/__init__.py +++ b/resolvers/__init__.py @@ -1,39 +1,25 @@ -from .chats import chats_resolvers -from .load import load_resolvers -from .messages import messages_resolvers -from .search import search_resolvers -from .unread import unread_resolvers -import json -from ariadne import ScalarType +from resolvers.chats import create_chat, delete_chat, update_chat +from resolvers.messages import ( + create_message, + delete_message, + update_message, + mark_as_read, +) +from resolvers.load import load_chats, load_messages_by, load_recipients +from resolvers.search import search_recipients -datetime_scalar = ScalarType("DateTime") - - -@datetime_scalar.serializer -def serialize_datetime(value): - return value.isoformat() - - -dict_scalar = ScalarType("Dict") - - -@dict_scalar.serializer -def serialize_dict(value): - return json.dumps(value) - - -@dict_scalar.value_parser -def parse_dict_value(value): - return json.loads(value) - - -resolvers = { - **chats_resolvers, - **load_resolvers, - **messages_resolvers, - **search_resolvers, - **unread_resolvers, - "DateTime": datetime_scalar, - "Dict": dict_scalar, -} +__all__ = [ + # inbox + "load_chats", + "load_messages_by", + "create_chat", + "delete_chat", + "update_chat", + "create_message", + "delete_message", + "update_message", + "mark_as_read", + "load_recipients", + "search_recipients", +] diff --git a/resolvers/chats.py b/resolvers/chats.py index 727b129..49fe719 100644 --- a/resolvers/chats.py +++ b/resolvers/chats.py @@ -4,10 +4,7 @@ from datetime import datetime, timezone from services.auth import login_required from services.redis import redis - -from ariadne import MutationType - -mutation = MutationType() +from services.schema import mutation @mutation.field("updateChat") diff --git a/resolvers/load.py b/resolvers/load.py index b99c460..315dba5 100644 --- a/resolvers/load.py +++ b/resolvers/load.py @@ -3,13 +3,10 @@ import json from services.core import get_author from services.redis import redis from services.auth import login_required +from services.schema import query from .chats import create_chat from .unread import get_unread_counter -from ariadne import QueryType - -query = QueryType() - # NOTE: not an API handler async def load_messages(chat_id: str, limit: int = 5, offset: int = 0, ids=[]): diff --git a/resolvers/messages.py b/resolvers/messages.py index ef10fa8..533abbf 100644 --- a/resolvers/messages.py +++ b/resolvers/messages.py @@ -3,10 +3,7 @@ from datetime import datetime, timezone from services.auth import login_required from services.presence import notify_message from services.redis import redis - -from ariadne import MutationType - -mutation = MutationType() +from services.schema import mutation @mutation.field("createMessage") diff --git a/resolvers/search.py b/resolvers/search.py index 05c735d..b3c563a 100644 --- a/resolvers/search.py +++ b/resolvers/search.py @@ -4,9 +4,7 @@ from services.auth import login_required from services.core import get_network from services.redis import redis from resolvers.load import load_messages -from ariadne import QueryType - -query = QueryType() +from services.schema import query @query.field("searchRecipients") diff --git a/services/schema.py b/services/schema.py new file mode 100644 index 0000000..fe3cbd2 --- /dev/null +++ b/services/schema.py @@ -0,0 +1,13 @@ +from ariadne import ScalarType, QueryType, MutationType + +query = QueryType() +mutation = MutationType() +datetime_scalar = ScalarType("DateTime") + + +@datetime_scalar.serializer +def serialize_datetime(value): + return value.isoformat() + + +scalars = {"DateTime": datetime_scalar}