minor fix

main
Cizz22 7 months ago
parent 1c0a7bbdee
commit f3f2c496ad

@ -64,6 +64,13 @@ class AerosEquipment(Base, DefaultMixin):
"AerosEquipmentDetail", back_populates="aeros_equipment", lazy="raise" "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): class AerosEquipmentDetail(Base, DefaultMixin):
@ -83,3 +90,4 @@ class MasterEquipment(Base, DefaultMixin):
__tablename__ = "ms_equipment_master" __tablename__ = "ms_equipment_master"
location_tag = Column(String, nullable=True) location_tag = Column(String, nullable=True)
name = Column(String, nullable=True)

@ -41,9 +41,19 @@ class EquipmentBase(DefultBase):
# finish: datetime # finish: datetime
# remark: Optional[str] # 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): class EquipmentPagination(Pagination):
items: List[dict] = [] items: List[EquipmentRead] = []
class FlowrateUnit(str, Enum): class FlowrateUnit(str, Enum):
PER_DAY = "PerDay" PER_DAY = "PerDay"
PER_HOUR = "PerHour" PER_HOUR = "PerHour"

@ -20,10 +20,13 @@ client = httpx.AsyncClient(timeout=300.0)
async def get_all(*, common): async def get_all(*, common):
"""Returns all documents.""" """Returns all documents."""
query = Select(AerosEquipment).options( query = Select(AerosEquipment).options(
selectinload(AerosEquipment.aeros_equipment_details) selectinload(AerosEquipment.master_equipment)
) )
results = await search_filter_sort_paginate(model=query, **common) results = await search_filter_sort_paginate(model=query, **common)
reg_nodes = [node.node_name for node in results["items"]] 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} 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) 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 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): async def get_by_id(*, db_session: DbSession, id: UUID):
query = ( query = (

Loading…
Cancel
Save