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",)