refactor: add asset name on equipment by id

main
MrWaradana 1 year ago
parent 94f12d1ac5
commit 53383cd812

@ -48,7 +48,7 @@ authenticated_api_router.include_router(
) )
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( authenticated_api_router.include_router(

@ -15,7 +15,6 @@ class Equipment(Base, DefaultMixin, IdentityMixin):
forecasting_target_year = Column(Integer, nullable=False) forecasting_target_year = Column(Integer, nullable=False)
manhours_rate = Column(Float, nullable=False) manhours_rate = Column(Float, nullable=False)
class MasterRecords(Base, DefaultMixin, IdentityMixin): class MasterRecords(Base, DefaultMixin, IdentityMixin):
__tablename__ = "lcc_tr_data" __tablename__ = "lcc_tr_data"

@ -31,8 +31,8 @@ async def get_equipment_tree():
@router.get("/{assetnum}", response_model=StandardResponse[EquipmentRead]) @router.get("/{assetnum}", response_model=StandardResponse[EquipmentRead])
async def get_equipment(db_session: DbSession, assetnum: str): async def get_equipment(db_session: DbSession, assetnum: str):
equipment_data, chart_data, min_eac_value, min_seq = await get( equipment_master_record, equipment_data, chart_data, min_eac_value, min_seq = (
db_session=db_session, assetnum=assetnum await get(db_session=db_session, assetnum=assetnum)
) )
# raise Exception(equipment[0]) # raise Exception(equipment[0])
if not chart_data: if not chart_data:
@ -43,6 +43,7 @@ async def get_equipment(db_session: DbSession, assetnum: str):
return StandardResponse( return StandardResponse(
data=EquipmentRead( data=EquipmentRead(
equipment_master_record=equipment_master_record,
equipment_data=equipment_data, equipment_data=equipment_data,
chart_data=chart_data, chart_data=chart_data,
min_eac_value=min_eac_value, min_eac_value=min_eac_value,

@ -19,6 +19,11 @@ class EquipmentBase(DefaultBase):
updated_by: Optional[str] = Field(None, nullable=True) 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): class MasterBase(DefaultBase):
assetnum: Optional[str] = Field(None, nullable=True) assetnum: Optional[str] = Field(None, nullable=True)
tahun: Optional[float] = Field(None, nullable=True) tahun: Optional[float] = Field(None, nullable=True)
@ -69,6 +74,7 @@ class EquipmentUpdate(EquipmentBase):
class EquipmentRead(DefaultBase): class EquipmentRead(DefaultBase):
equipment_master_record: EquipmentMasterBase
equipment_data: EquipmentBase equipment_data: EquipmentBase
chart_data: List[MasterBase] chart_data: List[MasterBase]
min_eac_value: Optional[float] = Field(None, nullable=True) min_eac_value: Optional[float] = Field(None, nullable=True)

@ -1,6 +1,7 @@
from sqlalchemy import Select, Delete, Float, func from sqlalchemy import Select, Delete, Float, func
from sqlalchemy.orm import selectinload from sqlalchemy.orm import selectinload
from .model import Equipment, MasterRecords from .model import Equipment, MasterRecords
from ..equipment_master.model import EquipmentMaster
from .schema import EquipmentCreate, EquipmentUpdate from .schema import EquipmentCreate, EquipmentUpdate
from typing import Optional from typing import Optional
@ -14,6 +15,11 @@ async def get(
"""Returns master records with equipment data based on asset number.""" """Returns master records with equipment data based on asset number."""
# First query to get equipment record # 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_query = Select(Equipment).filter(Equipment.assetnum == assetnum)
equipment_result = await db_session.execute(equipment_query) equipment_result = await db_session.execute(equipment_query)
equipment_record = equipment_result.scalars().one_or_none() 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 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() # return result.scalars().all()

@ -1,19 +1,32 @@
from sqlalchemy import UUID, Column, Float, ForeignKey, Integer, String from sqlalchemy import UUID, Column, Float, ForeignKey, Integer, String
from src.database.core import Base from src.database.core import Base
from src.models import DefaultMixin 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): class EquipmentMaster(Base, DefaultMixin):
__table_args__ = {"extend_existing": True}
__tablename__ = "ms_equipment_master" __tablename__ = "ms_equipment_master"
id = Column(UUID(as_uuid=True), primary_key=True, index=True) id = Column(UUID(as_uuid=True), primary_key=True, index=True)
name = Column(String, nullable=False) name = Column(String, nullable=False)
parent_id = Column(UUID(as_uuid=True), ForeignKey( parent_id = Column(
'ms_equipment_master.id', ondelete='CASCADE'), nullable=True) UUID(as_uuid=True),
equipment_tree_id = Column(UUID(as_uuid=True), ForeignKey( ForeignKey("ms_equipment_master.id", ondelete="CASCADE"),
'ms_equipment_tree.id', ondelete='CASCADE'), nullable=True) 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) category_id = Column(UUID(as_uuid=True), nullable=True)
system_tag = Column(String, nullable=True) system_tag = Column(String, nullable=True)
assetnum = Column(String, nullable=True) assetnum = Column(String, nullable=True)
@ -22,15 +35,13 @@ class EquipmentMaster(Base, DefaultMixin):
# Relationship definitions # Relationship definitions
# Define both sides of the relationship # Define both sides of the relationship
# parent = relationship( # parent = relationship(
# "EquipmentMaster", # "EquipmentMaster",
# back_populates="children", # back_populates="children",
# remote_side=[id] # remote_side=[id]
# ) # )
children = relationship( children = relationship(
"EquipmentMaster", "EquipmentMaster", backref=backref("parent", remote_side=[id]), lazy="selectin"
backref=backref("parent", remote_side=[id]),
lazy="selectin"
) )
# equipment_tree = relationship( # equipment_tree = relationship(

Loading…
Cancel
Save