from time import strftime from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.future import select from .. import models as mdl from .. import schemas as sch from ..database import add_transaction 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) game_fields = [c.name for c in mdl.Game.__table__.columns] new_game_info = { **{k: v for k, v in vars(game).items() if k in game_fields}, **game_info.model_dump()} print(game_fields, new_game_info) game = mdl.Game(**new_game_info) await db.commit() return game 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)