diff --git a/src/__pycache__/api.cpython-311.pyc b/src/__pycache__/api.cpython-311.pyc index 8dfab97..bae70b2 100644 Binary files a/src/__pycache__/api.cpython-311.pyc and b/src/__pycache__/api.cpython-311.pyc differ diff --git a/src/api.py b/src/api.py index 8eb9da1..97c94ce 100644 --- a/src/api.py +++ b/src/api.py @@ -48,7 +48,7 @@ authenticated_api_router.include_router( ) authenticated_api_router.include_router( - equipment_router, prefix="/equipment", tags=["equipment"] +equipment_router, prefix="/equipment", tags=["equipment"] ) authenticated_api_router.include_router( diff --git a/src/equipment/__pycache__/model.cpython-311.pyc b/src/equipment/__pycache__/model.cpython-311.pyc index d2e34ce..ad96c0d 100644 Binary files a/src/equipment/__pycache__/model.cpython-311.pyc and b/src/equipment/__pycache__/model.cpython-311.pyc differ diff --git a/src/equipment/__pycache__/router.cpython-311.pyc b/src/equipment/__pycache__/router.cpython-311.pyc index 945ddd1..201d5fb 100644 Binary files a/src/equipment/__pycache__/router.cpython-311.pyc and b/src/equipment/__pycache__/router.cpython-311.pyc differ diff --git a/src/equipment/__pycache__/schema.cpython-311.pyc b/src/equipment/__pycache__/schema.cpython-311.pyc index 99ad407..0bf5024 100644 Binary files a/src/equipment/__pycache__/schema.cpython-311.pyc and b/src/equipment/__pycache__/schema.cpython-311.pyc differ diff --git a/src/equipment/__pycache__/service.cpython-311.pyc b/src/equipment/__pycache__/service.cpython-311.pyc index 7d19774..1dd10db 100644 Binary files a/src/equipment/__pycache__/service.cpython-311.pyc and b/src/equipment/__pycache__/service.cpython-311.pyc differ diff --git a/src/equipment/model.py b/src/equipment/model.py index 7b3559f..bd9c4d9 100644 --- a/src/equipment/model.py +++ b/src/equipment/model.py @@ -15,7 +15,6 @@ class Equipment(Base, DefaultMixin, IdentityMixin): forecasting_target_year = Column(Integer, nullable=False) manhours_rate = Column(Float, nullable=False) - class MasterRecords(Base, DefaultMixin, IdentityMixin): __tablename__ = "lcc_tr_data" diff --git a/src/equipment/router.py b/src/equipment/router.py index 4344069..def0234 100644 --- a/src/equipment/router.py +++ b/src/equipment/router.py @@ -31,8 +31,8 @@ async def get_equipment_tree(): @router.get("/{assetnum}", response_model=StandardResponse[EquipmentRead]) async def get_equipment(db_session: DbSession, assetnum: str): - equipment_data, chart_data, min_eac_value, min_seq = await get( - db_session=db_session, assetnum=assetnum + equipment_master_record, equipment_data, chart_data, min_eac_value, min_seq = ( + await get(db_session=db_session, assetnum=assetnum) ) # raise Exception(equipment[0]) if not chart_data: @@ -43,6 +43,7 @@ async def get_equipment(db_session: DbSession, assetnum: str): return StandardResponse( data=EquipmentRead( + equipment_master_record=equipment_master_record, equipment_data=equipment_data, chart_data=chart_data, min_eac_value=min_eac_value, diff --git a/src/equipment/schema.py b/src/equipment/schema.py index 0f6705e..82cee26 100644 --- a/src/equipment/schema.py +++ b/src/equipment/schema.py @@ -19,6 +19,11 @@ class EquipmentBase(DefaultBase): updated_by: Optional[str] = Field(None, nullable=True) +class EquipmentMasterBase(DefaultBase): + assetnum: Optional[str] = Field(None, nullable=True) + name: Optional[str] = Field(None, nullable=True) + + class MasterBase(DefaultBase): assetnum: Optional[str] = Field(None, nullable=True) tahun: Optional[float] = Field(None, nullable=True) @@ -69,6 +74,7 @@ class EquipmentUpdate(EquipmentBase): class EquipmentRead(DefaultBase): + equipment_master_record: EquipmentMasterBase equipment_data: EquipmentBase chart_data: List[MasterBase] min_eac_value: Optional[float] = Field(None, nullable=True) diff --git a/src/equipment/service.py b/src/equipment/service.py index 9f95948..9a21174 100644 --- a/src/equipment/service.py +++ b/src/equipment/service.py @@ -1,6 +1,7 @@ from sqlalchemy import Select, Delete, Float, func from sqlalchemy.orm import selectinload from .model import Equipment, MasterRecords +from ..equipment_master.model import EquipmentMaster from .schema import EquipmentCreate, EquipmentUpdate from typing import Optional @@ -14,6 +15,11 @@ async def get( """Returns master records with equipment data based on asset number.""" # First query to get equipment record + equipment_master_query = Select(EquipmentMaster).filter( + EquipmentMaster.assetnum == assetnum + ) + equipment_master_result = await db_session.execute(equipment_master_query) + equipment_master_record = equipment_master_result.scalars().one_or_none() equipment_query = Select(Equipment).filter(Equipment.assetnum == assetnum) equipment_result = await db_session.execute(equipment_query) equipment_record = equipment_result.scalars().one_or_none() @@ -45,7 +51,7 @@ async def get( ) min_seq = min_record[1] if min_record else None - return equipment_record, records, min_eac_value, min_seq + return equipment_master_record, equipment_record, records, min_eac_value, min_seq # return result.scalars().all() diff --git a/src/equipment_master/__pycache__/model.cpython-311.pyc b/src/equipment_master/__pycache__/model.cpython-311.pyc index 218d531..7f2575c 100644 Binary files a/src/equipment_master/__pycache__/model.cpython-311.pyc and b/src/equipment_master/__pycache__/model.cpython-311.pyc differ diff --git a/src/equipment_master/model.py b/src/equipment_master/model.py index a350997..d396928 100644 --- a/src/equipment_master/model.py +++ b/src/equipment_master/model.py @@ -1,19 +1,32 @@ - from sqlalchemy import UUID, Column, Float, ForeignKey, Integer, String from src.database.core import Base from src.models import DefaultMixin -from sqlalchemy.orm import relationship, declarative_base, declared_attr, remote, foreign, backref +from sqlalchemy.orm import ( + relationship, + declarative_base, + declared_attr, + remote, + foreign, + backref, +) class EquipmentMaster(Base, DefaultMixin): + __table_args__ = {"extend_existing": True} __tablename__ = "ms_equipment_master" id = Column(UUID(as_uuid=True), primary_key=True, index=True) name = Column(String, nullable=False) - parent_id = Column(UUID(as_uuid=True), ForeignKey( - 'ms_equipment_master.id', ondelete='CASCADE'), nullable=True) - equipment_tree_id = Column(UUID(as_uuid=True), ForeignKey( - 'ms_equipment_tree.id', ondelete='CASCADE'), nullable=True) + parent_id = Column( + UUID(as_uuid=True), + ForeignKey("ms_equipment_master.id", ondelete="CASCADE"), + nullable=True, + ) + equipment_tree_id = Column( + UUID(as_uuid=True), + ForeignKey("ms_equipment_tree.id", ondelete="CASCADE"), + nullable=True, + ) category_id = Column(UUID(as_uuid=True), nullable=True) system_tag = Column(String, nullable=True) assetnum = Column(String, nullable=True) @@ -22,15 +35,13 @@ class EquipmentMaster(Base, DefaultMixin): # Relationship definitions # Define both sides of the relationship # parent = relationship( - # "EquipmentMaster", + # "EquipmentMaster", # back_populates="children", # remote_side=[id] # ) - + children = relationship( - "EquipmentMaster", - backref=backref("parent", remote_side=[id]), - lazy="selectin" + "EquipmentMaster", backref=backref("parent", remote_side=[id]), lazy="selectin" ) # equipment_tree = relationship(