50 lines
1.1 KiB
Python
50 lines
1.1 KiB
Python
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()
|
|
|