From 1b67af8acfc76ed8e305de5fb813ca9d55034d81 Mon Sep 17 00:00:00 2001 From: Edward Delaporte Date: Sat, 13 Jun 2026 20:43:20 -0500 Subject: [PATCH 1/1] Add rename commands --- matrix_shop_bot/bot.py | 14 +++++++++++++- matrix_shop_bot/db.py | 14 ++++++++++++++ matrix_shop_bot/tasks.py | 8 ++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/matrix_shop_bot/bot.py b/matrix_shop_bot/bot.py index 53d1ec6..ee56105 100644 --- a/matrix_shop_bot/bot.py +++ b/matrix_shop_bot/bot.py @@ -53,11 +53,13 @@ async def do_shop(match): assign ITEM_ID - assign item to last used store id assign.item.to.store ITEM_ID STORE_ID - plan to shop for at store for item clear.all STORE - clear **all** items for STORE, including un-purchased + rename OLD,NEW - rename an item + rename.store OLD,NEW - rename a store remove ITEM_ID - remove a shopping item from the datatbase remove.store STORE_ID - remove a store from the datatbase (requires clearing the list first) setup - run one time database setup unsorted - list all items not assigned to any store - zone ZONE ITEM - list ITEM under given ZONE + zone ZONE ITEM - list ITEM under given ZONE - ZONE may not contain spaces Example: shop zone dairy sour cream @@ -160,6 +162,16 @@ async def do_shop(match): results.append(str(item)) return results + if match.command('rename'): + old,new = ' '.join(match.args()[1:]).split(',') + Data().rename_item(old,new) + return ['Success'] + + if match.command('rename.store'): + old,new = ' '.join(match.args()[1:]).split(',') + Data().rename_store(old,new) + return ['Success'] + if match.command('remove'): item_id = ' '.join(match.args()[1:]) Data().remove_item(item_id) diff --git a/matrix_shop_bot/db.py b/matrix_shop_bot/db.py index cd8d494..cf75f84 100644 --- a/matrix_shop_bot/db.py +++ b/matrix_shop_bot/db.py @@ -105,6 +105,12 @@ def _get_with_id(cls, item_id): def _get_with_name(cls, name): return select(cls).where(func.lower(cls.name) == func.lower(name)) +def _rename(cls, session, old, new) -> bool: + with session: + record = session.exec(_get_with_name(cls, old)).first() + record.name = new + session.commit() + return True class Data(): def __init__(self, db_file=None): @@ -116,6 +122,14 @@ class Data(): self.engine = self.get_engine() self.last_store_id = None + def rename_store(self, old, new): + with Session(self.engine) as session: + return _rename(Store, session, old, new) + + def rename_item(self, old, new): + with Session(self.engine) as session: + return _rename(Item, session, old, new) + def _set_pref_store_id(self, store_id): with Session(self.engine) as session: prefs = session.exec(select(PreferStore)).all() diff --git a/matrix_shop_bot/tasks.py b/matrix_shop_bot/tasks.py index 61bd5b7..580eeba 100644 --- a/matrix_shop_bot/tasks.py +++ b/matrix_shop_bot/tasks.py @@ -84,6 +84,14 @@ def list_unsorted(c): print(item) +@task +def rename_item(c, old, new): + Data().rename_item(old, new) + +@task +def rename_store(c, old, new): + Data().rename_store(old, new) + @task def remove_item(c, item_id): Data().remove_item(item_id) -- 2.47.3