From f148d430b3ac8fda90223858bb4912d4dd1a59f9 Mon Sep 17 00:00:00 2001 From: Luckaskl Date: Tue, 19 May 2026 10:13:06 -0500 Subject: [PATCH] =?UTF-8?q?adi=C3=A7=C3=A3o=20do=20metodo=20DELETE,=20corr?= =?UTF-8?q?e=C3=A7=C3=B5es=20adicionais?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__pycache__/games.cpython-311.pyc | Bin 7026 -> 8417 bytes app/api/v1/endpoints/games.py | 28 ++++++++++++++---- app/models/__pycache__/game.cpython-311.pyc | Bin 1478 -> 1268 bytes app/models/game.py | 5 ++-- app/schemas/__pycache__/game.cpython-311.pyc | Bin 3536 -> 3541 bytes app/schemas/game.py | 2 +- 6 files changed, 26 insertions(+), 9 deletions(-) diff --git a/app/api/v1/endpoints/__pycache__/games.cpython-311.pyc b/app/api/v1/endpoints/__pycache__/games.cpython-311.pyc index 2936832c48a7442093dd4d261f54d35259c0a27d..c00296f873e2d81a65ec29dbf6e246415be643c2 100644 GIT binary patch delta 2036 zcmd5-PfQ$D7@wJ)o!Q-)Wp@YIE+Vk}X?QVup2pOGHa(3sQ`F}9&5#uEn*jnQUzGX^pzG~T>my%{uqZ>HT+PbAC&C_RH$g}L#EFzo(G>LDoV{!uUFznd~=0NtuaY zv{?UjLsG0yiEX;rmNCRXI~Lt9g0o?dj!Y^lYQ*!-5;}}Ob>8xjU=KO~QbNBj^sf!L z-edgj#FZ6r2lKTgBy)cPR2BYN6H1HsADLL=#K(~IMjjPa+lDJ_!D zfVO3m=_-eZLql`)G7X=(G>g5SJlaOqwJcaa9^;v{COnZ*5aU_CFEaRs=QuZYdcSb) zObCh^=dnvF!p%Y%&&)BZPxIl2o?>_Q)6nBCyaO8%%st)`vOPALlleKD?D)tADRts5 zZ*igk}CBfz&y3Z`!@KzG@qB^^L0Ldo3h!v=}jqT zsp9>LkLwnXd~jq#Do;!0U$CqESG9L%@3q`-NmsO`q_8f9H>B>g)SZ%gb*XoOU*Na) z^>f}GOjop|q*h&O-Ed1M)6&V5)TK*Z3p_sKFTjJo9ATYH3XLhDQx`h1<_qS(2Adlt z*?%%J)zGx|rLV{~EVHYwXOsE1Q?|>(oKqG}#@%PoS#U<@2xN$lgcwu<62q;$IXW>d zE5p-Ms-ju7+(}Hk2vp;;+~PxKGQ4|ofXLP?{;dMX7jp{_pCQ7R3G@-j^q3m z$_Kum+W?jRYwkgp0#dRy_43+t{@!%Ng+ZWHiF8)bd&*jGBTw6 z^*?QqAPb%4G<$;edhwq^WkO~lO_a=;N#ge=DKeYa1AP!g%4B>d23-M%Mo^s|RaEtH za|q~F`2Bs8GDsB9b_O}fCKOFEa}%7VH#X?54}whyjg0^%g3yFH~wa$m}Z@R zX`3R_qNfA|}12j+bM delta 1207 zcmZ8fU1%It6rP`**`Jx6Z2r12&1%x!G?^l%DrsU&D{I;=S!)`SG>HY%Z1+yGyUp&l zcP5~Ai+S)x=?}}TC}>MXjFzZa_N5OBg}xL)$u0wtK|vqIm#C;ug6GVTPh2F==9;2DG8uF4%VsA<7K-oZ^Yp3Hx zn&$M!Ykv!ql6o3q?{Ujqg?qK1O$CmytEv{L3YYb1?l#Bn2J+7i0Ar2YR8ro!o4j(u zR{K8V>*@hpJ+P$?Hq^noI%KOuyBzjPuo`|2_BqmWrf8USnEeyn$0u25=%Xe)=UzKN zT}jzWs`hQ@n$Yl#X!4Y`PpJ?bkGMZ*DBmO0UgUlFIK>3xVDpB zhwO&H79&v>i}Z>W!DK%v@%>iw4w2&u!5zOMti$yiFg;`2orz~IiNr^wib&)SMJS_x z;@9gy_^TZ#>GE>9yLA8Ka<@^+mP;1Rkn&SB#jZ9-Pojdl@~C71h&n=^xZ2SZ@Z~AD zE03$8?xWL~dJ9)j6L8ZT(!j+$xkTr{&tjE!Oa{lT+Hft_`h>{7k2Ix%L?WR| zkSMNN>I6LnBszUol}j57ck_Iz|d zwCUMsZ|E$rj>9xpYSrj0-~B(qjyD$@EWY2 zBc0D!*&M|a=>YpO)}dSg7kkdUBh>1#HsO$;PxIRx;`?!Ly*1>m599A5CmgZ)!`p(( TZ()187b08-e+u>@x=;BJ!_y+A 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 7e0b405df6cea6de4212d1cd568712c69bff6b3a..831bb8ee8123d04282b0c542e36f73224fbae57e 100644 GIT binary patch delta 771 zcmah{J%|%Q6rP!#-PuiUFaAVD1&JcUS{%Z0iXbUsaVQwYT(!-ymzj&volTr%{N?$te7}G| zzNAa{-|YG)hj+nwjyU2tMiPful8{I%v?L8F&f+Atr4u?iwqhpT(8Y+Lb;Rjo#BJe@ zEQDTz&Ls4>(?9|Hmbn2n&h<{*mx*y2scI)J!)l#QETY7)8%Zi!7ljJ2v2QkR*J}W1 zE$WHpJXQX2=FU%N_rs|M8CwhG9D)QDj1x}B_5$bba~bQ5C~OpTCZRWD^&Na{$VM1A z&^cGkxg}1QW(1hwzm-wQ|zj? zjMQNBffyJ+>ZhG{(o{lB;eD?B&MW^2Dot@~WS`sxHwN!P&h( z>p{U3dJp3$Zr&4ept47h*HT$d<>-&}{Ez`OrKsCo;ae*_N~0~fV&(4TP?ZejDbE4= s?Ou}|-j799T>v+`k=`RPKP-kVD8Z%)yr$=_3V?XrGquhFc;AHChC>;M1& literal 1478 zcmZ`(O=ufO6rTOn@5(=M?EXN>p_s~GrIesUDIut_-5=`y*w`Ql%UUy0)}7VQ?5>G& z+Jg%!^dN&FDQ!U~wZT60*lSCAUxNYH6j!LB;{=IxvJ&AfTzKu=mVgVilmOuZ1pqQdnLo78t2T;KAT-Kg_arP-v!Y7`}| zeX{lWW(5qjV!33qHi{6x^wHoVEr}cns!AADWh_+{84;CeSjNgBI#sXiu1`?yRKJ3y zCYX%1)6_tPyrCye)Fk2#V80XSBX4G^Hye9%SUyb;fZY@5qxtz5F|I@@O!dx8_0CT9 z&fyHOn&s+-e_{^+J%OII{YmEH#J`bW9|PzI z^pgxbDw~g#`oZdpGyrg#s_)yFYeL`R$^-K7DY_6#UM}6VTCKP{O-!hJQ)F0bbzY`F zpq8_Tt=o?bk$P!7%)l!5ZBPLU-{1LDeU|+_|13Ye^F{dOR`}Hx=;57hKtKY-=3rt` z=D8NL9gB6$uStieFu8B})LREYvm2N^I$pN9w7GX?$XI!^xo_#==xX@g$lLjL$&$OuJ-ET6-gDU z`R;nJ++X-r3-jf(e0i8J2WwGou3PRc_ZNQI{%tMHRnBsiVXhL~jpkqLEk9X2Djk=C zPor4~**iEY92bI*BjZ|kr?=7H4vm#FV`XTp1ncKIDlC9^?c00b-3!)}`Tmh{Y>elR zkvDEUS?*u|e)Y%IP+dwSDNj@ew>#^$sYPoKh|_sRc*5gbub>jPElO&hTWU33uMUK^ zX~OReT*4CGD`5+c4*n@DB^Wb=in+VYC)~~C>~FIbm?AzA_Yl;%B1uw&O5y)Ygx(D= hON4HOmnA~EAb!r(g7nTg`mgHV`dfJanF7VM{0n9ta?Ah# 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 9f47806998a83073dc4af34f22d89f69dfe359c0..4710db065f0e3706247fc21db3f898a3c268c3b1 100644 GIT binary patch delta 102 zcmca0eN~!!IWI340}#9@;n~P-%*n_)*`8C8k!^A!=Sdm%B3__O5g&-)2NJiKGxJJ{ u1VCKL&5m4JjErWJbGT*Mj6ovCll!^77>y_2;tmCp20XHimYe-}niv6k>lT0j delta 103 zcmcaAeL