33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
from sqlalchemy import Column, String, Enum, ForeignKey
|
|
from sqlalchemy.orm import relationship
|
|
from sqlalchemy.dialects.mysql import LONGTEXT
|
|
|
|
from .Schemas import NatureEnum, CategoryEnum
|
|
|
|
from Utils.DataBase.SqlAlchemyUtils import Base
|
|
|
|
|
|
class Indicator(Base):
|
|
__tablename__ = "indicator"
|
|
|
|
iid = Column(String(32), primary_key=True, index=True)
|
|
ename = Column(String(255), index=True)
|
|
cname = Column(String(255), index=True)
|
|
description = Column(LONGTEXT)
|
|
nature = Column(Enum(NatureEnum, values_callable=lambda obj: [e.value for e in obj]))
|
|
category = Column(Enum(CategoryEnum, values_callable=lambda obj: [e.value for e in obj]))
|
|
|
|
parameters = relationship("Parameters", back_populates="indicator", cascade="all, delete-orphan")
|
|
|
|
|
|
class Parameters(Base):
|
|
__tablename__ = "parameters"
|
|
|
|
pid = Column(String(32), primary_key=True, index=True)
|
|
ename = Column(String(255))
|
|
cname = Column(String(255))
|
|
description = Column(LONGTEXT)
|
|
_iid = Column(String(32), ForeignKey("indicator.iid", ondelete="CASCADE"))
|
|
|
|
indicator = relationship("Indicator", back_populates="parameters")
|