from time import strftime from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.future import select from sqlalchemy.orm import selectinload from .. import models as mdl from .. import schemas as sch from ..database import add_transaction async def get_games(db: AsyncSession): return (await db.execute(select(mdl.Game))).scalars().all() async def get_game(db: AsyncSession, game_id: int): return await db.get(mdl.Game, game_id) async def add_game(db: AsyncSession, game_info: sch.GameCreate, user_id: int): game = mdl.Game(**game_info.model_dump(), update_date=strftime("%Y-%m-%d %H:%M:%S"), upload_date=strftime("%Y-%m-%d %H:%M:%S"), owner_id=user_id) return await add_transaction(db, game) async def edit_game(db: AsyncSession, game_id: int, game_info: sch.GameCreate): game = await db.get(mdl.Game, game_id) for key, value in vars(game_info).items(): if (getattr(game, key) != value): setattr(game, key, value) setattr(game, "update_date", strftime("%Y-%m-%d %H:%M:%S")) await db.commit() return game async def delete_game(db: AsyncSession, game_id: int): game = await get_game(db, game_id) await db.delete(game) await db.commit() return game