add CRUD for WorkType
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
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})'
|
||||
|
||||
|
||||
class MetaDataColumn(Base, BaseMixin):
|
||||
__tablename__ = 'meta_data_column'
|
||||
column_name = Column(String, nullable=False)
|
||||
column_sync_name = Column(String)
|
||||
column_type = Column(String)
|
||||
column_modifier = Column(String, nullable=True)
|
||||
column_order = Column(Integer)
|
||||
table_id = Column(String, ForeignKey('meta_data_table.id'))
|
||||
table = relationship("MetaDataTable", back_populates="table_columns")
|
||||
column_label = Column(String)
|
||||
filter_label = Column(String)
|
||||
is_shown = Column(Boolean)
|
||||
show_filter = Column(Boolean)
|
||||
ref_column = Column(String, nullable=True)
|
||||
|
||||
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})'
|
||||
@@ -0,0 +1,28 @@
|
||||
|
||||
from typing import List
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from db.models.metadata import MetaDataColumn, MetaDataTable
|
||||
from db.schemas.metadata import MetaDataTableResponse, MetaDataColumnResponse
|
||||
|
||||
|
||||
def get_tables(db: Session) -> List[MetaDataTableResponse]:
|
||||
tables = db.query(MetaDataTable).all()
|
||||
results: List[MetaDataTableResponse] = [MetaDataTableResponse(id=table.id, name=table.table_name) for table in tables]
|
||||
return results
|
||||
|
||||
|
||||
def get_columns_for_table(db: Session, table: MetaDataTableResponse)-> List[MetaDataColumnResponse]:
|
||||
columns = db.query(MetaDataColumn).filter_by(table_id = table.id).all()
|
||||
results: List[MetaDataColumnResponse] = []
|
||||
for column in columns:
|
||||
result: MetaDataColumnResponse = MetaDataColumnResponse(
|
||||
id=str(column.id),
|
||||
name=column.column_name,
|
||||
label=column.column_label,
|
||||
order=column.column_order,
|
||||
ref_column=column.ref_column,
|
||||
column_type=column.column_type)
|
||||
results.append(result)
|
||||
return results
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
from pydantic import BaseModel, PositiveInt
|
||||
|
||||
|
||||
class MetaDataTableResponse(BaseModel):
|
||||
id: str
|
||||
name: str
|
||||
|
||||
|
||||
class MetaDataColumnResponse(BaseModel):
|
||||
id: str
|
||||
name: str
|
||||
label: str
|
||||
order: PositiveInt
|
||||
ref_column: str | None
|
||||
column_type: str
|
||||
Reference in New Issue
Block a user