From cf501f15bd2ef568077f429a2a901ce7c921ee7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A8=D0=B0=D0=B2=D1=80=D0=B8=D0=BD=20=D0=90=D0=BB=D0=B5?= =?UTF-8?q?=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 16 Jul 2026 17:33:04 +0300 Subject: [PATCH] feat(interface): add routing over controllers --- src/app/interface/http/asgi.py | 8 ++----- src/app/interface/http/controller/system.py | 2 +- src/app/interface/http/router.py | 22 +++++++++++++++++++ .../interface/http/controller/auth.py | 2 +- .../interface/http/controller/user.py | 2 +- .../module/identity/interface/http/router.py | 19 ++++++++++++++++ .../interface/http/controller/parcel.py | 2 +- .../module/parcel/interface/http/router.py | 17 ++++++++++++++ 8 files changed, 64 insertions(+), 10 deletions(-) create mode 100644 src/app/interface/http/router.py create mode 100644 src/app/module/identity/interface/http/router.py create mode 100644 src/app/module/parcel/interface/http/router.py diff --git a/src/app/interface/http/asgi.py b/src/app/interface/http/asgi.py index 2a6820e..b0d46db 100644 --- a/src/app/interface/http/asgi.py +++ b/src/app/interface/http/asgi.py @@ -10,15 +10,13 @@ from app.interface.http.controller.system import SystemController from app.interface.http.lifespan import lifespan from app.interface.http.middleware import RequestLoggingMiddleware +from app.interface.http.router import api_v1_router from app.interface.http.util import ( create_exception_handlers, get_all_application_error_mappings, get_all_dependencies, get_all_domain_error_mappings, ) -from app.module.identity.interface.http.controller.auth import AuthController -from app.module.identity.interface.http.controller.user import UserController -from app.module.parcel.interface.http.controller.parcel import ParcelController def create_asgi_application() -> Litestar: @@ -32,9 +30,7 @@ def create_asgi_application() -> Litestar: app = Litestar( route_handlers=[ SystemController, - AuthController, - UserController, - ParcelController, + api_v1_router, ], dependencies=get_all_dependencies(), openapi_config=OpenAPIConfig( diff --git a/src/app/interface/http/controller/system.py b/src/app/interface/http/controller/system.py index 26fa79f..08d5b16 100644 --- a/src/app/interface/http/controller/system.py +++ b/src/app/interface/http/controller/system.py @@ -8,7 +8,7 @@ class SystemController(Controller): """System management endpoints.""" - path = "api/v1/system" + path = "/system" tags = ("system",) @get( diff --git a/src/app/interface/http/router.py b/src/app/interface/http/router.py new file mode 100644 index 0000000..5d34e9a --- /dev/null +++ b/src/app/interface/http/router.py @@ -0,0 +1,22 @@ +"""API v1 router. + +Groups all module routers under the ``/api/v1`` prefix. +""" + +from __future__ import annotations + +from litestar import Router + +from app.module.identity.interface.http.router import identity_router +from app.module.parcel.interface.http.router import parcel_router + + +api_v1_router = Router( + path="/api/v1", + route_handlers=[ + identity_router, + parcel_router, + ], +) + +__all__ = ("api_v1_router",) diff --git a/src/app/module/identity/interface/http/controller/auth.py b/src/app/module/identity/interface/http/controller/auth.py index d647fce..50896d3 100644 --- a/src/app/module/identity/interface/http/controller/auth.py +++ b/src/app/module/identity/interface/http/controller/auth.py @@ -32,7 +32,7 @@ class AuthController(Controller): """Authentication and user management endpoints.""" - path = "/api/v1/auth" + path = "/auth" tags = ("auth",) @post( diff --git a/src/app/module/identity/interface/http/controller/user.py b/src/app/module/identity/interface/http/controller/user.py index 6e4b617..27be4e3 100644 --- a/src/app/module/identity/interface/http/controller/user.py +++ b/src/app/module/identity/interface/http/controller/user.py @@ -15,7 +15,7 @@ class UserController(Controller): """User profile endpoints.""" - path = "/api/v1/users" + path = "/users" tags = ("users",) guards = [require_authorization] # noqa: RUF012 diff --git a/src/app/module/identity/interface/http/router.py b/src/app/module/identity/interface/http/router.py new file mode 100644 index 0000000..30c8136 --- /dev/null +++ b/src/app/module/identity/interface/http/router.py @@ -0,0 +1,19 @@ +"""Identity module HTTP router.""" + +from __future__ import annotations + +from litestar import Router + +from app.module.identity.interface.http.controller.auth import AuthController +from app.module.identity.interface.http.controller.user import UserController + + +identity_router = Router( + path="/identity", + route_handlers=[ + AuthController, + UserController, + ], +) + +__all__ = ("identity_router",) diff --git a/src/app/module/parcel/interface/http/controller/parcel.py b/src/app/module/parcel/interface/http/controller/parcel.py index 4e773f5..d2138f3 100644 --- a/src/app/module/parcel/interface/http/controller/parcel.py +++ b/src/app/module/parcel/interface/http/controller/parcel.py @@ -30,7 +30,7 @@ class ParcelController(Controller): """Parcel management endpoints.""" - path = "/api/v1/parcels" + path = "/" tags = ("parcels",) guards = [require_authorization] # noqa: RUF012 diff --git a/src/app/module/parcel/interface/http/router.py b/src/app/module/parcel/interface/http/router.py new file mode 100644 index 0000000..fca06ea --- /dev/null +++ b/src/app/module/parcel/interface/http/router.py @@ -0,0 +1,17 @@ +"""Parcel module HTTP router.""" + +from __future__ import annotations + +from litestar import Router + +from app.module.parcel.interface.http.controller.parcel import ParcelController + + +parcel_router = Router( + path="/parcels", + route_handlers=[ + ParcelController, + ], +) + +__all__ = ("parcel_router",)