from sqlalchemy import insert from sqlalchemy.ext.asyncio import AsyncSession from uuid import UUID from src.core.database import User, TgChat, TgMessage from src.core.tg_service.schemas import MessageFromChatSchema async def create_new_user( session: AsyncSession, **kwargs ) -> User: new_user = User(**kwargs) session.add(new_user) await session.commit() return new_user async def create_new_chat( session: AsyncSession, **kwargs ) -> TgChat: new_chat = TgChat(**kwargs) session.add(new_chat) await session.commit() return new_chat async def bulk_insert_messages( messages: list[MessageFromChatSchema], chunk_id: UUID, session: AsyncSession, ) -> None: dicts_for_insert: list[dict] = [] for message in messages: dumped_schema = message.model_dump() dumped_schema["chunk_id"] = chunk_id dicts_for_insert.append(dumped_schema) stmt = ( insert(TgMessage), dicts_for_insert, ) await session.execute(*stmt) await session.commit()