From 993f064633bb9d687f3d6f7d932f671a66637517 Mon Sep 17 00:00:00 2001 From: Untone Date: Sun, 26 Nov 2023 13:51:06 +0300 Subject: [PATCH] fixing-straw --- CHANGELOG.txt | 8 ++++++++ README.md | 4 ++-- main.py | 13 ++++++++++++- pyproject.toml | 6 +++--- resolvers/schema.py | 8 +++++--- 5 files changed, 30 insertions(+), 9 deletions(-) create mode 100644 CHANGELOG.txt diff --git a/CHANGELOG.txt b/CHANGELOG.txt new file mode 100644 index 0000000..0fffef0 --- /dev/null +++ b/CHANGELOG.txt @@ -0,0 +1,8 @@ +[0.0.2] +- dx: migrated to strawberry +- dx: added sentry integration +- dx: added mypy plugins +- dx: pyright settings + +[0.0.1] +- dummy ariadne version diff --git a/README.md b/README.md index 5178230..42a7bc3 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Затем ```shell -poetry install poetry env use 3.12 -poetry run python server.py +poetry install +poetry run strawberry server main ``` diff --git a/main.py b/main.py index 0484b09..83419b3 100644 --- a/main.py +++ b/main.py @@ -2,6 +2,7 @@ import os import asyncio from os.path import exists +from sentry_sdk.integrations.strawberry import StrawberryIntegration from strawberry.asgi import GraphQL from starlette.applications import Starlette @@ -27,7 +28,17 @@ async def start_up(): try: import sentry_sdk - sentry_sdk.init(SENTRY_DSN) + sentry_sdk.init( + SENTRY_DSN, + enable_tracing=True, + integrations=[ + StrawberryIntegration( + # Set async_execution to True if you have + # at least one async resolver + async_execution=True + ), + ], + ) except Exception as e: print("[sentry] init error") print(e) diff --git a/pyproject.toml b/pyproject.toml index ecd567f..d002d6f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "discoursio-notifier" -version = "0.0.1" +version = "0.0.2" description = "notifier server for discours.io" authors = ["discours.io devteam"] @@ -15,7 +15,7 @@ httpx = "^0.25.0" psycopg2-binary = "^2.9.9" redis = {extras = ["hiredis"], version = "^5.0.1"} uvicorn = "^0.24.0.post1" -strawberry-graphql = { extras = ["asgi"], version = "^0.215.1" } +strawberry = {package = "strawberry-graphql", extras = ["asgi", "debug-server"], version = "^0.215.1" } sentry-sdk = "^1.37.1" [tool.poetry.dev-dependencies] @@ -69,4 +69,4 @@ executionEnvironments = [] [tool.mypy] python_version = "3.12" warn_unused_configs = true -plugins = ["mypy_sqlalchemy.plugin"] +plugins = ["mypy_sqlalchemy.plugin", "strawberry.ext.mypy_plugin"] diff --git a/resolvers/schema.py b/resolvers/schema.py index 9e8fa98..6c7095d 100644 --- a/resolvers/schema.py +++ b/resolvers/schema.py @@ -1,3 +1,5 @@ +from typing import List + import strawberry from sqlalchemy import and_ from orm.author import Author @@ -45,10 +47,10 @@ def notification_seen_by_viewer(viewer_id, notification_id, session): @strawberry.type class Query: - @login_required @strawberry.field - async def load_notifications(self, info, limit: int = 50, offset: int = 0) -> dict: - """непрочитанные уведомления""" + @login_required + async def load_notifications(self, info, limit: int = 50, offset: int = 0) -> dict[str, List[Notification] | int]: + """загружаем уведомления""" user_id = info.context["user_id"] with local_session() as session: