reservations_collection.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import typing
  2. from .product import product
  3. from .reservation import reservation
  4. class reservations_collection:
  5. def __init__(self) -> None:
  6. self.__content = list()
  7. def append(self, target: reservation) -> object:
  8. self.__content.append(target)
  9. return self
  10. def _filter(self, action: typing.Callable) -> object:
  11. new = list()
  12. for item in self.__content:
  13. if action(item):
  14. new.append(item)
  15. self.__content = new
  16. return self
  17. def by_target(self, target: product) -> object:
  18. if not target.in_database:
  19. raise reservation_exception("Target product must be in database.")
  20. return self._filter(lambda item: item.target_id == target.id)
  21. def by_email(self, target: str) -> object:
  22. return self._filter(lambda item: item.email == target)
  23. def by_phone_number(self, target: str) -> object:
  24. return self._filter(lambda item: item.phone_number == target)
  25. def results(self) -> list:
  26. return self.__content