from sqlalchemy import Column, Float, Integer, String, ForeignKey, Text from sqlalchemy.orm import relationship from src.database.core import Base from src.models import DefaultMixin, IdentityMixin class Equipment(Base, DefaultMixin, IdentityMixin): __tablename__ = "lcc_ms_equipment_data" assetnum = Column(String, nullable=False) acquisition_year = Column(Integer, nullable=False) acquisition_cost = Column(Float, nullable=False) capital_cost_record_time = Column(Integer, nullable=False) design_life = Column(Integer, nullable=False) forecasting_start_year = Column(Integer, nullable=False) forecasting_target_year = Column(Integer, nullable=False) manhours_rate = Column(Float, nullable=False) harga_saat_ini = Column(Float, nullable=True) minimum_eac_seq = Column(Integer, nullable=False) minimum_eac_year = Column(Integer, nullable=False) minimum_eac = Column(Float, nullable=False) minimum_npv = Column(Float, nullable=False) minimum_pmt = Column(Float, nullable=False) minimum_pmt_aq_cost = Column(Float, nullable=False) minimum_is_actual = Column(Integer, nullable=False) efdh_equivalent_forced_derated_hours = Column(Float, nullable=False) foh_forced_outage_hours = Column(Float, nullable=False) category_no = Column(String, nullable=True) proportion = Column(Float, nullable=True) equipment_master = relationship( "EquipmentMaster", # backref="equipment", lazy="raise", primaryjoin="and_(Equipment.assetnum == foreign(EquipmentMaster.assetnum))", viewonly=True, uselist=False, ) class EquipmentTransactionRecords(Base, DefaultMixin, IdentityMixin): __tablename__ = "lcc_equipment_tr_data" equipment = relationship( "Equipment", backref="maintenance_records", lazy="raise", primaryjoin="and_(EquipmentTransactionRecords.assetnum == foreign(Equipment.assetnum))", viewonly=True, ) # master_equipment = relationship( # "MasterEquipment", # lazy="raise", # primaryjoin="and_(ScopeEquipment.assetnum == foreign(MasterEquipment.assetnum))", # uselist=False # Add this if it's a one-to-one relationship # ) assetnum = Column(String, nullable=False) tahun = Column(Integer, nullable=False) seq = Column(Integer, nullable=False) is_actual = Column(Integer, nullable=False) raw_cm_interval = Column(Float, nullable=False) raw_cm_material_cost = Column(Float, nullable=False) raw_cm_labor_time = Column(Float, nullable=False) raw_cm_labor_human = Column(Float, nullable=False) raw_pm_interval = Column(Float, nullable=False) raw_pm_material_cost = Column(Float, nullable=False) raw_pm_labor_time = Column(Float, nullable=False) raw_pm_labor_human = Column(Float, nullable=False) raw_predictive_interval = Column(Float, nullable=False) raw_predictive_material_cost = Column(Float, nullable=False) raw_predictive_labor_time = Column(Float, nullable=False) raw_predictive_labor_human = Column(Float, nullable=False) raw_oh_interval = Column(Float, nullable=False) raw_oh_material_cost = Column(Float, nullable=False) raw_oh_labor_time = Column(Float, nullable=False) raw_oh_labor_human = Column(Float, nullable=False) raw_project_task_material_cost = Column(Float, nullable=False) raw_loss_output_MW = Column(Float, nullable=False) raw_loss_output_price = Column(Float, nullable=False) raw_operational_cost = Column(Float, nullable=False) raw_maintenance_cost = Column(Float, nullable=False) rc_cm_material_cost = Column(Float, nullable=False) rc_cm_labor_cost = Column(Float, nullable=False) rc_pm_material_cost = Column(Float, nullable=False) rc_pm_labor_cost = Column(Float, nullable=False) rc_predictive_labor_cost = Column(Float, nullable=False) rc_oh_material_cost = Column(Float, nullable=False) rc_oh_labor_cost = Column(Float, nullable=False) rc_project_material_cost = Column(Float, nullable=False) rc_lost_cost = Column(Float, nullable=False) rc_operation_cost = Column(Float, nullable=False) rc_maintenance_cost = Column(Float, nullable=False) rc_total_cost = Column(Float, nullable=False) eac_npv = Column(Float, nullable=False) eac_annual_mnt_cost = Column(Float, nullable=False) eac_annual_acq_cost = Column(Float, nullable=False) eac_disposal_cost = Column(Float, nullable=False) eac_eac = Column(Float, nullable=False) efdh_equivalent_forced_derated_hours = Column(Float, nullable=False) foh_forced_outage_hours = Column(Float, nullable=False)