From 2926794fbe3e285a05750acb860cc9085dbc48c1 Mon Sep 17 00:00:00 2001 From: MrWaradana Date: Fri, 12 Dec 2025 16:20:07 +0700 Subject: [PATCH] paginate the top 10 equipments service --- .../__pycache__/service.cpython-311.pyc | Bin 5563 -> 6538 bytes src/database/service.py | 34 ++++++++++++++++-- .../__pycache__/router.cpython-311.pyc | Bin 11559 -> 11604 bytes .../__pycache__/schema.cpython-311.pyc | Bin 13535 -> 13820 bytes .../__pycache__/service.cpython-311.pyc | Bin 24836 -> 24229 bytes src/equipment/router.py | 15 ++++---- src/equipment/schema.py | 4 ++- src/equipment/service.py | 30 +++++----------- 8 files changed, 51 insertions(+), 32 deletions(-) diff --git a/src/database/__pycache__/service.cpython-311.pyc b/src/database/__pycache__/service.cpython-311.pyc index 1146faf6c725dd09d50b8f659139886dc74b3045..1744fccb026e4c13a755b3e11987f46de43cc0d1 100644 GIT binary patch delta 1289 zcmZuxU2NM_6ux%iIEkIaNt&N+?Qm9gO(GUejd;osbQOC*&_^VA;)SOK{16#}$^)+u2_f;o1J_AfHG<=Nj_*A` z-#PX<_SYkuquwVTj~fsg{dq!J4(@oP)K^~)U!$YB^XnijxHJl5X20 z-cOHlN_O3@QCoewJx857asnj=F~GdX&XCQ*bt1Qldu?~-oI*>d(hlI3Y9lZzNi z4&4DS<6Dj>{)6%MlS)S3B=IG-#cs$2NpM`$pJE3NDR(GC&Bqj=MJ*U%E zC%(dlUSxV7gV;Vo!4vWJUVDyt&@LW^j}RjNMfj#`3zvI?3AmxtqzR7InVUtJmsDj{ z7VpeVUs1CQa(+dGvbLlm5f+y#YLqse-m0SD&aPr_hpn_kW|%V(9)tR!;4l7 zJ1-*w15HLja$Ymtil!7aBo(r#B9xKeK~Tz~Ob0&GE(y*O+ik*{ zlMLJ%XgL5Mcz9{^Ql0BJxc;@P4c@ypdFTtaK#)na#fGgJI$f@e?xY{3H{1>1sTQDI zp$6Y~80fFeJW6h`zj1->7b-XET-@N|Ex@}H&G0}aTOHp=^>E4vr#7Y zi6_ZVl8-NZdZ7hq|5#h>T;G1B5^6?b)xpoSdSt|ijF23mv1as{D!U)tm+R3?%7~_F z(bV4!-v4lVbGj0#^D%>u)!OSX2M~hWCj)PH<{@?W<&o0w$D*o7e*1^M9$;-#zd0(R8EcW{5xHrfdUbn;~UiD45=g77| zSo;8f>-&jo3PaWVbs=d8Nqis_xh5a0p0D!>gHPZI|266ye$W3s1E)v?emxL(Sp9`_ hxD+_;E|RVFSJ7ezj{`+o7(YY#Ti{r{jQyd{{{@6}O@jac delta 354 zcmeA&-mT5IoR^o20SFG}@?>%dOyrYbT(eQ#lSzn^0TrgGPwrsy=2mNAjZ#Qq3}(>O z*nE#EoMUo1zbNB_&At2qjEtU>?+KW()bK6focxegiD>~Bh?;C5D9XqUWQk0U5|m}+ z0ke7pJuuXL5bQU)#hO`?np<2X0d&wUu9Ezc#GHV{^wi=aIgkJ=SU{8a7FT9*W?peg zVqS9UCchAh<8uP3W-Cf9F3l+^a+n+_Y|Z5d6bb<1;#HHU z3E!5yAs{xLZxY`{0fj393fBcxE(xey6i~Y&pfgj@tphG@-Ok5(4O9N z&hMP_JLjGIZY!%w&Fz{RivWMGKirr4V7bO2`j!J3t7cd1qM!E4h(#`c9>0Mfn(xde%y8wslQL?Q!@3QlbRJ-V*X znpOK1c}wa+OwBG!_0@vfNFqceL+mXnAa|=xB+5LJU5=FzY(i>qhtWQ3R9miWCAp`J zs}fWvWNKjli0)S41!&hc^xh5V)-C9^ZRmX)&~8B2L2hT0=ZdhUo8dAJy7BUEqP&~1 z+D>{|!C;s7ml43ySIXq}b`sw2tV#86t9<|>MsPw90rMs{?5i_CY-*77U|yJOXj{}M zL>(+eVI4a}c>_^3Kw-c)wy5U)j%69Q_HYr~ftJouXJoMQ3 zg?wsWBXhauGV_tXV)JJGSo~~iE}lze=2k{cBT{V`_JZz0(SxF!yu}5Y_9t1tOGEzM%nz%p4Ub86Xh#t|#ez3H+^KgS69s@_wL`gD3)vN&&kHqF1NqPibPoZi~X0$|Vj;ItlWKAHTw#TyslP4=<#I4p_P)gW5=^P0tw80%^cdH2CF zWG*(X^U&hi9HG zG`i5+uG!Q!od?X@>_ppFFeI1zL!ICS%#>i?x!vb^m&T%TF0PTHB}qvBMV^umMyk_0nhtThe@>a=lwE*4O;eWsV8>Y=bhHy z0^otVcKF#!)QL7e-_l-T7M(}sW`LzwtCBRykqsnX0rSu7q3?zXmpwGbUhRBBoM87m zCnZ|X+Wby-z#oxl8%z6rRySrniisTTg1>QbJf5T;R2#B1*#onUC*oPslO^z z&Zo%%x(p5xzS*m=pKAtD6u%d|1^BR!0_PR8D6I+qhp@3*!K3VEuzzJO_`c{X_=Z>O z_pixE50-0e%XTv+VP(UH<{R8`6Ojrvd0*=?ecT8nNMj0oe{+ A_5c6? delta 2519 zcmb_dZ)jUp6n{7WnkLIk+q6ydnkN05zGQ9FHcj`hYu7(I$}AgQl|30pY~9*;|c$9gT9KE3K`Ao0~m)=eZ$(ke2wdY!turYs26nQ7Kr z)K)RB%(Ut4YP%S_G97wEjp&_fr_kLQMUSdcJ*LKlz9+L!?^3(;ZnazJo=lG(SK~yo zNYr)%Qs2h>;!%5P@AW?3Yptn}w7oP=z5K2%z;mQaj%w93qSa6f?QbZ-CCvwVg5M({ z`#{OFQqt zi`H0%KClfP+=Xr`Lmw=mVYMMZSHWs!POa7UL!}wW+AQKEFe~tEq1~{a*0NZKOCAub ztr#oV8r9lqOsvhJb(HxGfzJ`Fwp~=4pRk1@Q7uBNwNBb4GC4J+%xf6DMv8lcnS8)H z7!wr)U*DFmON*BI9tGcEF=LFzxz`?oo!uw)sH+S;$|vn_69?b4Pso9Zi;L-;P8ag0 zvbo;)L@K+G)zhit>2q{_)G=)FMxiU%J``OjVtmy(&{&7V4iJi+2|x@DCW`;yRP6(x zN7j#4ju3~KALMVjRA=1u2=bp?EiJ;`YPt`?M8UymD$6v(3Q9N}W(nTqZnY1Cc8Jfo zb0oQb-+kJ?rwhtLZsxjnXI6y$|aCimMe^PyvOs)S_ebwqW7lB?g2on^~ zBE_{jzx_opP4G|ao+nAZr@oC4{>bekr}zVZz2y$!Uwh;z$)ij0d7WsMJJuT(IHK^H z&$Oi2rfv}y<+tmH+eM))%nx&-%(pCNo%+FGppPg|t-o*JB~bEceGbHr@L7?bx}?UT zFI^k*^aFW%Q=Z=_V>+uT$$4q9JEfqTr-C|*Hv0YwIdj$(n2H2E45Ff4e^)BNlfZwg&UjOd&gJR0jF-Ut z8Gki=0Wv-g|JHl}bao!aK@f_~T;3uYiah>o4lRq)I9V;4ca_EfTfw!M(;$yFJHKSs z3jdcB$3GW^8ElI(!vqFK5@btk%_!U0E&<{jN#gIfd=A^FwmL|y*v89XFIaWse33d| zY-^r1?+%!O#6I}h%`|{EQO05yVHA_e*7XIJf>)y%x}#`sfcaBO`xzT5QPSQt)p&qVlKr(sQL_+>V_)K&CeOM+o0@H zIz?F+;mtT-wPPM`Rmxg$vXy%yb<1ryY)706ae5X=8e%nY2WJ=alohPdTLo)+Af=b{umiQNur4tpz@G$3*xnuXKulgAiq%+b$oOxtPd1GJ diff --git a/src/equipment/__pycache__/schema.cpython-311.pyc b/src/equipment/__pycache__/schema.cpython-311.pyc index 2b051e61ee03552f71bed49bb44e643debd2d633..a5e2cd8a3f7b3b1f704ab19ad2054ee4f6243c1d 100644 GIT binary patch delta 439 zcmcbg`6ruqIWI340}vSAv(B72kyny2ZKJvjqd(U&W(J1UKnwvIVi)Vn)?RkmwhL6x-x7lS}|)hiI?> delta 255 zcmey9eLs_TIWI340}$*gG0XIs$ScX{wNYJ$(U@l$GXukFAclY_VI~H5h7|D@h7^fZ zE;Koj6v zn*7Yjj2*=F(-fVoY+TA%J9(b5ELSs7gb|2~SvMawp2#S?K=va8FQeTT5b*&_C`_Jg Gnh5}SH9#Q% diff --git a/src/equipment/__pycache__/service.cpython-311.pyc b/src/equipment/__pycache__/service.cpython-311.pyc index a3d79d860a0f80f6b45bc47073e034eee9618e87..bd6abfe552e522bc0f635197129da80b8ad63ca9 100644 GIT binary patch delta 812 zcmb7>OK4L;6o&8ISLLROn#62^R20#q+QeE~leQ@>NfAVoAPEVmZ7>nyqs6(QC`}Qx z3SuqDK?GMW6m_9B-qr`A7M0qjT7$SMx^P=J*(g3hJSV9NUFlhT^UrY3%>Umz{ES_D z%q-W$vv^yCzE}u$cujELcae$kZEHx9@*;FLZDtaDY;wSu zf8vj_!D#Ci?~s_=KzCIuEvIoH%ku0h8)c`2v^Xfmg-g;Ic}UL7y9Jj5Cz?IA{06pj znseFVX>-4Ylb@Rk@1pZt5NUBLx`G-;TGne1QN)-a=r-^MN^ox53axAs6z#KBuzR4` z=&!i92VQn%@}V1)S%133~_zK_!e6ju9pZ+X;sWeS`tR zJp!fY_Yu|5U)vkBN4Psgp?!uopfas&ro{He#KugAO=M@`L+6zfwdwVhje4GWTrdlyDHC%ZN2t+=XIZ-On?rT!z2Fjcho&e=K7O zu!cjw@7fz~W3SPl^6I`rVx3b4td^e8my(Cba;^ldH9#DDmS6 zdXI4>xl;|>ne~pVEZ{ONPbXh3ugIm?w2E0D_{stw*-KC_4T2y7>HMavv>truaL?!b&hMP_yXXAA z=iGdP&OS%F+sVmVhL)SxOFS*kKHax<_FlS)V|V1gX&v%mWi=QJh;B~_1!E;NvXyk3i#&OAxAi?MNJczr?YCpZXJ z08%Mz%esnvmMGimY4eD92e=)8UWzE!==Zz5O?Q%TB?%U1WJh)GLx(;7Hn&%Fwt50$ zREd2@aSNRqNTSHfB3FxZv`?wIo1QGNpP0)c7{dzk zInUBE&6`fuPNneYk9QnzmpY{wqhxJygp^YTQ#ZP}Eu@*Uc0en@3pfIJ1Q-O& z7a0$M?=i)khFMUsjXI*)&2G^t`uxtdYn<3kW;XHKFw6#VL$bMyL-UkP0c8zy%GUm0 zW##(vYz4YRPHef)j?g_^kPEhoC~26QwfF_OTd|6J4O<%~(TY;`Ej2I8LggXEMP|Jh zsxsLLYNp8pRX^0|0O_r list[Equipment]: +async def get_top_10_economic_life(*, db_session: DbSession, common) -> list[Equipment]: """Returns top 10 economic life.""" query = ( Select(Equipment) @@ -354,20 +354,13 @@ async def get_top_10_economic_life(*, db_session: DbSession) -> list[Equipment]: ) .filter(Equipment.minimum_eac_year != None) .order_by(func.abs(current_year - Equipment.minimum_eac_year).desc()) - .limit(10) ) - result = await db_session.execute(query) - - equipment_list = [] - for row in result.all(): - equipment = row[0] - equipment.economic_life = row[1] - equipment_list.append(equipment) - - return equipment_list + # result = await db_session.execute(query) + result = await search_filter_sort_paginate(model=query, **common) + return result -async def get_top_10_replacement_priorities(*, db_session: DbSession) -> list[Equipment]: +async def get_top_10_replacement_priorities(*, db_session: DbSession, common) -> list[Equipment]: """Returns top 10 replacement priorities.""" query = ( Select(Equipment) @@ -384,18 +377,11 @@ async def get_top_10_replacement_priorities(*, db_session: DbSession) -> list[Eq .filter(Equipment.minimum_eac_year != None) .order_by(func.abs(current_year - Equipment.minimum_eac_year).asc()) .order_by(func.abs(Equipment.minimum_eac).desc()) - .limit(10) ) - result = await db_session.execute(query) - - equipment_list = [] - for row in result.all(): - equipment = row[0] - equipment.economic_life = row[1] - equipment_list.append(equipment) - - return equipment_list + # result = await db_session.execute(query) + result = await search_filter_sort_paginate(model=query, **common) + return result async def generate_all_transaction(*, db_session: DbSession, token): """Generate transaction for all equipments in the database based on equipments assetnum."""