From dbe3765edb809f29f17baf9f638089eb40f4eda7 Mon Sep 17 00:00:00 2001 From: Edward Delaporte Date: Thu, 9 Apr 2026 08:19:05 -0500 Subject: [PATCH] Add debug logs --- Makefile | 3 +++ matrix_shop_bot/db.py | 36 +++++++++++++++++++++++------------- matrix_shop_bot/tasks.py | 10 ++++++++++ 3 files changed, 36 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index a73de66..e7e83fd 100644 --- a/Makefile +++ b/Makefile @@ -13,6 +13,9 @@ clean: rm -rf .venv rm session.txt # Reset session +tail: + tail -f matrix-shop-bot.log + test: .venv .venv/bin/pip install .[test] .venv/bin/mypy -m $(MODULE) diff --git a/matrix_shop_bot/db.py b/matrix_shop_bot/db.py index 186350a..a6d51e3 100644 --- a/matrix_shop_bot/db.py +++ b/matrix_shop_bot/db.py @@ -17,7 +17,6 @@ def today(): logger = logging.getLogger(__name__) -logging.basicConfig(filename=f'{MODULE}.log', encoding='utf-8', level=logging.DEBUG) class ItemStoreLink(SQLModel, table=True): item_id: int | None = Field(default=None, foreign_key="item.id", primary_key=True) @@ -45,12 +44,12 @@ class Store(SQLModel, table=True): return f'{self.name} (#{self.id})' # May get used later... -#class PurchaseRecord(SQLModel, table=True): -# id: int | None = Field(default=None, primary_key=True) -# name: str = Field(default=None, unique=True) -# price: Decimal | None = Field(decimal_places=2) -# store: Store = Relationship(back_populates="purchase_history") -# purchase_date: dt | None = Field(default=None) +class PurchaseRecord(SQLModel, table=True): + id: int | None = Field(default=None, primary_key=True) + name: str = Field(default=None) + price: Decimal | None = Field(decimal_places=2) + store: str | None = Field(default=None) + purchase_date: dt | None = Field(default=None) def _get_with_id(cls, item_id): return select(cls).where(cls.id == item_id) @@ -62,6 +61,7 @@ class Data(): db_file = os.path.join(os.environ.get('MATRIX_DATA_DIR', ''), f'{MODULE}.db') self.file = db_file + logger.debug(f'Using db file {self.file}') self.engine = self.get_engine() self.last_store_id = None @@ -127,24 +127,34 @@ class Data(): pass # Already assigned return ['Success'] + def list_purchases(self, store_name): + with Session(self.engine) as session: + cmd = select(PurchaseRecord).where(PurchaseRecord.store == store_name) + records = session.exec(cmd).all() + return records def purchase_items(self, item_ids): results = [] with Session(self.engine) as session: + # Mark items as purchased for item_id in item_ids.split(' '): item = session.exec(_get_with_id(Item, item_id)).first() if item: item.purchase_date = dt.today() results.append(str(item)) + + # Track purchase history (locally only!) + # to generate recommended shopping lists + record = PurchaseRecord() + record.name = item.name + record.price = item.price + record.purchase_date = item.purchase_date + record.store = self._get_pref_store_id() # We bought it here + session.add(record) + session.commit() return results - def purchase_item(self, item_id): - with Session(self.engine) as session: - item = session.exec(_get_with_id(Item, item_id)).first() - item.purchase_date = dt.today() - session.commit() - return ['Success'] def clear_list(self, store_id, clear_all=False): with Session(self.engine) as session: diff --git a/matrix_shop_bot/tasks.py b/matrix_shop_bot/tasks.py index 29911a9..f4775fa 100644 --- a/matrix_shop_bot/tasks.py +++ b/matrix_shop_bot/tasks.py @@ -1,7 +1,11 @@ from invoke import task +import logging from .db import Data +logging.getLogger('invoke').setLevel(logging.WARNING) +logging.basicConfig(filename=f'matrix-shop-bot.log', encoding='utf-8', level=logging.DEBUG) + @task def setup(c): result = Data().setup() @@ -35,6 +39,12 @@ def buy(c, items): result = Data().purchase_items(items) print(result) +@task +def list_bought(c, store): + result = Data().list_purchases(store) + print(result) + + @task def clear_all(c, store_id): Data().clear_list(store_id, clear_all=True) -- 2.47.3