import logging
import os
from datetime import datetime as dt
+from datetime import timedelta
from decimal import Decimal
from typing import List
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(item_name).contains(func.lower(ItemZone.name)))).first()
if zone:
return zone.zone
return 'No Zone Assigned'
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))
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 = []