diff --git a/app/handlers/base.py b/app/handlers/base.py index 1819879d..6d89699a 100644 --- a/app/handlers/base.py +++ b/app/handlers/base.py @@ -4,6 +4,7 @@ from aiogram.utils.markdown import hbold, hpre from app.infrastructure.database.models import Chat +from app.infrastructure.database.repo.chat import ChatRepo from app.utils.log import Logger logger = Logger(__name__) @@ -83,9 +84,9 @@ async def cancel_state(message: types.Message, state: FSMContext): @router.message(F.message.content_types == types.ContentType.MIGRATE_TO_CHAT_ID) -async def chat_migrate(message: types.Message, chat: Chat): +async def chat_migrate(message: types.Message, chat: Chat, chat_repo: ChatRepo): old_id = message.chat.id new_id = message.migrate_to_chat_id chat.chat_id = new_id - await chat.save() + await chat_repo.update(chat) logger.info(f"Migrate chat from {old_id} to {new_id}") diff --git a/app/handlers/karma.py b/app/handlers/karma.py index d01e7234..12e37f12 100644 --- a/app/handlers/karma.py +++ b/app/handlers/karma.py @@ -5,6 +5,7 @@ from aiogram.utils.text_decorations import html_decoration as hd from app.infrastructure.database.models import Chat, User +from app.infrastructure.database.repo.chat import ChatRepo from app.models.config import Config from app.services.karma import get_me_chat_info, get_me_info from app.services.karma import get_top as get_karma_top @@ -16,10 +17,10 @@ @router.message(Command("top", prefix="!"), F.chat.type == "private") -async def get_top_from_private(message: types.Message, user: User): +async def get_top_from_private(message: types.Message, user: User, chat_repo: ChatRepo): parts = message.text.split(maxsplit=1) if len(parts) > 1: - chat = await Chat.get(chat_id=int(parts[1])) + chat = await chat_repo.get_by_id(chat_id=int(parts[1])) else: return await message.reply( "Эту команду можно использовать только в группах " diff --git a/app/infrastructure/database/repo/chat.py b/app/infrastructure/database/repo/chat.py index 7a0783c9..049db8a5 100644 --- a/app/infrastructure/database/repo/chat.py +++ b/app/infrastructure/database/repo/chat.py @@ -17,6 +17,12 @@ class ChatRepo: def __init__(self, session: BaseDBAsyncClient | None = None): self.session = session + async def get_by_id(self, chat_id: int) -> Chat: + return await Chat.get(chat_id=chat_id, using_db=self.session) + + async def update(self, chat: Chat): + await chat.save(using_db=self.session) + async def create_from_tg_chat(self, chat) -> Chat: chat = await Chat.create( chat_id=chat.id,