feat: add name for equipment joined with equipment master

main
MrWaradana 11 months ago
parent 074dbfd316
commit ca50f7107b

@ -18,6 +18,15 @@ class Equipment(Base, DefaultMixin, IdentityMixin):
min_eac_info = Column(Text, nullable=True) min_eac_info = Column(Text, nullable=True)
harga_saat_ini = Column(Float, 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): class MasterRecords(Base, DefaultMixin, IdentityMixin):
__tablename__ = "lcc_equipment_tr_data" __tablename__ = "lcc_equipment_tr_data"

@ -36,14 +36,14 @@ async def get_equipments(
): ):
"""Get all equipment pagination.""" """Get all equipment pagination."""
# return # return
equipment_datas = await get_all( equipment_data = await get_all(
db_session=db_session, db_session=db_session,
items_per_page=items_per_page, items_per_page=items_per_page,
search=search, search=search,
common=common, common=common,
) )
return StandardResponse( return StandardResponse(
data=equipment_datas, data=equipment_data,
message="Data retrieved successfully", message="Data retrieved successfully",
) )

@ -86,6 +86,7 @@ class EquipmentRead(DefaultBase):
class EquipmentDataMaster(EquipmentBase): class EquipmentDataMaster(EquipmentBase):
id: UUID id: UUID
equipment_master: EquipmentMasterBase
forecasting_target_year: Optional[int] = Field(None, nullable=True) forecasting_target_year: Optional[int] = Field(None, nullable=True)
min_eac_info: Optional[str] = Field(None, nullable=True) min_eac_info: Optional[str] = Field(None, nullable=True)
harga_saat_ini: Optional[float] = Field(None, nullable=True) harga_saat_ini: Optional[float] = Field(None, nullable=True)

@ -90,14 +90,18 @@ async def get_all(
*, db_session: DbSession, items_per_page: int, search: str = None, common *, db_session: DbSession, items_per_page: int, search: str = None, common
) -> list[Equipment]: ) -> list[Equipment]:
"""Returns all documents.""" """Returns all documents."""
query = Select(Equipment) query = (
Select(Equipment)
.join(EquipmentMaster, Equipment.assetnum == EquipmentMaster.assetnum)
.options(selectinload(Equipment.equipment_master))
)
if search: if search:
query = query.filter( query = query.filter(
cast(Equipment.acquisition_year, String).ilike(f"%{search}%") cast(Equipment.acquisition_year, String).ilike(f"%{search}%")
| cast(Equipment.assetnum, 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 common["items_per_page"] = items_per_page
result = await search_filter_sort_paginate(model=query, **common) result = await search_filter_sort_paginate(model=query, **common)
return result return result

Loading…
Cancel
Save