[WIP] Exception handling
This commit is contained in:
@@ -1,10 +1,13 @@
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
|
||||
from app.api.cruds.base import create, read, update, delete, read_all
|
||||
from app.schema.library import Library
|
||||
from ..db.config.config import get_engine_configuration
|
||||
|
||||
from .exceptions import LibraryCreationException
|
||||
|
||||
import logging
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -66,7 +69,16 @@ class LibraryController:
|
||||
return False
|
||||
|
||||
def create(self, library:Library):
|
||||
self._library = create(self.session, library)
|
||||
try:
|
||||
self._library = create(self.session, library)
|
||||
except IntegrityError as e:
|
||||
raise LibraryCreationException(
|
||||
"Cannot create library",
|
||||
f"{e.orig}",
|
||||
"library",
|
||||
str(library),
|
||||
400
|
||||
)
|
||||
return self
|
||||
|
||||
def read(self, _id):
|
||||
|
||||
2
app/controller/exceptions/__init__.py
Normal file
2
app/controller/exceptions/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
from .base import LibraryExceptionBase
|
||||
from .exc_01001X_create import LibraryCreationException
|
||||
18
app/controller/exceptions/base.py
Normal file
18
app/controller/exceptions/base.py
Normal file
@@ -0,0 +1,18 @@
|
||||
class LibraryExceptionBase(Exception):
|
||||
def __init__(self, code, error):
|
||||
self.code = code
|
||||
self.error = error
|
||||
|
||||
def to_dict(self):
|
||||
return {
|
||||
"status": "error",
|
||||
"code": self.code,
|
||||
"error": self.error,
|
||||
"status_code": 400
|
||||
}
|
||||
|
||||
def __str__(self):
|
||||
return f"ERROR {self.code}: {self.error}"
|
||||
|
||||
def __repr__(self):
|
||||
return f"LibraryExceptionBase(code={self.code!r}, error={self.error!r})"
|
||||
26
app/controller/exceptions/exc_01001X_create.py
Normal file
26
app/controller/exceptions/exc_01001X_create.py
Normal file
@@ -0,0 +1,26 @@
|
||||
from .base import LibraryExceptionBase
|
||||
|
||||
#010010
|
||||
class LibraryCreationException(LibraryExceptionBase):
|
||||
def __init__(self, name, error, object, data, status_code=400):
|
||||
self.code = "010010"
|
||||
self.name = name
|
||||
self.error = error
|
||||
self.object = object
|
||||
self.data = data
|
||||
self.status_code = status_code
|
||||
|
||||
def to_dict(self):
|
||||
return {
|
||||
"status": "error",
|
||||
"name": self.name,
|
||||
"code": self.code,
|
||||
"error": self.error,
|
||||
"object": self.object,
|
||||
"data": self.data,
|
||||
"status_code": self.status_code
|
||||
}
|
||||
|
||||
def __repr__(self):
|
||||
return f"LibraryCreationException(code={self.code!r}, error={self.error!r}), " \
|
||||
f"object={self.object!r}, data={self.data!r}"
|
||||
Reference in New Issue
Block a user