From 5dec27a887f3f83a3e4c4f67560a939729244483 Mon Sep 17 00:00:00 2001 From: Luckaskl Date: Tue, 19 May 2026 09:32:48 -0500 Subject: [PATCH] uso fixo de json e troca do banco para postgresql --- .../__pycache__/games.cpython-311.pyc | Bin 7159 -> 7026 bytes app/api/v1/endpoints/games.py | 8 ++++---- app/models/__pycache__/game.cpython-311.pyc | Bin 1423 -> 1478 bytes app/models/game.py | 14 +++++++------- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/api/v1/endpoints/__pycache__/games.cpython-311.pyc b/app/api/v1/endpoints/__pycache__/games.cpython-311.pyc index 488cfb63190cbab564aba980d2b9ac242c42f0ac..2936832c48a7442093dd4d261f54d35259c0a27d 100644 GIT binary patch delta 854 zcmY+CO-vI(6vubA-CcIOTee?dl~toAQp8A=4+AFB@~L1YQW4Rh&?N%$<+kBqmI#Rl zL=(^#gNdlsm>PqJnkIf+J?g301k;OLJa|!~2Tn%clpr|C`_1gz|4iop=B-x!tW=&U zip1b}_}n&l`K99Eog98yFn&ED3^UJ|);RciH^lR|!3Cb<4w+n>#mr8)@04KGRUnz{ zC6YkxB7rGa0sPr4Vh1_+?%FPymj5)51di~zW8Vr6h*&-F8D~w|Q_Sn+I%D$nOaia4 zh_N;%1fA6_rl4CFEbWYs3#IDw>Ie~GTGYh6$mmF{XJ8}>uf+aq0o>umh`vTlGApuu zwt1%cZumy%R%o(eMUa0mggf#{^~}q688v`f*)iKX(|XUHhWFA{BBdH^9DyA!H+0F0 zC=Fm4pAwyiG5Mn+=y@imi#a1UXj7`T2Jxm@UhhK_Ls{!!bacc=vew~Iy$?WXBrT9t zs%&*AGD<00pvYb=ox)`?M)Vt8v=2$~j=B7_TAEQyQ%m*|mNda{wQ^qz)wfd6XEp2; zWfXpd&uX;Ob?(qM=yvQPoiOD{@Mka^u|S#4Egr^Jz$ReVo8TbKIdAXRxfgtb#RtMz z8xvMtFs-$SL{vi2loBvSEnq`w`Kn@~ku;q}isi%Etx-}m zF`5{?80Wx2NJunrKq97^a3tOg2Wf4B*^3_Z;=vd_m>3Vv6hY(LeZRb!`OnL|nfI;v zM?hMVB#|L@Y{@p3c`iADOCTdN@$Y3OhM8ru+yZU_d$8oF!oz@PWB3iI!}mb7Nf)u~ z@Zg}$EkZVHdc;7}ycw^6nr#g$-~+Dx|EbKos%kU8U@2ve3QpEqiZsEA-EyrDK=W-T z3p$uZa*k!<+cqOW4)R$6f;sabQ!m7(O?BRBleaFnDTLTYo55ensOUP9iQE7qskE*l z16)!kkg6G6GNI|nN|*RlI(1pat=3WT6d8MnYaj7bYt_vt`%ZSx+8^5I<8$Y?l!k)R zuriWY{6)pTrL+~4wzb&0do4!4yb>uYk-XeflzZ;-9|Xr&hUEwU*?)0M@f8%`%Zj|x zQdC;Dlwd&#ZnpQWhY7a-ywYD(`t$NYQ63;U?ARmTVnJ?B~l1}!P_ z8c$fr;SJkciH9J|L!opPR=jKv*h55U0I2GTR2u)Xcd^|#Bn508WEvfz=*D-XRyOJT@=1KbzCz9qD|;JLOpanN)e;jEwWxjrLBK&trx#=Ul0>SMbm3zcwfaiag}?}n0NV$ zE`RPu#V0mO8_D3NCNHq)$ diff --git a/app/api/v1/endpoints/games.py b/app/api/v1/endpoints/games.py index fdeaa56..0b52a51 100644 --- a/app/api/v1/endpoints/games.py +++ b/app/api/v1/endpoints/games.py @@ -27,10 +27,10 @@ def read_games(skip: int = 0, limit: int = 100, genre: Optional[str] = None, pla query = db.query(Game) if genre: - query = query.filter(Game.genres.cast(String).ilike(f'%"{genre}"%')) + query = query.filter(Game.genres.contains([genre])) if platform: - query = query.filter(Game.platforms.cast(String).ilike(f'%"{platform}"%')) + 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] @@ -47,7 +47,7 @@ def create_game(game: GameCreate, db: Session = Depends(get_db)): raise HTTPException(status_code=400, detail="Um jogo com este título/slug já existe.") # Cria o modelo no DB - game_data = game.model_dump() + game_data = game.model_dump(mode='json') db_game = Game(**game_data, slug=slug) db.add(db_game) @@ -74,7 +74,7 @@ def update_game(id: str, game: GameUpdate, db: Session = Depends(get_db)): if not db_game: raise HTTPException(status_code=404, detail="Jogo não encontrado.") - update_data = game.model_dump(exclude_unset=True) + update_data = game.model_dump(mode='json', exclude_unset=True) if "title" in update_data: new_slug = generate_slug(update_data["title"]) diff --git a/app/models/__pycache__/game.cpython-311.pyc b/app/models/__pycache__/game.cpython-311.pyc index 9432483dd2e602a574306165a60fb3c28b9c2fb7..7e0b405df6cea6de4212d1cd568712c69bff6b3a 100644 GIT binary patch delta 392 zcmeC@KE}dw)&6vdRw9L1c=62-y@ z5@*U`&1H*X1GAZP*rV8)7~C0BSXvlTSX0@SF*7i%24V<^;z(f*X3%7N3F2z9++uUi z&neB#yTukokmwf_DQ<|;B0-?-0PPoOa{vGU diff --git a/app/models/game.py b/app/models/game.py index 2cabe14..90f3bb8 100644 --- a/app/models/game.py +++ b/app/models/game.py @@ -1,4 +1,5 @@ -from sqlalchemy import Column, String, Boolean, JSON +from sqlalchemy import Column, String, Boolean +from sqlalchemy.dialects.postgresql import JSONB from app.db.database import Base import uuid @@ -12,9 +13,8 @@ class Game(Base): developer = Column(String) active = Column(Boolean, default=True) - # Usando JSON para simplificar arrays no MVP conforme os requisitos. - # Em um banco relacional robusto, genres e platforms seriam tabelas M:N. - genres = Column(JSON) - platforms = Column(JSON) - images = Column(JSON) - system_requirements = Column(JSON) + # Usando JSONB para melhor performance e suporte a buscas nativas no PostgreSQL + genres = Column(JSONB) + platforms = Column(JSONB) + images = Column(JSONB) + system_requirements = Column(JSONB)