Files
serverbot/app/utils/db_actions.py

51 lines
1.9 KiB
Python

from sqlalchemy import select, insert, delete
from app.models import User, Favorites
from app.schemas.favorites_schema import FavoritesSchemaOutput
from app.schemas.user_schema import UserSchemaOutput
from app.settings import sessionmaker
async def get_user(telegram_id: int):
async with sessionmaker() as session:
query = select(User).where(User.telegram_id == telegram_id)
result = await session.execute(query)
user = result.scalar_one_or_none()
if user:
return UserSchemaOutput(**user.__dict__)
return user
async def create_user(telegram_id: int):
async with sessionmaker() as session:
query = insert(User).values(telegram_id=telegram_id).returning(User.id, User.telegram_id, User.added_at)
result = await session.execute(query)
await session.commit()
user = result.mappings().first()
return UserSchemaOutput(**user)
async def get_favorites(user_id: int):
async with sessionmaker() as session:
query = select(Favorites).where(Favorites.user_id == user_id)
result = await session.execute(query)
favorites = result.scalars().all()
return [FavoritesSchemaOutput(**favorite.__dict__) for favorite in favorites]
async def add_favorite(user_id: int, command: str):
async with sessionmaker() as session:
query = insert(Favorites).values(user_id=user_id, command=command).returning(Favorites.id, Favorites.user_id,
Favorites.command)
result = await session.execute(query)
await session.commit()
favorite = result.mappings().first()
return FavoritesSchemaOutput(**favorite)
async def del_favorite(favorite_id: int):
async with sessionmaker() as session:
query = delete(Favorites).where(Favorites.id == favorite_id)
await session.execute(query)
await session.commit()