From f3f2c496ad4ae99753780b20b2384af97393e942 Mon Sep 17 00:00:00 2001 From: Cizz22 Date: Tue, 24 Jun 2025 14:39:49 +0700 Subject: [PATCH] minor fix --- src/aeros_equipment/model.py | 8 ++++++++ src/aeros_equipment/schema.py | 12 +++++++++++- src/aeros_equipment/service.py | 17 +++++++++++++++-- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/src/aeros_equipment/model.py b/src/aeros_equipment/model.py index c0a53c9..b363514 100644 --- a/src/aeros_equipment/model.py +++ b/src/aeros_equipment/model.py @@ -64,6 +64,13 @@ class AerosEquipment(Base, DefaultMixin): "AerosEquipmentDetail", back_populates="aeros_equipment", lazy="raise" ) + master_equipment = relationship( + "MasterEquipment", + lazy="joined", + primaryjoin="and_(AerosEquipment.location_tag == foreign(MasterEquipment.location_tag))", + uselist=False, # Add this if it's a one-to-one relationship + ) + class AerosEquipmentDetail(Base, DefaultMixin): @@ -83,3 +90,4 @@ class MasterEquipment(Base, DefaultMixin): __tablename__ = "ms_equipment_master" location_tag = Column(String, nullable=True) + name = Column(String, nullable=True) diff --git a/src/aeros_equipment/schema.py b/src/aeros_equipment/schema.py index 83df2fb..0e3d6b3 100644 --- a/src/aeros_equipment/schema.py +++ b/src/aeros_equipment/schema.py @@ -41,9 +41,19 @@ class EquipmentBase(DefultBase): # finish: datetime # remark: Optional[str] +class MasterEquipment(DefultBase): + name: str + +class Equipment(EquipmentBase): + location_tag: str + master_equipment: MasterEquipment + +class EquipmentRead(EquipmentBase): + AerosData: dict + MasterData: Equipment class EquipmentPagination(Pagination): - items: List[dict] = [] + items: List[EquipmentRead] = [] class FlowrateUnit(str, Enum): PER_DAY = "PerDay" PER_HOUR = "PerHour" diff --git a/src/aeros_equipment/service.py b/src/aeros_equipment/service.py index 119492f..96946bc 100644 --- a/src/aeros_equipment/service.py +++ b/src/aeros_equipment/service.py @@ -20,10 +20,13 @@ client = httpx.AsyncClient(timeout=300.0) async def get_all(*, common): """Returns all documents.""" query = Select(AerosEquipment).options( - selectinload(AerosEquipment.aeros_equipment_details) + selectinload(AerosEquipment.master_equipment) ) results = await search_filter_sort_paginate(model=query, **common) reg_nodes = [node.node_name for node in results["items"]] + equipment_data = { + node.node_name: node for node in results["items"] + } updateNodeReq = {"projectName": "trialapi", "equipmentNames": reg_nodes} @@ -42,10 +45,20 @@ async def get_all(*, common): status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=str(e) ) - results["items"] = res + results["items"] = [ + {"AerosData": data, "MasterData": equipment_data.get(data["equipmentName"]) } for data in res + ] return results +async def get_equipment_by_location_tag(*, db_session: DbSession, location_tag: str): + query = ( + Select(AerosEquipment) + .where(AerosEquipment.location_tag == location_tag) + .options(selectinload(AerosEquipment.aeros_equipment_details)) + ) + + async def get_by_id(*, db_session: DbSession, id: UUID): query = (