99from apps .db .db import get_engine , get_tables , get_fields , exec_sql
1010from apps .db .engine import get_engine_config
1111from apps .db .engine import get_engine_conn
12+ from apps .db .type import db_type_relation
1213from common .core .deps import SessionDep , CurrentUser
1314from common .utils .utils import deepcopy_ignore_extra
1415from ..crud .field import delete_field_by_ds_id , update_field
1516from ..crud .table import delete_table_by_ds_id , update_table
16- from ..models .datasource import CoreDatasource , CreateDatasource , CoreTable , CoreField , ColumnSchema , EditObj , \
17- DatasourceConf
18- from apps .db .type import db_type_relation
17+ from ..models .datasource import CoreDatasource , CreateDatasource , CoreTable , CoreField , ColumnSchema , TableObj , \
18+ DatasourceConf , TableAndFields
1919
2020
2121def get_datasource_list (session : SessionDep ):
@@ -186,13 +186,13 @@ def sync_fields(session: SessionDep, ds: CoreDatasource, table: CoreTable, field
186186 session .commit ()
187187
188188
189- def update_table_and_fields (session : SessionDep , data : EditObj ):
189+ def update_table_and_fields (session : SessionDep , data : TableObj ):
190190 update_table (session , data .table )
191191 for field in data .fields :
192192 update_field (session , field )
193193
194194
195- def preview (session : SessionDep , id : int , data : EditObj ):
195+ def preview (session : SessionDep , id : int , data : TableObj ):
196196 ds = session .query (CoreDatasource ).filter (CoreDatasource .id == id ).first ()
197197 conf = DatasourceConf (** json .loads (aes_decrypt (ds .configuration ))) if ds .type != "excel" else get_engine_config ()
198198 sql : str = ""
@@ -209,3 +209,12 @@ def preview(session: SessionDep, id: int, data: EditObj):
209209 ORDER BY "{ data .fields [0 ].field_name } "
210210 OFFSET 0 ROWS FETCH NEXT 100 ROWS ONLY"""
211211 return exec_sql (ds , sql )
212+
213+
214+ def get_tableobj_by_ds (session : SessionDep , id : int ) -> List [TableAndFields ]:
215+ list : List = []
216+ tables = session .query (CoreTable ).filter (CoreTable .ds_id == id ).all ()
217+ for table in tables :
218+ fields = session .query (CoreField ).filter (and_ (CoreField .table_id == table .id , CoreField .checked == True )).all ()
219+ list .append (TableAndFields (table = table , fields = fields ))
220+ return list
0 commit comments