From f299173e5609cca8f6f6beb40c1b35531729ea6c Mon Sep 17 00:00:00 2001 From: StNicolay Date: Sun, 25 Dec 2022 17:33:36 +0300 Subject: [PATCH] Changes to database.get_accounts Function is only fetching account names from db and not whole accounts now Made sorting in that function optional --- src/bot/handlers.py | 6 +++++- src/database/get.py | 21 ++++++++++++--------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/bot/handlers.py b/src/bot/handlers.py index df30c36..04749a4 100644 --- a/src/bot/handlers.py +++ b/src/bot/handlers.py @@ -38,7 +38,11 @@ def _base_handler( def get_accounts(bot: telebot.TeleBot, engine: Engine, mes: Message) -> None: _base_handler(bot, mes) - accounts = database.get.get_accounts(engine, mes.from_user.id) + accounts = database.get.get_accounts( + engine, + mes.from_user.id, + to_sort=True, + ) if not accounts: return _send_tmp_message(bot, mes.chat.id, "У вас нет аккаунтов") diff --git a/src/database/get.py b/src/database/get.py index f18f028..99242ce 100644 --- a/src/database/get.py +++ b/src/database/get.py @@ -22,18 +22,21 @@ def get_master_pass( return (result.salt, result.password_hash) -def get_accounts(engine: Engine, user_id: int) -> list[str]: +def get_accounts( + engine: Engine, + user_id: int, + *, + to_sort: bool = False, +) -> list[str]: """Gets list of account names""" - statement = ( - sqlmodel.select(models.Account) - .where( - models.Account.user_id == user_id, - ) - .order_by(models.Account.name) + statement = sqlmodel.select(models.Account.name).where( + models.Account.user_id == user_id, ) + if to_sort: + statement = statement.order_by(models.Account.name) with sqlmodel.Session(engine) as session: - result = session.exec(statement) - return [account.name for account in result] + result = list(session.exec(statement)) + return result def get_all_accounts(