From a7f9b635566ed8f8e96c8b96aae289f2d75f4ede Mon Sep 17 00:00:00 2001 From: Yarne Coppens Date: Thu, 8 Aug 2024 17:56:22 +0200 Subject: [PATCH] When getting base board game, connection will check if board game is already in db and return it, if not it will add it. --- db/database.db | Bin 28672 -> 40960 bytes src/modules/data_connection.py | 11 ++++++++++- src/modules/db_connection.py | 27 +++++++++++++++++++-------- 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/db/database.db b/db/database.db index 9b0b041164b060751dde65b11c58f25b3e3342ed..79387f28d79493ceb4d8c351186d7f79c83dbdde 100644 GIT binary patch literal 40960 zcmeHQOK%-Vb{1({94YZkj37|5vC9~Yh6MPyq)6GKW-umczVxC@Qda07AnJBk-`irp z)DK=>0ogbn%s2tE2$KARU^W4QAj>Rf8Dt$`HbGWFkYA8ZR{6eD-S&MfN71UY)#g<-6bitzTXHr>XGuU*L=T`z9ms(>Je9-B??j`1}W@ZbzmU z7TqW;%66)AzoTPg&N7`8VVYe2WNKr7bM0_b9j>iE*i@H~Q`6V4C74ouytcowv$n4u z?H#H|PaZs&RoAcirttDGE3wjr&wD29bW64MU~dgCjl3Afx?_&3Ji73;vRlRNM2FF( zBlc+paK3k%fmDe%l?I9Of&)c)qy=KkiRjm-l!P&9e(`pi#%^2XGSyLTu4?Ds?;(_Uiy z!I;4`m;8KnOcO5|)v3YzYX#!36lSl_e0Fbg>c-5>#LxFG2$$ml@U=0e7=Pw8 z;+1N||5r@>ipun-pG-{Mc;}sopS?C7xdwh^a!iE=KRfMtrP^~zc>0RMeFIhK#P|M( zwdi&G&o{X&b+kDI90Cpjhk!%CA>a^j2si{B0uBL(fJ49`@Rbp`_RB5q&12Kw{W%02 z0uBL(fJ49`;1F;KI0PI54grUNL%<>MEk?lA|KDQaI@TNl4grUNL%<>65O4@M1RMem z0f&G?z#&j0;Oc*;3Jw8>fJ49`;1F;KI0PI54grUNL%<>65cu{Z;OhTxzl65O4@M1RMem0f&G?z#-reaP_~_0f&G?z#-rea0oaA90Cpjhk!%CA>a^j2>fOs zaPxVUmUj=kY1QfCqBh?|eU%#>g)eaPS(w<%xRg$O<)v{}l_pob1Fle7MQPGea(S8V zr0Qv!N4|QhaaGu^>gfVcqDUoa4c+Os3ln?<*OH!-Tq#luqhCNl{J7gbIo>*q3CpuG|waET%3J}_R2SB3xN!er2$y0NSmL6uOuy15yn{*27N4B)M#kAh7Qzg<$-1aVRnp& z6l>>}+Omr!Wx=-gPC9v7fu7vpqN^M$kj4%$E)|BAxR=e-k;-!8;TkMlb=P1WnKRzl zCTtbP#E^#{20`dm5%^4%_PU`tHL6O0G=ZMK`TfP#UHQL5ETN;UtJilAMQ}RlE4e;v zM<+=N($w^}!L^S`e@2!11XOulo#Prgpdr*}d5XLLa4#fqvS`WclxKrH2{mV)i3-*3 z1DCdrbmGYrqCrJ0ycAWtj41fBl3Tv!)sCv+Y83It41bAO4!Xk|*bgC6t zDUI3hCBPx1d#LM!9qph z2`22OkU!?>n8f579O)eTV4|>%uO*iTr%~lY2!eyi5bvMEypv*Hfe<3*y@sNCP{-$$ zDM~&8L@*`MdMjC29_*%_(;CXOV=!~B7FS@4iON!-2Da8zY;fhGNIg-o0&7N?+|!_& zw3470_(6j}qrf5P^LOAYS`03V%JYmN8_=M0ifRJ-b1ndu0Q&WEQV-C6~v2jzm@fLJet;OQ)1aM(2$`IzDk}IM=tY=#A%GS=!r)wq z^dW)#qyY5<1FV=RT2(~~wW63pylSE2!k|vpg-1qU^bC{?D^Th2GJ;hEw%QaV!X$!TJ$T3*x+gmJRyR{ z*@jFb?EzsQ$%1GqfE~U^uV}pj(iqAkjByt&kO8i^3l-`muAMLF5^)kTuN4cCErutm z!GSf01&23};U>XTx7H}8GW&;piIbmSv5%oU}Jqh|jq&r~QCXa#} z)uq;wp-Len*r=SJ#}-_{?I#76XUZkfgDel@F=&>T7>8?Y8S6(p zJG3?hXn>C_M%ZMz0A@{D0|@@cIE~Z=!2m({5I+PV^RWT!HrK8JvdfAXMnq8CCInDR zdL)(Bo>zf^{)j-v!$VQ~QJ6T29_tO@ETBOsEx>PXvy-fwmg#`~m#T_}n-Tq@Ntgr) zJ+F-hHYVx7HUT7T3U}K=Rhf!`_PU1ADrUf@rbkT5Ww8P{l%~@c=-{G84U=o?0ONg$ zWexL4(5)tlW-|GpzzMZ(Bi>kl2F(}`p7XZ$8&(ZRX$3=pVue^HqRS43sL0Yb#e(PX zszS6Fq*Sqj8^&TVNn2AOy0kOgNxiCiz23Z)On)v7=8#IxBcD@$)UQ`U(UBnAB&GE` z%+xv+FSPce&^wX9X#L-l`*6nz((`&b6`7z!2}bt9!W|wvHB`z5o2lj~7~Jt%V?rU?;^YorNx^pJk>qvj9a}ynSow z_R9RT3|aHnAVRJv7YgnN>znP)(OFeKe0X@Yy>%NtJ8kbCZa-W8F;*|By?SHtv_HdK?|C5vLE0gUh?>D2{;kf+2Md0&4 z`F#H^^B3<;efkHV{%~@Fe^=hwqs2Z!X^w>WFpS|Q7y}L%zENpMH2Dp-Shf+VhGW-c ztSzV|s30w}2|K-q&C?N7*jItuQ*5jt)2s{XS%fLhYm-HZP&NqkVXO!}2CWW6DCBUw zVmv^0fp;~c6x&hF>|C2`4Jd^xqF1zQB1x$iwM%g%mc+f~q0Bt+kwSySJ**)#s!r9U z+(?_)+<~J+rwdcml^0SC%w>aRU1mkP&wx?Sz>>6PF0~OOuQHpaoF})9_83wC(wCrM z8F_5yN0g7F*}0L+=W|Up(7VYjJ60 zwitahDU@swl1R%I5A}q=pn7M`#5lf(LS60aeqSfZ)Z}TiKE8u#h~BmgLy#uvP1lUk zww|7$i0>DxY6EQr9io}DxY(){MgW{uD=P$WsHS#e&el%Tlj*pR-oY7CHom&7a&*Kj z^fMCr4p0}bp~e`-LHVTc_aWP_8(_B>{6y%H(d4Ll*L<{M>dYq)Q`|#CY6q4G*&DSH zRqbHzqho}`;q{=d}q0}^!}Gd*vqIGM%X_*Ih<>)KYQ<%eqg*i>qq|c zrw7k>v)%h)@oPueAu&_`GI{mwx4$z8vH$SaFSp*B`S*9GKE3hj4;lwJ-v1o`W*wZD zqR2*li-yHqlMkY{%KbTUeaOquD$6BHLRWsYQ%vT#8i z)|A#yOETJ2Td~fB5wsxKG^u;zlH|jb!raSsU@L{98)nFq!x)VlxFeec#^@DjGz(-- zu8s|dE@~$@m*v)ctJSiOfeVj%hAKzXr7qNo@HD1F0LUfxj%QYf3hw8+XU$5XeO?%O zBGrxr9%!8@N#=}M#)JDjm zho+kt64;cY^T#HmX;!IAT7 ztDY4hhW>Oo?>dwk!9gVP{uUELZT z&;vKj(vn+lD6P?4AjtbH!JsM61BQtiS{hxakV21+`VH+{-Tx`Pw(A?GXo=!~>ZxW%-=BT~75m9ljKdFVl@nUp%h~ zwix;XMNrd7PN^idM%kb;gkpd8l84g1o_#M{&6K|Ye!T;Q!L%<>6 z5O4^*as>YRjlcPig}2`M+uvnP_`}I-*Q6=7)Iui)xkP91!B&FoL@+C!<5r|ScBG0v zl2f#)=;=35B{6qkw`&{u3)&c-&g||$fc!`51ony~U(m>5OLeQIuxE&~T(Z}JE*EOM zr!3_9>SpBQK-gVL@9Z)+bNK~Rd751&h8A?Ikj0rU_X*C?Tf|IRk_x*!*tbJkB8?G) zY~R;eDRkLFV6fwf31!<8%_2$n(PYADE!3}u1*~lMVuw{g0CTKGMte-$2xCc#frHvm zxM9K^=?bYVAsA9w_osM_0Ec0^c3yQe@paL?i`@kLjOmc%lTkE)P%L5Y!!%V7nf0$@ z1jrZ}x09l27lW({-5r}7Rx$VmHXK#YL^-0$TLl3(Ri&oHJ9U{NYQfJ? zON*x_+*BMi3{aF{n~AA8CLVm}PCOXEj(aU5?&1hVJYyxB<%3BI&m@>Ph2(L7i2YOB z9jOoXi8!WNao~6f6HzoW>jo`oq$Z6kkR?BsLsjNX&dGpZobm%256~$tzj zDP4Ay+ID6?P3l)rHghSSi^R5V%r+a}j8SaCqzNP?nwT?tu3+Fis)W82D$<-Nm3eZt z^O$W0I29Iee#OHbn4<+xjV=Q*m(?&Ot!zLKnhabSBLy#DJun06XUXO)tzd*$5J#6& zs~jH=K(JfvZ8;DFL6ry~IAMUbF@NFF#nhles4#t^gc`#h1x>N(&vP?k6nw#pbQml4 z&#~)?0~@v=9ud~w5P`59(2&4)(0b(f0pj&V5PgdoWah`Qhb+wIfVCfM7A zlCfy&*+x%psC2e30lyg+A}{*p8PN-wW*2 zRS|r4hf*8*XCBd&Z8Ui^s;GNt9}+&auApvmvSkkHip6XM#2a#ij7UP8=_e&RL$Q(* zQZSTJ2Zvon9eET27W(e6SiKobboNc*VQX7j*pmFv36U${S! z2EF%hhxcyXp4;8)K78bd`=9u?&L03MvqOFKU@Py$$)n}?&eDs`evA!@wMYGv3->3o z#P0vU_uf(q|IOq3*CJxLJ+XK4@yUy4Yj@KAM^$!qdaoa6dS&m!bwB^;*WI2NA!h2o K-ku)r|Nk#7m_Km< delta 29 lcmZoTz|`=7ae_1}8v_Fa`$PqMMz)O!3-}i)1S~QT004Z`2n+xK diff --git a/src/modules/data_connection.py b/src/modules/data_connection.py index 3a4ae7b..45a1b26 100644 --- a/src/modules/data_connection.py +++ b/src/modules/data_connection.py @@ -4,9 +4,18 @@ from src.classes import boardgame_classes, play_classes def get_boardgame(boardgame_id: int) -> boardgame_classes.BoardGame: #Will check if it already exists in db, then it will get it from there + + boardgame_in_db: list[boardgame_classes.BoardGame] = db_connection.get_base_boardgames(boardgame_id=boardgame_id) - return bgg_connection.get_boardgame(boardgame_id) + to_return_boardgame = None + if len(boardgame_in_db) == 0: + to_return_boardgame = bgg_connection.get_boardgame(boardgame_id) + db_connection.add_boardgame(to_return_boardgame) + else: + to_return_boardgame = boardgame_in_db[0] + + return to_return_boardgame def get_user_owned_collection() -> list[boardgame_classes.BoardGame]: diff --git a/src/modules/db_connection.py b/src/modules/db_connection.py index 71d5019..2fca9bf 100644 --- a/src/modules/db_connection.py +++ b/src/modules/db_connection.py @@ -16,21 +16,32 @@ def add_boardgame(boardgame: Union[ boardgame_classes.OwnedBoardGame, boardgame_classes.OwnedBoardGameExpansion, boardgame_classes.WishlistBoardGame, boardgame_classes.WishlistBoardGameExpansion]): - session = Session(engine) + with Session(engine) as session: + session.add(boardgame) - session.add(boardgame) + session.commit() + session.refresh(boardgame) - session.commit() +def get_base_boardgames(boardgame_id = None) -> list[boardgame_classes.BoardGame]: + with Session(engine) as session: + session.expire_on_commit = False + if boardgame_id == None: + statement = select(boardgame_classes.BoardGame) + else: + statement = select(boardgame_classes.BoardGame).where(boardgame_classes.BoardGame.id == boardgame_id) + results = session.exec(statement) + + boardgame_list = results.all() -def get_all_owned_boardgames(): + return boardgame_list + + +def get_all_owned_boardgames() -> list[boardgame_classes.OwnedBoardGame]: with Session(engine) as session: statement = select(boardgame_classes.OwnedBoardGame) results = session.exec(statement) - boardgame_list = [] - - for boardgame in results: - boardgame_list.append(boardgame) + boardgame_list = results.all() return boardgame_list