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()