63 lines
2.4 KiB
Python
63 lines
2.4 KiB
Python
from typing import Any, AnyStr, Dict
|
|
from sqlalchemy import Column, String, ForeignKey, Integer, Boolean
|
|
from sqlalchemy.orm import relationship
|
|
|
|
from db.models.base import Base, BaseMixin
|
|
|
|
|
|
class MetaDataTable(Base, BaseMixin):
|
|
__tablename__ = 'meta_data_table'
|
|
table_name = Column(String, unique=True)
|
|
table_columns = relationship("MetaDataColumn")
|
|
|
|
def __repr__(self):
|
|
return f'MetaDataTable({self.id} {self.table_name})'
|
|
|
|
def __str__(self):
|
|
return f'{self.table_name}({self.id})'
|
|
|
|
def import_dict(self, import_data: Dict[AnyStr, Any]):
|
|
self.id = import_data['id']
|
|
self.created_date = import_data['created_date']
|
|
self.last_modified_date = import_data['last_modified_date']
|
|
self.version = import_data['version']
|
|
self.table_name = import_data['table_name']
|
|
|
|
|
|
class MetaDataColumn(Base, BaseMixin):
|
|
__tablename__ = 'meta_data_column'
|
|
column_name = Column(String, nullable=False)
|
|
column_type = Column(String)
|
|
column_order = Column(Integer)
|
|
is_shown = Column(Boolean)
|
|
column_label = Column(String)
|
|
show_filter = Column(Boolean)
|
|
filter_label = Column(String)
|
|
ref_column = Column(String, nullable=True)
|
|
table_id = Column(String, ForeignKey('meta_data_table.id'))
|
|
table = relationship("MetaDataTable", back_populates="table_columns")
|
|
|
|
def __repr__(self):
|
|
if self.column_name is None:
|
|
return f'MetaDataColumn({self.id} {self.table.table_name}.__)'
|
|
else:
|
|
return f'MetaDataColumn({self.id} {self.table.table_name}.{self.column_name})'
|
|
|
|
def __str__(self):
|
|
return f'{self.column_name}({self.id})'
|
|
|
|
def import_dict(self, import_data: Dict[AnyStr, Any]):
|
|
self.id = import_data['id']
|
|
self.created_date = import_data['created_date']
|
|
self.last_modified_date = import_data['last_modified_date']
|
|
self.version = import_data['version']
|
|
self.column_name = import_data['column_name']
|
|
self.column_type = import_data['column_type']
|
|
self.column_order = import_data['column_order']
|
|
self.table_id = import_data['table_id']
|
|
self.is_shown = import_data['is_shown']
|
|
self.column_label = import_data['column_label']
|
|
self.show_filter = import_data['show_filter']
|
|
self.filter_label = import_data['filter_label']
|
|
self.ref_column = import_data['ref_column']
|