]> us-delaporte.pagekite.me Git - matrix-shop-bot.git/blobdiff - matrix_shop_bot/db.py
Print lists sorted within each zone
[matrix-shop-bot.git] / matrix_shop_bot / db.py
index 007e75852ee82d2819a351d46e8d1a2a1f97a8e3..2f5b28967cbe9f9bbc1e52411e9bdf16f818dec7 100644 (file)
@@ -1,6 +1,7 @@
 import logging
 import os
 from datetime import datetime as dt
 import logging
 import os
 from datetime import datetime as dt
+from datetime import timedelta
 from decimal import Decimal
 from typing import List
 
 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:
     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(func.lower(ItemZone.name) == func.lower(item_name))).first()
+    zone = session.exec(select(ItemZone).where(func.lower(item_name).contains(func.lower(ItemZone.name)))).first()
     if zone:
         return zone.zone
     return 'No Zone Assigned'
     if zone:
         return zone.zone
     return 'No Zone Assigned'
@@ -69,8 +70,9 @@ def _get_pretty_shopping_list(store_id, session) -> List[str]:
         zone = str(_get_item_zone(item.name, session)).title() # Title Case
         if not zone in zones:
             zones[zone] = []
         zone = str(_get_item_zone(item.name, session)).title() # Title Case
         if not zone in zones:
             zones[zone] = []
-        zones[zone].append(str(item))
+        zones[zone].append(str(item).title())
     for zone in zones:
     for zone in zones:
+        zones[zone].sort()
         results.append(f' ### {zone}')
         for item in zones[zone]:
             results.append(item)
         results.append(f' ### {zone}')
         for item in zones[zone]:
             results.append(item)
@@ -190,10 +192,15 @@ class Data():
         return ['Success']
 
     def list_purchases(self, store_name):
         return ['Success']
 
     def list_purchases(self, store_name):
+        '''List unique purchases at store in the past 90 days'''
         with Session(self.engine) as session:
         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()
             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 = []
 
     def purchase_items(self, item_ids):
         results = []