ORM update and lots of improvements
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import delete, select
|
||||
from sqlalchemy.dialects.postgresql import insert
|
||||
from sqlalchemy.exc import SQLAlchemyError
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from database.models import TemporaryData
|
||||
from logger import logger
|
||||
|
||||
|
||||
async def create_temporary_data(
|
||||
session: AsyncSession, tg_id: int, state: str, data: dict
|
||||
):
|
||||
try:
|
||||
stmt = (
|
||||
insert(TemporaryData)
|
||||
.values(tg_id=tg_id, state=state, data=data, updated_at=datetime.utcnow())
|
||||
.on_conflict_do_update(
|
||||
index_elements=[TemporaryData.tg_id],
|
||||
set_={"state": state, "data": data, "updated_at": datetime.utcnow()},
|
||||
)
|
||||
)
|
||||
await session.execute(stmt)
|
||||
await session.commit()
|
||||
logger.info(f"📝 Временные данные сохранены для {tg_id}")
|
||||
except SQLAlchemyError as e:
|
||||
logger.error(f"❌ Ошибка при сохранении временных данных для {tg_id}: {e}")
|
||||
await session.rollback()
|
||||
|
||||
|
||||
async def get_temporary_data(session: AsyncSession, tg_id: int) -> dict | None:
|
||||
stmt = select(TemporaryData).where(TemporaryData.tg_id == tg_id)
|
||||
result = await session.execute(stmt)
|
||||
row = result.scalar_one_or_none()
|
||||
if row:
|
||||
return {"state": row.state, "data": row.data}
|
||||
return None
|
||||
|
||||
|
||||
async def clear_temporary_data(session: AsyncSession, tg_id: int):
|
||||
await session.execute(delete(TemporaryData).where(TemporaryData.tg_id == tg_id))
|
||||
await session.commit()
|
||||
logger.info(f"🗑 Временные данные очищены для {tg_id}")
|
||||
Reference in New Issue
Block a user