Basic users and cities api
This commit is contained in:
68
app/lib/exceptions.py
Normal file
68
app/lib/exceptions.py
Normal file
@ -0,0 +1,68 @@
|
||||
import logging
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from litestar.contrib.repository.exceptions import (
|
||||
ConflictError as RepositoryConflictException,
|
||||
)
|
||||
from litestar.contrib.repository.exceptions import (
|
||||
NotFoundError as RepositoryNotFoundException,
|
||||
)
|
||||
from litestar.contrib.repository.exceptions import (
|
||||
RepositoryError as RepositoryException,
|
||||
)
|
||||
from litestar.exceptions import (
|
||||
HTTPException,
|
||||
InternalServerException,
|
||||
NotFoundException,
|
||||
)
|
||||
from litestar.middleware.exceptions.middleware import create_exception_response
|
||||
|
||||
from .service import ServiceError
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from litestar.connection import Request
|
||||
from litestar.response import Response
|
||||
|
||||
__all__ = [
|
||||
"repository_exception_to_http_response",
|
||||
"service_exception_to_http_response",
|
||||
]
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ConflictException(HTTPException):
|
||||
status_code = 409
|
||||
|
||||
|
||||
def repository_exception_to_http_response(request: "Request", exc: RepositoryException) -> "Response":
|
||||
"""Transform repository exceptions to HTTP exceptions.
|
||||
|
||||
Args:
|
||||
_: The request that experienced the exception.
|
||||
exc: Exception raised during handling of the request.
|
||||
|
||||
Returns:
|
||||
Exception response appropriate to the type of original exception.
|
||||
"""
|
||||
http_exc: type[HTTPException]
|
||||
if isinstance(exc, RepositoryNotFoundException):
|
||||
http_exc = NotFoundException
|
||||
elif isinstance(exc, RepositoryConflictException):
|
||||
http_exc = ConflictException
|
||||
else:
|
||||
http_exc = InternalServerException
|
||||
return create_exception_response(request, exc=http_exc())
|
||||
|
||||
|
||||
def service_exception_to_http_response(request: "Request", exc: ServiceError) -> "Response":
|
||||
"""Transform service exceptions to HTTP exceptions.
|
||||
|
||||
Args:
|
||||
_: The request that experienced the exception.
|
||||
exc: Exception raised during handling of the request.
|
||||
|
||||
Returns:
|
||||
Exception response appropriate to the type of original exception.
|
||||
"""
|
||||
return create_exception_response(request, InternalServerException())
|
||||
Reference in New Issue
Block a user