From: Edward Delaporte Date: Sun, 29 Mar 2026 17:24:08 +0000 (-0500) Subject: Set prefered store X-Git-Tag: 1.1.0~28 X-Git-Url: https://apps.delaporte.us/gitweb/matrix-shop-bot.git/commitdiff_plain/da55a0e45d8e89ee88e4a04a7304e13ed19422ed?ds=sidebyside Set prefered store --- diff --git a/matrix_shop_bot/db.py b/matrix_shop_bot/db.py index bab1837..31daf99 100644 --- a/matrix_shop_bot/db.py +++ b/matrix_shop_bot/db.py @@ -31,6 +31,9 @@ class Item(SQLModel, table=True): def __str__(self): return f'{self.name} (#{self.id})' +class PreferStore(SQLModel, table=True): + store_id: int | None = Field(default=None, foreign_key="store.id", primary_key=True) + class Store(SQLModel, table=True): id: int | None = Field(default=None, primary_key=True) name: str = Field(default=None, unique=True) @@ -64,6 +67,21 @@ class Data(): self.engine = self.get_engine() self.last_store_id = None + def _set_pref_store_id(self, store_id): + with Session(self.engine) as session: + prefs = session.exec(select(PreferStore)).all() + for pref in prefs: + session.delete(pref) + pref = PreferStore() + pref.store_id = store_id + session.add(pref) + session.commit() + + def _get_pref_store_id(self): + with Session(self.engine) as session: + pref = session.exec(select(PreferStore)).one() + return pref.store_id + def _add_with_name(self, cls, name): id = -1 with Session(self.engine) as session: @@ -131,12 +149,16 @@ class Data(): return [f'No unsorted items!'] return items - def get_shopping_list(self, store_id=None) -> List[str]: - if isinstance(store_id, int): - self.last_store_id = store_id - else: - store_id = self.last_store_id + def get_shopping_list_for_store(self, store_id) -> List[str]: + self._set_pref_store_id(store_id) + return self.get_shopping_list(store_id) + + def get_last_shopping_list(self) -> List[str]: + store_id = self._get_pref_store_id() + return self.get_shopping_list(store_id) + + def get_shopping_list(self, store_id) -> List[str]: results = [] with Session(self.engine) as session: cmd = select(Store).where(Store.id == store_id) diff --git a/matrix_shop_bot/tasks.py b/matrix_shop_bot/tasks.py index 54cafd1..4b8631a 100644 --- a/matrix_shop_bot/tasks.py +++ b/matrix_shop_bot/tasks.py @@ -39,10 +39,16 @@ def clear_list(c, store_id): @task -def list(c, store_id_str=None): +def list_for_store(c, store_id): + items = Data().get_shopping_list_for_store(store_id) + for item in items: + print(item) - store_id = int(store_id_str) if store_id_str else None - items = Data().get_shopping_list(store_id) + +@task +def list(c): + '''Use previous store''' + items = Data().get_last_shopping_list() for item in items: print(item)