modelstore/App/Model/RatingConfigModel.py

95 lines
3.1 KiB
Python
Raw Normal View History

2022-11-14 14:48:16 +08:00
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)
subcategory_id = Column(String(16), ForeignKey("scorecard_subcategory.id"))
subcategory = relationship("ScoreCardSubCategory", backref="scorecard", uselist=False)
data_table = relationship("ScoreCardDataTable", backref="scorecard", uselist=False)
index_table = relationship("ScoreCardIndexTable", backref="scorecard", uselist=False)
rank_table = relationship("ScoreCardRankTable", backref="scorecard", uselist=False)
process_table = relationship("ScoreCardProcessTable", backref="scorecard", uselist=False)
scorecard_dp_ac_auth = relationship("ScoreCardDpAcAuth", back_populates="scorecard")
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"))
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"))
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"))
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"))
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"))
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 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 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)