from sqlalchemy import Column, String, ForeignKey, DateTime, Integer, Boolean from sqlalchemy.orm import relationship from database import Base class MetaDataTable(Base): __tablename__ = 'meta_data_table' id = Column(String, primary_key=True) created_date = Column(DateTime) last_modified_date = Column(DateTime) version = Column(Integer) table_name = Column(String(255), unique=True) table_columns = relationship("MetaDataColumn") def __repr__(self): print(f'MetaDataTable({self.id} {self.table_name})') def __str__(self): print(f'{self.table_name}({self.id})') class MetaDataColumn(Base): __tablename__ = 'meta_data_column' id = Column(String, primary_key=True) created_date = Column(DateTime) last_modified_date = Column(DateTime) version = Column(Integer) column_modifier = Column(String(255), nullable=True) column_name = Column(String(255)) column_order = Column(Integer) column_sync_name = Column(String(255)) column_type = Column(String(255)) table_id = Column(String, ForeignKey('meta_data_table.id')) table = relationship("MetaDataTable", back_populates="table_columns") column_label = Column(String(255)) filter_label = Column(String(255)) is_shown = Column(Boolean) show_filter = Column(Boolean) def __repr__(self): if self.column_name is None: print(f'MetaDataColumn({self.id} {self.table.table_name}.__)') else: print(f'MetaDataColumn({self.id} {self.table.table_name}.{self.column_name})') def __str__(self): print(f'{self.column_name}({self.id})')