Skip to content

Commit 83d94ee

Browse files
committed
feat(datasource): provide checked tables and fields
1 parent 689d7ad commit 83d94ee

File tree

4 files changed

+29
-10
lines changed

4 files changed

+29
-10
lines changed

backend/apps/datasource/api/datasource.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
execSql, update_table_and_fields, getTablesByDs, chooseTables, preview
1313
from ..crud.field import get_fields_by_table_id
1414
from ..crud.table import get_tables_by_ds_id
15-
from ..models.datasource import CoreDatasource, CreateDatasource, EditObj, CoreTable
15+
from ..models.datasource import CoreDatasource, CreateDatasource, TableObj, CoreTable
1616

1717
router = APIRouter(tags=["datasource"], prefix="/datasource")
1818
path = "/opt/sqlbot/data/excel"
@@ -79,12 +79,12 @@ async def field_list(session: SessionDep, id: int):
7979

8080

8181
@router.post("/editLocalComment")
82-
async def edit_local(session: SessionDep, data: EditObj):
82+
async def edit_local(session: SessionDep, data: TableObj):
8383
update_table_and_fields(session, data)
8484

8585

8686
@router.post("/previewData/{id}")
87-
async def edit_local(session: SessionDep, id: int, data: EditObj):
87+
async def edit_local(session: SessionDep, id: int, data: TableObj):
8888
return preview(session, id, data)
8989

9090

backend/apps/datasource/crud/datasource.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@
99
from apps.db.db import get_engine, get_tables, get_fields, exec_sql
1010
from apps.db.engine import get_engine_config
1111
from apps.db.engine import get_engine_conn
12+
from apps.db.type import db_type_relation
1213
from common.core.deps import SessionDep, CurrentUser
1314
from common.utils.utils import deepcopy_ignore_extra
1415
from ..crud.field import delete_field_by_ds_id, update_field
1516
from ..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

2121
def 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

backend/apps/datasource/crud/field.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ def delete_field_by_ds_id(session: SessionDep, id: int):
99

1010

1111
def get_fields_by_table_id(session: SessionDep, id: int):
12-
return session.query(CoreField).filter(CoreField.table_id == id).all()
12+
return session.query(CoreField).filter(CoreField.table_id == id).order_by(
13+
CoreField.field_name.asc()).all()
1314

1415

1516
def update_field(session: SessionDep, item: CoreField):

backend/apps/datasource/models/datasource.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class CreateDatasource(BaseModel):
5555

5656

5757
# edit local saved table and fields
58-
class EditObj(BaseModel):
58+
class TableObj(BaseModel):
5959
table: CoreTable = None
6060
fields: List[CoreField] = []
6161

@@ -108,3 +108,12 @@ def __init__(self, attr1, attr2, attr3):
108108
fieldName: str
109109
fieldType: str
110110
fieldComment: str
111+
112+
113+
class TableAndFields:
114+
def __init__(self, table, fields):
115+
self.table = table
116+
self.fields = fields
117+
118+
table: CoreTable
119+
fields: List[CoreField]

0 commit comments

Comments
 (0)