| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import sqlmodel
- import sqlmodel.sql._expression_select_cls
- from .product import product
- from .reservation import reservation
- from .reservation import reservation_factory
- from .reservations_collection import reservations_collection
- class reservation_loader(sqlmodel.Session):
- def get_by_email(self, target: str) -> reservations_collection:
- return self.__get(reservation.email == target)
-
- def get_by_phone_number(self, target: str) -> reservations_collection:
- return self.__get(reservation.phone_number == target)
- def get_by_target(self, target: product) -> reservations_collection:
- if not target.in_database:
- return reservations_collection()
- return self.__get(reservation.target == target)
- def __get(self, condition: object) -> reservations_collection:
- query = self.__select.where(condition)
- collection = reservations_collection()
- result = self.exec(query)
- for item in result:
- collection.append(item)
- return collection
- def store(self, target: reservation) -> bool:
- if not target.ready:
- raise RuntimeError("Reservation is not setup.")
- if target.in_database:
- error = "Target reservation is already in database. Reservation "
- error = error + "object is not editable."
- raise reservation_loader_exception(error)
- try:
- self.add(target)
- self.commit()
- self.refresh(target)
- return True
-
- except:
- return False
- def drop(self, target: reservation) -> bool:
- if not target.in_database:
- raise reservation_loader_exception("Reservation does not exists.")
- try:
- self.delete(target)
- self.commit()
- return True
- except:
- return False
- @property
- def __select(self) -> sqlmodel.sql._expression_select_cls.SelectOfScalar:
- return sqlmodel.select(reservation)
|