You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
|
|
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
|
|
|
|
|
|
class EquipmentMaster(Base, DefaultMixin):
|
|
__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)
|
|
category_id = Column(UUID(as_uuid=True), nullable=True)
|
|
system_tag = Column(String, nullable=True)
|
|
assetnum = Column(String, nullable=True)
|
|
location_tag = Column(String, nullable=True)
|
|
|
|
# Relationship definitions
|
|
# Define both sides of the relationship
|
|
# parent = relationship(
|
|
# "EquipmentMaster",
|
|
# back_populates="children",
|
|
# remote_side=[id]
|
|
# )
|
|
|
|
children = relationship(
|
|
"EquipmentMaster",
|
|
backref=backref("parent", remote_side=[id]),
|
|
lazy="selectin"
|
|
)
|
|
|
|
# equipment_tree = relationship(
|
|
# "EquipmentTree",
|
|
# back_populates="equipment_master"
|
|
# )
|
|
|
|
|
|
class EquipmentTree(Base, DefaultMixin):
|
|
__tablename__ = "ms_equipment_tree"
|
|
|
|
level_no = Column(Integer, nullable=False)
|
|
name = Column(String, nullable=False)
|
|
|
|
# equipment_master = relationship(
|
|
# "EquipmentMaster",
|
|
# back_populates="equipment_tree",
|
|
# cascade="all, delete-orphan",
|
|
# lazy="selectin" # Using selectin for better performance with recursive loads
|
|
# )
|