X-Git-Url: https://us-delaporte.pagekite.me/gitweb/matrix-shop-bot.git/blobdiff_plain/d0f8d69f2d4aa2a1af67baae391663d9bb72c729..b87cc9cac0fee1d8d1c281a3f445097cb8af2691:/matrix_shop_bot/db.py diff --git a/matrix_shop_bot/db.py b/matrix_shop_bot/db.py index 0d1f590..bab1837 100644 --- a/matrix_shop_bot/db.py +++ b/matrix_shop_bot/db.py @@ -62,6 +62,7 @@ class Data(): self.file = db_file self.engine = self.get_engine() + self.last_store_id = None def _add_with_name(self, cls, name): id = -1 @@ -73,12 +74,27 @@ class Data(): return id def add_store(self, name): - return self._add_with_name(Store, name) + store_id = self._add_with_name(Store, name) + self.last_store_id = store_id + return store_id def add_item(self, name): - return self._add_with_name(Item, name) + item_id = self._add_with_name(Item, name) + if isinstance(self.last_store_id, int): + with Session(self.engine) as session: + store_id = self.last_store_id + store = session.exec(_get_with_id(Store, store_id)).first() + item = session.exec(_get_with_id(Item, item_id)).first() + item.stores.append(store) + session.commit() + return item_id + + def assign_store(self, item_id, store_id=None): + if store_id: + self.last_store_id = store_id + else: + store_id = self.last_store_id - def assign_store(self, store_id, item_id): with Session(self.engine) as session: store = session.exec(_get_with_id(Store, store_id)).first() item = session.exec(_get_with_id(Item, item_id)).first() @@ -115,7 +131,12 @@ class Data(): return [f'No unsorted items!'] return items - def get_shopping_list(self, store_id) -> List[str]: + 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 + results = [] with Session(self.engine) as session: cmd = select(Store).where(Store.id == store_id) @@ -136,6 +157,18 @@ class Data(): results.append(f' - [ ] {item}') return results + def remove_item(self, item_id): + with Session(self.engine) as session: + item = session.exec(_get_with_id(Item, item_id)).first() + session.delete(item) + session.commit() + + def remove_store(self, store_id): + with Session(self.engine) as session: + store = session.exec(_get_with_id(Store, store_id)).first() + session.delete(store) + session.commit() + def get_engine(self): return create_engine(f"sqlite:///{self.file}")