From bf50a266058760b5db492a569c1a6e2e1982227b Mon Sep 17 00:00:00 2001 From: MrWaradana Date: Wed, 8 Jan 2025 16:27:10 +0700 Subject: [PATCH] feat: search and items per page get all master, year and equipment data --- .../__pycache__/router.cpython-311.pyc | Bin 4895 -> 5193 bytes .../__pycache__/schema.cpython-311.pyc | Bin 7878 -> 8536 bytes .../__pycache__/service.cpython-311.pyc | Bin 6001 -> 6608 bytes src/equipment/router.py | 19 ++++++-- src/equipment/schema.py | 9 +++- src/equipment/service.py | 20 ++++++-- .../__pycache__/router.cpython-311.pyc | Bin 2574 -> 2574 bytes .../__pycache__/router.cpython-311.pyc | Bin 4282 -> 4644 bytes .../__pycache__/schema.cpython-311.pyc | Bin 2473 -> 2763 bytes .../__pycache__/service.cpython-311.pyc | Bin 3330 -> 3667 bytes src/masterdata/router.py | 44 ++++++++++++++---- src/masterdata/schema.py | 4 +- src/masterdata/service.py | 21 ++++++--- .../__pycache__/router.cpython-311.pyc | Bin 4256 -> 4595 bytes .../__pycache__/service.cpython-311.pyc | Bin 3312 -> 3757 bytes src/yeardata/router.py | 37 ++++++++++++--- src/yeardata/service.py | 27 ++++++++--- 17 files changed, 143 insertions(+), 38 deletions(-) diff --git a/src/equipment/__pycache__/router.cpython-311.pyc b/src/equipment/__pycache__/router.cpython-311.pyc index 201d5fb45cc291f70367f03c9d0fc61460a19e9a..38447ddb01a7e6630ed8e853ece7ce8dfa1076bd 100644 GIT binary patch delta 2126 zcmah~U1%It6u$Gjlg<7n+3aS!n`G0Z&Ga8k)&6K(nlzExrlqOEh%DQkn{;7rvfh~$ z(jOCSQ7HwLDYSyn3KEsJB2@8FeDtk_J}iR|f(W)RZmE6orJggho5n=(X70E5ocX?c z&pr3t%=HaF4KI8VjfM#{dGwtbAx_AzXtY{;bMQDU5ptE7#1t&T1Vdn=Aqr@Vmc(R3 zW{ROO)lgZ;2!UTRWlLjiMjHzoVc%A)b`~)rENVnq%!skL5%>L6wGu38Bw2^i!8(mj z)@5|Dl#%i$4_VzTZKPSo$oRHq^{}jw^~Y`2I+inX{y1#qS+CJ65Rp)M31Yt4+5j>7 zXy1*bdr#;L5wo54(un&|$XY-Qnb9QysL+Gv`(pp}O^arnX3Ydmn@K9t{+pmj zp4roy*?Cb}wfMk_#k*kfC@j7%ow`U?@z$^4b+>p0Tsch()3TYlxO!WIpcq=QEq~@A zRP@l8nWedD)m*nmwE&GGn@WhVZ;e7XV<(8- z{{SV?fyMVs0-@I19V z#~A#^Dh_3Ku}XQdTAHDrYSR)gpDxSG=Rt@H;|tIq8*Ww2jEm=_bHXiQ2`D$0X&0bk z&q}Y6tI~V&dD(%gZnbl=DczEnL|{V?8pN--AIp8+y3F(7;(ZAH2)zLA_wx3=y2z90 zz)H}SfQB!halJTwt5&HpI_nh8l2fv6+-E;DS5d~_7zQH&-KGG)!`~u#(n0cr_0D`f zJyegU;AyledG!$i_!FT)l=OeY;^dPEiR9|hoO@Y075j?t%`h|95jMI{mCTkcFdTwz zM*)H*8!A!S7Ds*7nfC2xAxi4Z*4TM>QhliUo8Rj03w^jSfYYo8&{d9Mb4)uA0eBq~ zQ&Y!^BRfWlM<=I>hbB)R9re?~aTz@n6&HD2jR+|JX>Pa z3pXjnQ}et7gu%%*4;W|Sdt4!$$@$AC0`iIo_5}-Egchiq*ge0oI&q5Mvj<_e;FFH9sUj z5WGYFak+D`Ze;>2>RyUnU%-0PH+iZvU#-l}aHMfOJufs}vYk@3!WDEamk-zQrNZV+ zYH|D|as2wgO)sCOti&Ve!9wCO1o%?HOg80jSIRUbcfOHuWkGL^i)1qb13(u%B^))hzHsO3 KBokyj>%ReyPSTA4 delta 1806 zcmZ`)O>7%Q6rS;V*Y?^Q|HVH|oH$NXw+587B|%lGst8J<2ql#WtyqLC$2&_(QRzgA`B;XWOap{TocI_s0#CrVgn|a^& z=FOWK`@2Ios=dz*LnrWjd%Us!z#!yz>)B)D6_-LqkSc0 zIKD?wwMs9O+QeU2yBhVvFSQ)ErpRSwdh;zsqh(KPwmENaH0i_Y5)uLX3ViRMlOM%% zbFQ-Evs8<^;hlbqzC%8x*XR{EF_)BcTtH<)?LAvsDi_vA8tl}wr!25vCF3f3g3>;U1~TE zb2qyDT~D`G>kf0AR(nI1B7bWKfgujbMD)Yn1e%ioHBF45ts-auUgm|Bm9zEv!}Il} z<(2yBAH| z1(_|#o?fPt@`he4U`72|YvEwR1sr%v{-762esNMw!5S{xsgHOX7{_ENzCvd<&&Tt$ z;wO3nb&nxD4glNfj~>T?1$iw|?)gQC4i!N>iG*VSp5E}sjd9caerU2f&vrw zMjg?dorC%|RvQkR9q_YAz$@pak?_#pYzroG^2=1dmq)LTUjMo}ehoZLw7V`70xzY1 zS3JdWg_uWjxYGt3Pl=~=x~^D64i;hP-aUw(fRJ6AofK!mix=Jb3jS`k6-wznQrN;) z3tou#$o$s-w_oLZ=~4M{`kQJ$S6_(*%Uo_vvh?(0*DFnd{H!rkO5im9uH!I2#{E@29Rh#f;ZGP z8(cd~E(j=J;a0i8q6tJ7!6c9YF&d=RPg8jE6q#(s_{qOzWVup-B8(uz&TUqb&1KAF mVRU5tz<`~cq5Bam^95O+kC9R90|O>8L+c|*^a~a#uv-AYd5ZJ^ delta 227 zcmccNbj+4-IWI340}#YoC8iq+OyrYbD5p^Z(CrdQhHLE6w`G5_{(014CcI=+nRQE(S zPMno2nv(~cH3uVjP=kmPSdaxlZ(f}ZBUxGk3tkj26B0e-tgz7@^C^LKb$Ai*@Wq^oT3yf-CBxE9sIe z>oR8Yh!b^VdW_?O6L%AO0&vlioE}%v6<5_&pk*uSXl_zZ;wBTuoRpi^({4u3aKpHh zb#r=-;|ZtN&FguN_c(oSzuphHLh_bM1}u#Xk|ClFY;PEmVJmq)iclr;fLD>N)QYH& zSV=2=1#{aB*=1#!eG|-;|ER{S+={G^a;099u83A1ObeXuBZ}2aGT^Qsc#m=302u(C zL7;bA$z!NE^e5X&Q4Zx}#3801%7@_ZlTeyb1mN1*R^t1}J_s#$Lx-B}6W1#* zLU@Qw=oDy~u=o%G#$a89b$bB^->J_;#YTiKH^ks`v2PEHb8q-;llR6MX2*x02&&Qk z;AbH}W#LBTQ|PSEgs-5>zJYa5%)BV zyoa(`bKP1sl+M-(T?%DNyt?CiGAI<-Xcp)=;9+#0_+{7~eHkcrLhnZaf55kl{*ECv zyE?w1jI@=J<(aLh+Cid}*i7|aRz6m4Dyh|hcKYdWPi`nX4idZkOW)R~9o^6X|$die;Q3?5JZ6{j!4QHml} zg1*#fktgUdaOf^}Om+nz58W)tCM9rD=n-HZ3CgK6@+4PW`z1As3$FkkMm^#izEA0E zKyBxnd7_5{EmO?!Y|8aTi}^VY{1d@k<`X=*wv{R38CKR%dS`)95=Lx`4l+aTN$6JY z1Y^tqcxYqL9q<^?H$hSfj^^Iy8!PS!e$5qTd5d%#Li5f#hGQ-ecd1mPE{%hJnDeMv zg8dk886GKlgr2ia!uy3D06FEorUw1J!_Dqn;4udVO)(*B^icMf7U8|28AhacxHD^% z&@AJp7~iP-3-?3h7+dgs8cKeB(IKJe*g!o6Y|7q_P_U~$?>L@udc4Ub?2No*lqa7h z^loelE=b)W)3gF4yXoF<06PN4coQ9H{hzsso@niyTWG4qXT19Z81(0Vdi69$FX36- t5j33Xplz_39p;?P(zD(FdCBfK zGs>1~Rulv;MF#a$*jwpIA>hG_p7oL~3ti?WA}AhQ=}Aw1?`?~8FTQ#6z3>0~ecyX; z_S|3H$(>52q~Q4TyuaS6D9SHFcr=WM%!5N@zEY?{NvLq*5w3bF&v`knc^VOVHOzC} z(~-|nEiCY&SLB9gpq!_ASmLH z57e9LZZ7@VKBewzVwqq;>W#)V7AG)@I(`^-=r~9?8^uxgs+&K8DKRZzQfLa&LE`2> zpvm%E34`rS2Noq^9EsgKoesPpY=w0euVG4f1*MnpkKRJ^8-6>=uVwp--d=g7y@mxTl%}RVsS-3_MzM18GN;5qeb3Tk8;)XstK}%qI46+^o^YJh)q2)sQn*FZc zlaABx>?P8Mpq~ z!R6oIV8AkUNI`a0W;$vpydm~GkK`CItOhR`yonYs?KM7nHI>H)8PKFknziKVN7}&WJqXlFHMU4VB%H6~L>) zAX_Wi^-u9-M3RK857$u?*EqU`^e{&VIZ&RR{og!Lo|-*A)0O7;?dwD%r*;<)6 list[Equipment]: """Returns all documents.""" query = Select(Equipment) - result = await db_session.execute(query) - return result.scalars().all() + + if search: + query = query.filter( + cast(Equipment.acquisition_year, String).ilike(f"%{search}%") + | cast(Equipment.assetnum, String).ilike(f"%{search}%") + ) + + common["items_per_page"] = items_per_page + result = await search_filter_sort_paginate(model=query, **common) + return result async def create(*, db_session: DbSession, equipment_in: EquipmentCreate): diff --git a/src/equipment_master/__pycache__/router.cpython-311.pyc b/src/equipment_master/__pycache__/router.cpython-311.pyc index 5f0cfad240c841d9decabd77e9a57cf15a266102..41bb61c90f87d4bce80a9079562c3c6cb5d11c98 100644 GIT binary patch delta 20 ZcmeAZ=@a2z&dbZi00hnEbsM>vxd1Mb1RMYW delta 20 ZcmeAZ=@a2z&dbZi00g<3WgEGfxd1JE1MmO< diff --git a/src/masterdata/__pycache__/router.cpython-311.pyc b/src/masterdata/__pycache__/router.cpython-311.pyc index 732685a6124ea5203c795294157b04bf2322617c..2d6a93fed82dbb4c4e249e6935137441dcf060cd 100644 GIT binary patch literal 4644 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 QQq(mMmNr;BU%9dHf7hTpD*ylh literal 4282 zcmbtX&2JmW6`$E%el10cq9juyC2MUNRfxorYN%g9nnWM5D>b3@Ww%`jU97k(i2|1t zW|y|?Fo0ketqT-IPfd?Lv}s)HkV}Cab?6_k0(cM>FrcCc(A;P^x%kxgcKNZC>{xJD z!#6W;-n@A;zxUpZ{vL~o1ittGt!(}yO2~h()BGZh#VtY{u*KPreg=Da3_tJFy7c4*r^S9FoY0tgsm3^H41b5lZoOYi=tCQV)^kehFlasB zT-#r}cD_n$Qjci8dTJx6^_|i@0-7bi#%5bPqrF;E7hUaPt^btv3!pvG)ab9zsvS<_ z+$pUWwbTm94t$LYv%C|TUYuVpS1g@5v7fE3E`G3^*LSQ!x#R>*OSLNI*AxY*BYvcs zAT_62YF2Ri+Py_}vrtmqDe*RUSyweD(eBSOUA1&S=f;i(oNU11H+9Pi0a4Uq(Fx`~ z$za7DcY>N;)IpAO60>E)D3=yhrW(Lurjs#smF2gTjY1Lnidklsvg4VfgUOM(^%dPT zVKdN)&Q=)HOV$ljXV6WoSZYaAnYOH(JLQt8JGjX>YxESO4C{h1?vi;tgXR~4#(nrb zy9wmyghG&7zHy6h3KF6PG-?U$et}lWU+Ev|eF))?`J3cZ{w1 z1m_`X<$T2eyUlSY;2M>Co?_bx#BrwruahhE2yEu1Jv ziOcl>-xYjHfP90bPWV9Z8E7MS6B8e|*HQ}FCyuDCE2amo6YChuxAF|k#KU*N`V%xx zgHW6c?1+~WQ^PO7mQLCBBVdW~P3HyOg34}TKh-0HL z&MpCYJ~}PoDNDBt)|O;#6-=q10sguvmCBZ+?-opJ9Po{LfvM!dMKL@qwNPXk)G`Dl z8(^4}8Sb0~fH+BvYh`M3O37VcRjyvYk(+ZJ;t}6o+Y#GmXyUdcNn#Stj&}mh#(|lJ zpScCZ!}+UJ`r-CL%ueMFQ@L6yXZM^edkaU={yGr?;*)sh$-w#A!1s@Oe++nci-32x z2zYmkfOkavRs^4Un6`hgY)4lPqbs%OiY=_Li)cy*&LyWS??tpyfsoF(umH&x>LuuS zs8_jdXnS9kDy@LE@Q51UE4_iYFnpTQ{AttyQz4gaU^)SUcL&{A^>SKgq3r02t0^dW)c_1D}$0KjnMke<@ zstH3+Qp2C84}NN=mJU-(wbYW`bF%C$d=gmCyoJhC@&>J=c4*qDW&yD1tCh5&X~xYS(1hdgc*k#9op z&G$q9BapxlHSuY6_V7GDV|doXM0%^~NZ=%YyY*$-UX<+U}dNduLyg!J|EYS@^=R#koUqt|rde!V3yGkA3OAgY8op zCYK#`LL2brPp^e$u;dd$)!(e5I3mZX#mz;a)J`cYG+A2l;U3L|Ccv+cM z2#`8YDLp1r_RGsL8MZsi5m~ceRgTC{?6Z|)lCxh_j>wqZS&qmXc4s*)a~w%N82o+a z51GASJxI9l@6z|u4`%F<343y`HuAw<`jB3&(W`YXNQ3spD|G^On>^(Sca1j3>&b=! zyX(9?@!mnaHgO#lEY|2^oeR@d`tVnEg7ufCSNkdIS^`}S(fT=5mbsUCuxv|{U!1Q= z@9$*}>2!@w*ExYM)6XODoPpY&S#C7e4X@#+sC5RkHYU~M-({jm6%N&6eK6|P_RS5i z0jcsfoq-&Rqkif$+#O2e62td~?d}Wqm6?NgYgd-{h7ajVjjq(WXv1=>aS5#b6qT)l My$wgP}b)fhRH3AI;<%yHVh1tCo)QLv8QsR zvZb&>x%Hf>tUxXskjs$59?YQ0aZA8AvA86)$R)8P(YYu!u_RS5q=*+NUBnL}Ku!a@ z$xoB3NDRag2N4n=f*nMFRY`(aQXm4XUK+##dqf7r0y|j_#8RjSlRyGwN^w4rXh4ED z1VksWPDozhazQ}zqJZWV0nG-N4&@6hnm}}sMe~N3^n}zI&MQ6W5IVzng~$a_y^ErHS48!I(#028^nmChn7qKkp$Bn|!emWW%Ye{= z6rg|oG?~$ThURP~kgGui$S1`hA0u3SgN38P1!AbuWCgZBBeXzb1L*|^4Vs}UAPEqm zIC(Lf5*s*>RDdQ(PJY4`XoF^o21qdrOb1r;)IqW!LUnQ>y8*;J^~uZGv-A`|GGIS| z?F1`Cb<8ggo80`A(wtPgBE8A>99y-R8TCIfU=kDRK7vHQAf$LE%W<}|fE*713(b>H delta 435 zcmX>tx>A^TIWI340}veJO-$$8$orOwQFHQdre;RI$@R?gYWzT%TdZk0`H3Y(0zh_= zAc$ZF5keqB7(|F{KEfQ&$R-0~^Gx2!W*OjIl$uzQ>bH`)NE9R}1|q~kgfxf%E0hJX zTZlX-=wLk^baF&aIOjxO65vaka95`~?8LrA$Kr diff --git a/src/masterdata/__pycache__/service.cpython-311.pyc b/src/masterdata/__pycache__/service.cpython-311.pyc index 70611dd179d267d3b68b4498e5eac366e55f0ff0..3572a30e9d462c3b779678812f395e2967f5227d 100644 GIT binary patch delta 1406 zcmZuxTW=dh6rS0e*VnA=#JM>aE*5eMQ5$iQLTHuH})7Iy70yJ=N$ zu-jBsUjWe+iUh6N2L!4RQcz#`3%uFX64oLlOS}}sgQW@~^@%gH7)Zr<=FFUL&NnmX zvc5ENH-Gl4WHN@Jy?Ww<&2J(I{lb+&6FZ>X?}6Ay1QBc_2bZuTl_bn{$(9|Zq`+Dx zimf_YNfT?;jyQVhle4o8M07jl43&lekJ2QGQG>*3oND8PThN9^5|@=ynj}f;Iu=$# zG(!wwnLT8wlk{b+G%Rc~RNqiY7MLSKAEp|~&?uZX0$47*?Ibn8Czs zMJdouQ=3-2KsyPuM~gU^bg9WITjdSQ_9!d6HRhGK%}uLne*0$|)`i zFH6JzZZzkgS8@iyb?I}6^bPq-jL_HEeZIV^KU9+jR&~E@<0hxr$(r~ej7HJ3;^R#VrjmmR85Bls%2a6 zP^JO`Cc;}z6utynrRF%bD$8+X6ojjRm=%qU!7_+!Qm<^yRXwKwxrbFCGhY%BSnv-7R&D)fUhAimoOl~!`~q265U#?wmk6r1qhRDX}MS$IxS zVG;jjZRV(OuK-98b4(YKPE5~qd0fDy&>^kDs0lkq0DQ#1slBaDz>3Y?8H&u{*(W$R z;!@A_JjRNk4T3hutqT6SUMz^fXgk|*IAsgm28R0~h%hXD9VN#7&-6V!ac4R@iPv~e z0`>eBWt3%L&3GWg)8#NFDGu-~JoH$|Ez~l526h(xM(kpPKejj)#N2mn)2?h$=R%lv zUX8)9%PRBS<+n_i&bySIvnpZg*$nK9+JNHbG?VEZiE^6eUD&p&n~eWE1nEO(RBG^K zUY>!$akH`GZT)j_g5$Caf#RQjAX`;0P;3hTUMwQQB0S>xB2i4ln#b>fz66!KW7Fg8 z1gP*~Aomi;zKk*MqC)HcdJh>(Ep({+KgBOV delta 973 zcmZWoO-vI(6rS0i*|ysjTA;N2*h0}{B{tzg;!lhwO5%lscraCh%g*qZU4hv}gTbI; zVxlI-%)u)+;|)W?-MfdXc-a%iizFVJaKnplrf?8vci(&8dvCtH_h$B6-?N^{_nAxz z!MgHeYW6ij=%)n7%Q`X+cEEUtD5BU$0j}dft7{lhjq1K07P6DfL0Y=pH z-%eK66U?SbmZd3{WJc+j8O;!CKR4=a6yh@)O@rMoZJJ?Z#-LfiIfdJp0X_@z+rgJt zKH!6#9N-R`pFmE>zT|bZm`pIAc~MNRfsWWdM%&l%XN-x+>mwu$NjxKN=(kfvFeMD< z#j;%xpY%K39zeA)NFBZn_zt$jBIyzrQa##ZEIuZR+8P!MTCc9HX=0BIi5;ULHc3`A zG*g^2yT`{JlgrHt@NSu6&9Z0;(s&;rxhcE_ z#dV5ZeYCCo)h>Ur2X^g&hB3fPVvPJIACO~kA}(6xR%iXj~%D&leGMvM;uOOJSI zEf6_*Ufn*l%D7SiJGMd=xlzRVARvddDyzz@esMnOR9ieNOH}dAEa+-06%{ z;j-`g-W&^7TO&0f5Szgw>`>#4NhqT(m-mz>WRyg!OY`?Mx0v*MI;3 diff --git a/src/masterdata/router.py b/src/masterdata/router.py index 4b9773c..6307275 100644 --- a/src/masterdata/router.py +++ b/src/masterdata/router.py @@ -1,8 +1,13 @@ - -from fastapi import APIRouter, HTTPException, status +from typing import Optional +from fastapi import APIRouter, HTTPException, status, Query from .model import MasterData -from .schema import MasterDataPagination, MasterDataRead, MasterDataCreate, MasterDataUpdate +from .schema import ( + MasterDataPagination, + MasterDataRead, + MasterDataCreate, + MasterDataUpdate, +) from .service import get, get_all, create, update, delete from src.database.service import CommonParameters, search_filter_sort_paginate @@ -14,11 +19,22 @@ router = APIRouter() @router.get("", response_model=StandardResponse[MasterDataPagination]) -async def get_masterdatas(common: CommonParameters): +async def get_masterdatas( + db_session: DbSession, + common: CommonParameters, + items_per_page: Optional[int] = Query(5), + search: Optional[str] = Query(None), +): """Get all documents.""" # return + master_datas = await get_all( + db_session=db_session, + items_per_page=items_per_page, + search=search, + common=common, + ) return StandardResponse( - data=await search_filter_sort_paginate(model=MasterData, **common), + data=master_datas, message="Data retrieved successfully", ) @@ -36,7 +52,9 @@ async def get_masterdata(db_session: DbSession, masterdata_id: str): @router.post("", response_model=StandardResponse[MasterDataRead]) -async def create_masterdata(db_session: DbSession, masterdata_in: MasterDataCreate, current_user: CurrentUser): +async def create_masterdata( + db_session: DbSession, masterdata_in: MasterDataCreate, current_user: CurrentUser +): masterdata_in.created_by = current_user.name masterdata = await create(db_session=db_session, masterdata_in=masterdata_in) @@ -44,7 +62,12 @@ async def create_masterdata(db_session: DbSession, masterdata_in: MasterDataCrea @router.put("/{masterdata_id}", response_model=StandardResponse[MasterDataRead]) -async def update_masterdata(db_session: DbSession, masterdata_id: str, masterdata_in: MasterDataUpdate, current_user: CurrentUser): +async def update_masterdata( + db_session: DbSession, + masterdata_id: str, + masterdata_in: MasterDataUpdate, + current_user: CurrentUser, +): masterdata = await get(db_session=db_session, masterdata_id=masterdata_id) if not masterdata: @@ -54,7 +77,12 @@ async def update_masterdata(db_session: DbSession, masterdata_id: str, masterdat ) masterdata_in.updated_by = current_user.name - return StandardResponse(data=await update(db_session=db_session, masterdata=masterdata, masterdata_in=masterdata_in), message="Data updated successfully") + return StandardResponse( + data=await update( + db_session=db_session, masterdata=masterdata, masterdata_in=masterdata_in + ), + message="Data updated successfully", + ) @router.delete("/{masterdata_id}", response_model=StandardResponse[MasterDataRead]) diff --git a/src/masterdata/schema.py b/src/masterdata/schema.py index 5f8191b..63c0a13 100644 --- a/src/masterdata/schema.py +++ b/src/masterdata/schema.py @@ -21,7 +21,9 @@ class MasterdataBase(DefaultBase): class MasterDataCreate(MasterdataBase): - pass + name: str = Field(..., nullable=True) + value_num: float= Field(..., nullable=True) + value_str: str = Field(..., nullable=True) class MasterDataUpdate(MasterdataBase): diff --git a/src/masterdata/service.py b/src/masterdata/service.py index caa06a7..4f3e9d4 100644 --- a/src/masterdata/service.py +++ b/src/masterdata/service.py @@ -1,6 +1,6 @@ - - from sqlalchemy import Select, Delete + +from src.database.service import search_filter_sort_paginate from .model import MasterData from .schema import MasterDataCreate, MasterDataUpdate from typing import Optional @@ -16,11 +16,18 @@ async def get(*, db_session: DbSession, masterdata_id: str) -> Optional[MasterDa return result.scalars().one_or_none() -async def get_all(*, db_session: DbSession): +async def get_all( + *, db_session: DbSession, items_per_page: int, search: str = None, common +) -> list[MasterData]: """Returns all documents.""" query = Select(MasterData) - result = await db_session.execute(query) - return result.scalars().all() + + if search: + query = query.filter(MasterData.name.ilike(f"%{search}%")) + + common["items_per_page"] = items_per_page + result = await search_filter_sort_paginate(model=query, **common) + return result async def create(*, db_session: DbSession, masterdata_in: MasterDataCreate): @@ -31,7 +38,9 @@ async def create(*, db_session: DbSession, masterdata_in: MasterDataCreate): return masterdata -async def update(*, db_session: DbSession, masterdata: MasterData, masterdata_in: MasterDataUpdate): +async def update( + *, db_session: DbSession, masterdata: MasterData, masterdata_in: MasterDataUpdate +): """Updates a document.""" data = masterdata_in.model_dump() diff --git a/src/yeardata/__pycache__/router.cpython-311.pyc b/src/yeardata/__pycache__/router.cpython-311.pyc index b711aa204325cce486111a4d5e1ec9412c35c7fb..ed9e1f4b91eb9c9f542f19c28c02b7bbefea13fe 100644 GIT binary patch literal 4595 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 C!|cca diff --git a/src/yeardata/__pycache__/service.cpython-311.pyc b/src/yeardata/__pycache__/service.cpython-311.pyc index a30a625645d527eb63ef495caff2c91f2701a5cf..56b12944296ed8477cfb7c693ae2a3fb62f93871 100644 GIT binary patch delta 1642 zcmZWoUuYaf7@xV_o!k4HP404O%$-dG(VQl+BG!N*rKnLKl7c6BSRamcXOf)m-o@Fy zNc7@GTST;qb(IKO=tHfD2x1ZPXkYauk$_=E2>7CJ3#FiW@|(F_+r-(~Z@xdj@0*$L z`z9LvuGIcIlSv{N$tT}h`ZgC@CnvKldO-X zScZ|o?orSpq3MgNnWGt+{Sr%54NU7uU9pyG^&4fpiLoBsj6F(vAQ(4-e_{*T5U{DBqO3kKU&bNnc!$}V z&s?v%0ujKO@e-hH_~lT6LV?f)_-`Eq`^xE;)K-i?-%_u}B;XkF1^96I_aI&of#mRI z@9~K51BDeie?w9|Wlne(ysdf5EqbZW}0*`)q0_UEEC$_ZF20@8+-_-Z$C%$W=HJuyPfl#iZl{KJ z)Z!ocN4E2`Fu!L&wpKgBc6RpI+;}!3D4pAw=S6YS6kMEB%eShvz}9|W;3J?dt1>@f zQf946o9;@eSd?~dU-QdKCoN+lg5HhbiNrz@Iw>GFXBPD9Bq&FN%cMrcethDG_(?qc zkZ_E9%(r}>^Kp>6nVt}!vEZy;9+jCS%@sHuwbz#!XFLx)?-xWyKRmD@6ryy;&I-K&PmfQ5WhQ7O-)@VumIuS6_nKol_A+zV zI&CBRTXu|W6@E&Ha$DjFl*JQ5BYHo~d)%HBnSI&v*rdn!YR&F+RY?4`6?oh{EpWX@ zaCQR@pJ@w&Aq-a2U%um<6>7zUl!-SUDz&;VJ4_~7rbu2v)=-vLmf}F4hB`JKHp9<> z8@xB`}Fvff6vF-oQ>`_(lOKRMh-bP1ea684GE1=S;C}H4Sgt}zk7>qO_5Y%7# zyz=Q>6c>_?GW{P{F3lZ7cl;g*R?{QnS)AX?6(dEgW2Zao**UpJ2$c7bk>Fq$Hag@T9Pym@S;SjkBd!FrH|-aPqc+8(U4oA?E_|DsxlR!JE`o!h?}Od<0A3;=`8Yr!c5tXT3P!%-tAQG7jwZ1dq(b75P-KG1YRT=2UlkzLpkd2J;jlQf`SoRCZ4W4eQZ=HqyD z?FD{@G2y4wQDOqeEIy^)NF4!a@^y8o*8?Pnn4!Y+0G{1d{(rY9uwW@+d$ao<@QOhV%2#ku(zmJvZ`#Jrm5#cemDHE#hb5#LPG zA$YeQ&( Optional[Yeardata]: return result.scalars().one_or_none() -async def get_all(*, db_session: DbSession): +async def get_all( + *, + db_session: DbSession, + items_per_page: Optional[int], + search: Optional[str] = None, + common, +): """Returns all documents.""" query = Select(Yeardata) - result = await db_session.execute(query) - return result.scalars().all() + if search: + query = query.filter(cast(Yeardata.year, String).ilike(f"%{search}%")) + + common["items_per_page"] = items_per_page + results = await search_filter_sort_paginate(model=query, **common) + + # return results.scalars().all() + return results async def create(*, db_session: DbSession, yeardata_in: YeardataCreate): @@ -31,7 +42,9 @@ async def create(*, db_session: DbSession, yeardata_in: YeardataCreate): return yeardata -async def update(*, db_session: DbSession, yeardata: Yeardata, yeardata_in: YeardataUpdate): +async def update( + *, db_session: DbSession, yeardata: Yeardata, yeardata_in: YeardataUpdate +): """Updates a document.""" data = yeardata_in.model_dump()