modelstore/App/Model/RatingConfigModel.py

102 lines
3.7 KiB
Python

from sqlalchemy.dialects.mysql import LONGTEXT
from sqlalchemy.orm import relationship
from sqlalchemy import Column, String, ForeignKey
from Utils.DataBase.SqlAlchemyUtils import Base, engine
class ScoreCard(Base):
__tablename__ = "scorecard"
id = Column(String(16), primary_key=True)
name = Column(String(16), unique=True, index=True)
description = Column(LONGTEXT)
major_category_id = Column(String(16), ForeignKey("scorecard_major_category.id"))
subcategory_id = Column(String(16), ForeignKey("scorecard_subcategory.id"))
major_category = relationship("ScoreCardMajorCategory", backref="scorecard", uselist=False)
subcategory = relationship("ScoreCardSubCategory", backref="scorecard", uselist=False)
data_table = relationship("ScoreCardDataTable", backref="scorecard", uselist=False, cascade="all, delete-orphan")
index_table = relationship("ScoreCardIndexTable", backref="scorecard", uselist=False, cascade="all, delete-orphan")
rank_table = relationship("ScoreCardRankTable", backref="scorecard", uselist=False, cascade="all, delete-orphan")
process_table = relationship("ScoreCardProcessTable", backref="scorecard", uselist=False, cascade="all, delete-orphan")
scorecard_dp_ac_auth = relationship("ScoreCardDpAcAuth", back_populates="scorecard", cascade="all, delete-orphan")
class ScoreCardDataTable(Base):
__tablename__ = "scorecard_data_table"
id = Column(String(16), primary_key=True)
obj_id = Column(String(24))
scorecard_id = Column(String(16), ForeignKey("scorecard.id", ondelete="CASCADE"))
class ScoreCardIndexTable(Base):
__tablename__ = "scorecard_index_table"
id = Column(String(16), primary_key=True)
obj_id = Column(String(24))
scorecard_id = Column(String(16), ForeignKey("scorecard.id", ondelete="CASCADE"))
class ScoreCardRankTable(Base):
__tablename__ = "scorecard_rank_table"
id = Column(String(16), primary_key=True)
obj_id = Column(String(24))
scorecard_id = Column(String(16), ForeignKey("scorecard.id", ondelete="CASCADE"))
class ScoreCardProcessTable(Base):
__tablename__ = "scorecard_process_table"
id = Column(String(16), primary_key=True)
obj_id = Column(String(24))
scorecard_id = Column(String(16), ForeignKey("scorecard.id", ondelete="CASCADE"))
class ScoreCardDpAcAuth(Base):
__tablename__ = "scorecard_dp_ac_auth"
id = Column(String(16), primary_key=True)
department_id = Column(String(16))
scorecard_id = Column(String(16), ForeignKey("scorecard.id", ondelete="CASCADE"))
scorecard = relationship("ScoreCard", back_populates="scorecard_dp_ac_auth")
class ScoreCardSubCategory(Base):
__tablename__ = "scorecard_subcategory"
id = Column(String(16), primary_key=True)
name = Column(String(32), unique=True, index=True)
major_category_id = Column(String(16), ForeignKey("scorecard_major_category.id"))
def __str__(self):
return self.name
def dict(self):
__dict = {c.name: getattr(self, c.name, None) for c in self.__table__.columns}
__dict.pop("major_category_id")
return __dict
class ScoreCardMajorCategory(Base):
__tablename__ = "scorecard_major_category"
id = Column(String(16), primary_key=True)
name = Column(String(32), unique=True, index=True)
subcategories = relationship("ScoreCardSubCategory", backref="scorecard_major_category")
def __str__(self):
return self.name
def dict(self):
__dict = {c.name: getattr(self, c.name, None) for c in self.__table__.columns}
__dict.update({"subcategories": [subcategory.dict() for subcategory in list(self.subcategories)]})
return __dict
Base.metadata.create_all(bind=engine)