from datetime import UTC, datetime from app.database.models import Message, TelegramUser from app.database.repositories import MemoryRepository class MemoryService: def __init__(self, repository: MemoryRepository): self.repository = repository async def record( self, *, chat_id: int, message_id: int, thread_id: int | None, user_id: int | None, user_name: str, text: str, sent_at: datetime, reply_to: int | None, message_type: str, attachment_data: dict | None = None, edited: bool = False, ) -> Message: if user_id is not None: user = await self.repository.session.get(TelegramUser, user_id) if user is None: self.repository.session.add( TelegramUser(telegram_id=user_id, display_name=user_name) ) else: user.display_name = user_name return await self.repository.save_message( Message( chat_id=chat_id, telegram_message_id=message_id, thread_id=thread_id, user_id=user_id, user_name=user_name, text=text, sent_at=sent_at.astimezone(UTC), reply_to_message_id=reply_to, message_type=message_type, attachment_data=attachment_data, edited=edited, edited_at=datetime.now(UTC) if edited else None, ) )