indexstore/AppIndicators/Models.py

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")