X-Git-Url: https://apps.delaporte.us/gitweb/matrix-shop-bot.git/blobdiff_plain/5014c979631941a7086c2c266320d5f3d390991a..d278618562c1975ffe4bd081b76124d183d6b637:/matrix_shop_bot/db.py diff --git a/matrix_shop_bot/db.py b/matrix_shop_bot/db.py index 9d40236..68728bb 100644 --- a/matrix_shop_bot/db.py +++ b/matrix_shop_bot/db.py @@ -1,6 +1,7 @@ import logging import os from datetime import datetime as dt +from datetime import timedelta from decimal import Decimal from typing import List @@ -50,7 +51,7 @@ class PreferStore(SQLModel, table=True): store_id: int | None = Field(default=None, foreign_key="store.id", primary_key=True) def _get_item_zone(item_name, session) -> str: - zone = session.exec(select(ItemZone).where(ItemZone.name == item_name)).first() + zone = session.exec(select(ItemZone).where(func.lower(ItemZone.name) == func.lower(item_name))).first() if zone: return zone.zone return 'No Zone Assigned' @@ -66,7 +67,7 @@ def _get_pretty_shopping_list(store_id, session) -> List[str]: zones = {} for item in items: - zone = _get_item_zone(item.name, session) + zone = str(_get_item_zone(item.name, session)).title() # Title Case if not zone in zones: zones[zone] = [] zones[zone].append(str(item)) @@ -190,10 +191,15 @@ class Data(): return ['Success'] def list_purchases(self, store_name): + '''List unique purchases at store in the past 90 days''' with Session(self.engine) as session: - cmd = select(PurchaseRecord).where(func.lower(PurchaseRecord.store) == func.lower(store_name)) + recent = dt.now() - timedelta(days=90) + cmd = select(PurchaseRecord).where(func.lower(PurchaseRecord.store) == func.lower(store_name)).where(PurchaseRecord.purchase_date > recent) records = session.exec(cmd).all() - return records + bought = set() + for item in records: + bought.add(item.name) + return list(bought) def purchase_items(self, item_ids): results = []