From 7106145255eafb8fa6427149b6cbf0c6b8ea0665 Mon Sep 17 00:00:00 2001 From: transcental Date: Mon, 6 Oct 2025 13:50:16 +0100 Subject: [PATCH] user stats api --- nephthys/api/user.py | 18 ++++++++++++++++++ nephthys/utils/starlette.py | 2 ++ 2 files changed, 20 insertions(+) create mode 100644 nephthys/api/user.py diff --git a/nephthys/api/user.py b/nephthys/api/user.py new file mode 100644 index 0000000..eaaa12e --- /dev/null +++ b/nephthys/api/user.py @@ -0,0 +1,18 @@ +from starlette.requests import Request +from starlette.responses import JSONResponse + +from nephthys.utils.env import env + + +async def user_stats(req: Request): + user_id = req.query_params["id"] + user = await env.db.user.find_unique(where={"slackId": user_id}) + if not user: + return JSONResponse({"error": "user_not_found"}, status_code=404) + + closed_tickets = await env.db.ticket.count(where={"closedById": user.id}) + opened_tickets = await env.db.ticket.count(where={"openedById": user.id}) + + return JSONResponse( + {"tickets_opened": opened_tickets, "tickets_closed": closed_tickets} + ) diff --git a/nephthys/utils/starlette.py b/nephthys/utils/starlette.py index 5cbc8f2..77ed447 100644 --- a/nephthys/utils/starlette.py +++ b/nephthys/utils/starlette.py @@ -7,6 +7,7 @@ from starlette.routing import Route from nephthys.__main__ import main from nephthys.api.stats import stats +from nephthys.api.user import user_stats from nephthys.utils.env import env from nephthys.utils.slack import app as slack_app @@ -45,6 +46,7 @@ app = Starlette( Route(path="/", endpoint=root, methods=["GET"]), Route(path="/slack/events", endpoint=endpoint, methods=["POST"]), Route(path="/api/stats", endpoint=stats, methods=["GET"]), + Route(path="/api/user", endpoint=user_stats, methods=["GET"]), Route(path="/health", endpoint=health, methods=["GET"]), ], lifespan=main,