Browse Source

raising custom exceptions

funding-tag
Holger Frey 5 years ago
parent
commit
695959cdc3
  1. 49
      ordr3/repo.py

49
ordr3/repo.py

@ -3,10 +3,17 @@ @@ -3,10 +3,17 @@
import abc
from sqlalchemy import func
from sqlalchemy.orm.exc import NoResultFound
from . import models
class RepoItemNotFound(StopIteration):
""" repo error for a not found item """
pass
class AbstractOrderRepository(abc.ABC):
""" Abstract base class for a datastore """
@ -63,9 +70,14 @@ class SqlAlchemyRepository(AbstractOrderRepository): @@ -63,9 +70,14 @@ class SqlAlchemyRepository(AbstractOrderRepository):
def get_order(self, reference):
""" get an order from the database by primary key """
return (
self.session.query(models.OrderItem).filter_by(id=reference).one()
)
try:
return (
self.session.query(models.OrderItem)
.filter_by(id=reference)
.one()
)
except NoResultFound as exc:
raise RepoItemNotFound from exc
def list_orders(self):
""" list orders orderd by date, descending """
@ -81,21 +93,34 @@ class SqlAlchemyRepository(AbstractOrderRepository): @@ -81,21 +93,34 @@ class SqlAlchemyRepository(AbstractOrderRepository):
def get_user(self, reference):
""" get a user from the database by primary key """
return self.session.query(models.User).filter_by(id=reference).one()
try:
return (
self.session.query(models.User).filter_by(id=reference).one()
)
except NoResultFound as exc:
raise RepoItemNotFound from exc
def get_user_by_username(self, reference):
""" get a user from the database by username """
return (
self.session.query(models.User).filter_by(username=reference).one()
)
try:
return (
self.session.query(models.User)
.filter_by(username=reference)
.one()
)
except NoResultFound as exc:
raise RepoItemNotFound from exc
def get_user_by_email(self, reference):
""" get a user from the database by email """
return (
self.session.query(models.User)
.filter(func.lower(models.User.email) == func.lower(reference))
.one()
)
try:
return (
self.session.query(models.User)
.filter(func.lower(models.User.email) == func.lower(reference))
.one()
)
except NoResultFound as exc:
raise RepoItemNotFound from exc
def list_users(self):
""" list users orderd by username """

Loading…
Cancel
Save