purchase_date: dt | None = Field(default=None)
def __str__(self):
date = self.purchase_date.strftime(DATE_FORMAT)
- return f'{self.name} at {self.store} on {date}'
+ return f'Bought {self.name} at {self.store} on {date}'
def _get_with_id(cls, item_id):
return select(cls).where(cls.id == item_id)
def list_purchases(self, store_name):
with Session(self.engine) as session:
- cmd = select(PurchaseRecord).where(PurchaseRecord.store == store_name)
+ cmd = select(PurchaseRecord).where(func.lower(PurchaseRecord.store) == func.lower(store_name))
records = session.exec(cmd).all()
return records
return results
- def clear_list(self, store_id, clear_all=False):
+ def clear_list(self, store_name, clear_all=False):
+ results = []
with Session(self.engine) as session:
- store = session.exec(_get_with_id(Store, store_id)).first()
+ store = session.exec(_get_with_name(Store, store_name)).first()
+ if not store:
+ return [f'Store {store_name} not found.']
+
for item in store.shopping_list:
if clear_all or item.purchase_date:
session.delete(item)
+
session.commit()
+ results = store.get_pretty_shopping_list()
+ return results
def get_stores(self):
with Session(self.engine) as session: