diff --git a/app/api/v1/endpoints/__pycache__/games.cpython-311.pyc b/app/api/v1/endpoints/__pycache__/games.cpython-311.pyc index 2936832..c00296f 100644 Binary files a/app/api/v1/endpoints/__pycache__/games.cpython-311.pyc and b/app/api/v1/endpoints/__pycache__/games.cpython-311.pyc differ diff --git a/app/api/v1/endpoints/games.py b/app/api/v1/endpoints/games.py index 0b52a51..65d750f 100644 --- a/app/api/v1/endpoints/games.py +++ b/app/api/v1/endpoints/games.py @@ -33,7 +33,7 @@ def read_games(skip: int = 0, limit: int = 100, genre: Optional[str] = None, pla query = query.filter(Game.platforms.contains([platform])) games = query.offset(skip).limit(limit).all() - data = [GameResponse.model_validate(g).model_dump() for g in games] + data = [GameResponse.model_validate(g).model_dump(mode='json') for g in games] return {"success": True, "message": "Lista de jogos", "data": data} @@ -59,16 +59,19 @@ def create_game(game: GameCreate, db: Session = Depends(get_db)): @router.get("/{id_ou_slug}", response_model=StandardResponse) def read_game(id_ou_slug: str, db: Session = Depends(get_db)): - db_game = db.query(Game).filter(or_(Game.id == id_ou_slug, Game.slug == id_ou_slug)).first() + if id_ou_slug.isdigit(): + db_game = db.query(Game).filter(Game.id == int(id_ou_slug)).first() + else: + db_game = db.query(Game).filter(Game.slug == id_ou_slug).first() if not db_game: raise HTTPException(status_code=404, detail="Jogo não encontrado.") - data = GameResponse.model_validate(db_game).model_dump() + data = GameResponse.model_validate(db_game).model_dump(mode='json') return {"success": True, "message": "Detalhes do jogo", "data": data} @router.patch("/{id}", response_model=StandardResponse) -def update_game(id: str, game: GameUpdate, db: Session = Depends(get_db)): +def update_game(id: int, game: GameUpdate, db: Session = Depends(get_db)): db_game = db.query(Game).filter(Game.id == id).first() if not db_game: @@ -91,5 +94,20 @@ def update_game(id: str, game: GameUpdate, db: Session = Depends(get_db)): db.commit() db.refresh(db_game) - data = GameResponse.model_validate(db_game).model_dump() + data = GameResponse.model_validate(db_game).model_dump(mode='json') return {"success": True, "message": "Jogo atualizado com sucesso", "data": data} + +@router.delete("/{id_ou_slug}", response_model=StandardResponse) +def delete_game(id_ou_slug: str, db: Session = Depends(get_db)): + if id_ou_slug.isdigit(): + db_game = db.query(Game).filter(Game.id == int(id_ou_slug)).first() + else: + db_game = db.query(Game).filter(Game.slug == id_ou_slug).first() + + if not db_game: + raise HTTPException(status_code=404, detail="Jogo não encontrado.") + + db.delete(db_game) + db.commit() + + return {"success": True, "message": "Jogo removido com sucesso", "data": None} diff --git a/app/models/__pycache__/game.cpython-311.pyc b/app/models/__pycache__/game.cpython-311.pyc index 7e0b405..831bb8e 100644 Binary files a/app/models/__pycache__/game.cpython-311.pyc and b/app/models/__pycache__/game.cpython-311.pyc differ diff --git a/app/models/game.py b/app/models/game.py index 90f3bb8..270b625 100644 --- a/app/models/game.py +++ b/app/models/game.py @@ -1,12 +1,11 @@ -from sqlalchemy import Column, String, Boolean +from sqlalchemy import Column, String, Boolean, Integer from sqlalchemy.dialects.postgresql import JSONB from app.db.database import Base -import uuid class Game(Base): __tablename__ = "games" - id = Column(String, primary_key=True, default=lambda: f"gv-{uuid.uuid4().hex[:8]}") + id = Column(Integer, primary_key=True, autoincrement=True) title = Column(String, index=True, nullable=False) slug = Column(String, unique=True, index=True, nullable=False) description = Column(String) diff --git a/app/schemas/__pycache__/game.cpython-311.pyc b/app/schemas/__pycache__/game.cpython-311.pyc index 9f47806..4710db0 100644 Binary files a/app/schemas/__pycache__/game.cpython-311.pyc and b/app/schemas/__pycache__/game.cpython-311.pyc differ diff --git a/app/schemas/game.py b/app/schemas/game.py index e0d6ec8..37230aa 100644 --- a/app/schemas/game.py +++ b/app/schemas/game.py @@ -34,7 +34,7 @@ class GameUpdate(BaseModel): active: Optional[bool] = None class GameResponse(GameBase): - id: str + id: int slug: str class Config: