From ca50f7107ba5910cc4216310d2eb812f88dc0807 Mon Sep 17 00:00:00 2001 From: MrWaradana Date: Wed, 26 Feb 2025 15:18:17 +0700 Subject: [PATCH] feat: add name for equipment joined with equipment master --- .../__pycache__/model.cpython-311.pyc | Bin 4514 -> 4720 bytes .../__pycache__/router.cpython-311.pyc | Bin 6113 -> 6101 bytes .../__pycache__/schema.cpython-311.pyc | Bin 8802 -> 8847 bytes .../__pycache__/service.cpython-311.pyc | Bin 10198 -> 10633 bytes src/equipment/model.py | 9 +++++++++ src/equipment/router.py | 4 ++-- src/equipment/schema.py | 1 + src/equipment/service.py | 8 ++++++-- 8 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/equipment/__pycache__/model.cpython-311.pyc b/src/equipment/__pycache__/model.cpython-311.pyc index 06ea0b008a94613d5e2f88e512b06350dfe3b1f8..6fb67e915ad09c2a43dde0eeebfbd9ac62ad4a3a 100644 GIT binary patch delta 446 zcmZ3a{6U3pIWI340}%L~*_ZyAZzG>3<3w3bMzhV1jG~NcObn^QDXb}MDeNgMDNJiP zma#H0tOjBTh!RQR3}(>enjFJqpmB@ewXig^AU8Fy#5b|HB(>-kYf)lmacY%qVqQwT z23&HoH>aF1M1@{radB!%UTLnTrY6he22NR?TkNI9sX3X&C4QQsllz(eix+VMt-2+U z3Nt!B7i{+AK4vc_4#vs1nD6O55Lcd1bAvDGGqBjIYKk%|kuzh3z5??^X z1r`wqD$>}zkEMu(wMZCf>|}FJPt76`Agf3eM2G8EK>BmokV1QAjoLVEIc zPB})I&DS`uF-fX}L^MEzCWz365%Qal@`N+9fn~HOD+yG}gQZZF|KhO8%}*)KNwq7A loV-h*UQd*f?E?cQF@a@5&H~?$Aek=+X@kk>g61qB8vp^Ma~l8v delta 319 zcmeyMvPhY4IWI340}!mN7??ygNMlKc*9|%5+ZFXc7Wn@cX4Q9|}n_RJcqT2h5Z(5QDSCs>SSRq&#+r8If+%3x3~+6 zGIJA)Dzox4^KNmJWu}(r=jBwo6$t<>@Y6IX5(3gi!XQEfM2Lb2P9SlMGqtcZvmiG$ zucU|>B*+FL#5OPCy2d1_0AeeG2qh4q0wcsWPv#A0W&_KpO#UEHDG!!X0LjCZ|KhO8 t%}*)KNwq5qo7^E-ugAk^^nn4Bn7}e2XMyiWkjxi^wA^GBS zRd4W%0?`LfRvEUB3_#)wi1@(3Du$bA@cYWcz$0^mS9-Gn`xIu@A}ye8ldo_!GHOi@ z4%q((`834r=RI300 delta 358 zcmcbr|4^TIIWI340}xco?Me6A$eY0?z@J)Jnpu#WnpYB^l30>hJh_D}%~e+AhOq1n zan&3AqCoV4lU0`OBLk550wO*zu!`d*8vMWVF!0FS;FZ~|&pw4&;1(aM1(Q#3HHz8* zols;8BJ4nfJ&16a9LKH7=(M?oJD-u!dGZ$?KQ?EOxXWY@UQ z0VFh8iWEU?4-nxzS)JdC%@M?Oo1D(CC<;~!F#;rL2v#|HF25S1-{vFyYZw`QCKn2N z%Yb!=fh1*tgeEh@NU&y)$u|U*83Q-}5j?~w?F5v)#Zr)8TvFr-Vlo$$mK6Dc^aW17 ODJ;vFxcR&AJ!SxEOIic~ diff --git a/src/equipment/__pycache__/schema.cpython-311.pyc b/src/equipment/__pycache__/schema.cpython-311.pyc index 754cd1c7ab527258ec1c3ec5ca13543b40a5e0f4..ca9c585d183fe451542992077538e534bb411986 100644 GIT binary patch delta 395 zcmaFl((lT*oR^o20SHc<-IuN*w2@C%mT}8u9a+iAXQa65nHW;pQkYX%*03&PVqjPe z#1Ih0p30HRDGB2;q_U*2*#LPs)pG&WbEBwd$E%(PsGe6+9N7X6kcJfIUDI?7M5lfG#q#=bVm_d`{mauDKX=Xug zYF>#;Vo9QJVsS}o(JiLTl*s~e+KjxDZRDg>*nz5xL_h>9h>!;n@gPDLL?nO+g~=Z! zh52JaOb`(c#KoF|7@wJ)8FvO}+}+tfF6-)=h^~QXl&urwF>%VPz;;0=o#EVvM4Q4t?LOOVOpi$NRnC_ulXO^WMzclebQ* z_Z3BE!0gvACe~V?sOL29Hb?bvJ00~$Sdk`z5&A}x_lqbh+Z116mpEkWfDc@T-l{-# zUh^=f0GUO=hr|3}pn8>bt=vt2dB15u|^fNBJ0p^;^nk1(z=Uu8zBS(+<)qqaA?Eh&q^rTogA-O%|o zV;>sYY#1s^!?rZME%_EB%XKT0c73Yo@3#HjMXAS@dYmdokezDAt2&H8?}gF_chtc0 zQCn+y7%r+Ew%YMd?b=kk9xptHiKD0v+Unr0z$wSsT@UY3Vv7Ybiy|jS%384|0huM6XUKkJgo*acD~cz8 z6o8~OS&Ae;>|_uTIr+G}JZlD!`D*iPd1)rcRFG%@kkDi+N&`~2*o#w35=%;oiV{FP zma@d6;vxYc6Ji!8#4JUS0MtNtrAXEyApi5`rAneq0`VXzcMu^9A`&K_Qqkfn0Wvum zfj+O8d{Ihdvykd4Mhj4A6oGsMHn|AorXr9zMIgmsCl$GXSWZCV7l%!5eoARhs$Eg* z<}Yd!7@hbSg+4IAh#SH(ADDrh8+wKi+S(3GKVaqT&}@nSzzS1{(DFfP@-dCW0A~V$ A%>V!Z diff --git a/src/equipment/model.py b/src/equipment/model.py index 0c74809..a5e77a2 100644 --- a/src/equipment/model.py +++ b/src/equipment/model.py @@ -18,6 +18,15 @@ class Equipment(Base, DefaultMixin, IdentityMixin): min_eac_info = Column(Text, nullable=True) harga_saat_ini = Column(Float, nullable=True) + equipment_master = relationship( + "EquipmentMaster", + # backref="equipment", + lazy="raise", + primaryjoin="and_(Equipment.assetnum == foreign(EquipmentMaster.assetnum))", + viewonly=True, + uselist=False, + ) + class MasterRecords(Base, DefaultMixin, IdentityMixin): __tablename__ = "lcc_equipment_tr_data" diff --git a/src/equipment/router.py b/src/equipment/router.py index e559ccb..a27006c 100644 --- a/src/equipment/router.py +++ b/src/equipment/router.py @@ -36,14 +36,14 @@ async def get_equipments( ): """Get all equipment pagination.""" # return - equipment_datas = await get_all( + equipment_data = await get_all( db_session=db_session, items_per_page=items_per_page, search=search, common=common, ) return StandardResponse( - data=equipment_datas, + data=equipment_data, message="Data retrieved successfully", ) diff --git a/src/equipment/schema.py b/src/equipment/schema.py index 0ccbf81..565c30b 100644 --- a/src/equipment/schema.py +++ b/src/equipment/schema.py @@ -86,6 +86,7 @@ class EquipmentRead(DefaultBase): class EquipmentDataMaster(EquipmentBase): id: UUID + equipment_master: EquipmentMasterBase forecasting_target_year: Optional[int] = Field(None, nullable=True) min_eac_info: Optional[str] = Field(None, nullable=True) harga_saat_ini: Optional[float] = Field(None, nullable=True) diff --git a/src/equipment/service.py b/src/equipment/service.py index 9961631..4f248d4 100644 --- a/src/equipment/service.py +++ b/src/equipment/service.py @@ -90,14 +90,18 @@ async def get_all( *, db_session: DbSession, items_per_page: int, search: str = None, common ) -> list[Equipment]: """Returns all documents.""" - query = Select(Equipment) + query = ( + Select(Equipment) + .join(EquipmentMaster, Equipment.assetnum == EquipmentMaster.assetnum) + .options(selectinload(Equipment.equipment_master)) + ) if search: query = query.filter( cast(Equipment.acquisition_year, String).ilike(f"%{search}%") | cast(Equipment.assetnum, String).ilike(f"%{search}%") + | cast(EquipmentMaster.name, String).ilike(f"%{search}%") ) - common["items_per_page"] = items_per_page result = await search_filter_sort_paginate(model=query, **common) return result