diff --git a/backend/apps/datasource/api/datasource.py b/backend/apps/datasource/api/datasource.py index b98ffcd4..5cda29b7 100644 --- a/backend/apps/datasource/api/datasource.py +++ b/backend/apps/datasource/api/datasource.py @@ -1,6 +1,6 @@ from fastapi import APIRouter from ..crud.datasource import get_datasource_list, check_status, create_ds, update_ds, delete_ds, getTables, getFields, \ - execSql, update_table_and_fields, getTablesByDs, chooseTables + execSql, update_table_and_fields, getTablesByDs, chooseTables, preview from common.core.deps import SessionDep from ..models.datasource import CoreDatasource, CreateDatasource, EditObj, CoreTable from ..crud.table import get_tables_by_ds_id @@ -73,3 +73,8 @@ async def field_list(session: SessionDep, id: int): @router.post("/editLocalComment") async def edit_local(session: SessionDep, data: EditObj): update_table_and_fields(session, data) + + +@router.post("/previewData/{id}") +async def edit_local(session: SessionDep, id: int, data: EditObj): + return preview(session, id, data) diff --git a/backend/apps/datasource/crud/datasource.py b/backend/apps/datasource/crud/datasource.py index c69a8971..94ff11c7 100644 --- a/backend/apps/datasource/crud/datasource.py +++ b/backend/apps/datasource/crud/datasource.py @@ -167,3 +167,11 @@ def update_table_and_fields(session: SessionDep, data: EditObj): update_table(session, data.table) for field in data.fields: update_field(session, field) + + +def preview(session: SessionDep, id: int, data: EditObj): + ds = session.query(CoreDatasource).filter(CoreDatasource.id == id).first() + sql: str = "" + if ds.type == "mysql": + sql = f"""SELECT {", ".join([f.field_name for f in data.fields if f.checked])} FROM {data.table.table_name} LIMIT 100""" + return exec_sql(ds, sql) diff --git a/backend/apps/datasource/crud/field.py b/backend/apps/datasource/crud/field.py index d36b58a0..eafe3e46 100644 --- a/backend/apps/datasource/crud/field.py +++ b/backend/apps/datasource/crud/field.py @@ -9,10 +9,12 @@ def delete_field_by_ds_id(session: SessionDep, id: int): def get_fields_by_table_id(session: SessionDep, id: int): - return session.query(CoreField).filter(CoreField.table_id == id).order_by( - CoreField.field_name.asc()).all() + return session.query(CoreField).filter(CoreField.table_id == id).all() def update_field(session: SessionDep, item: CoreField): - session.add(item) + record = session.query(CoreField).filter(CoreField.id == item.id).first() + record.checked = item.checked + record.custom_comment = item.custom_comment + session.add(record) session.commit() diff --git a/backend/apps/datasource/crud/table.py b/backend/apps/datasource/crud/table.py index 23ba567d..f76d5fa2 100644 --- a/backend/apps/datasource/crud/table.py +++ b/backend/apps/datasource/crud/table.py @@ -14,5 +14,8 @@ def get_tables_by_ds_id(session: SessionDep, id: int): def update_table(session: SessionDep, item: CoreTable): - session.add(item) + record = session.query(CoreTable).filter(CoreTable.id == item.id).first() + record.checked = item.checked + record.custom_comment = item.custom_comment + session.add(record) session.commit() diff --git a/frontend/src/api/datasource.ts b/frontend/src/api/datasource.ts index 539872ad..1240e45d 100644 --- a/frontend/src/api/datasource.ts +++ b/frontend/src/api/datasource.ts @@ -11,5 +11,8 @@ export const datasourceApi = { getFields: (id: Number, table_name: string) => request.post(`/datasource/getFields/${id}/${table_name}`), execSql: (id: Number, sql: string) => request.post(`/datasource/execSql/${id}/${sql}`), chooseTables: (id: Number, data: any) => request.post(`/datasource/chooseTables/${id}`, data), - tableList: (id: Number) => request.post(`/datasource/tableList/${id}`) + tableList: (id: Number) => request.post(`/datasource/tableList/${id}`), + fieldList: (id: Number) => request.post(`/datasource/fieldList/${id}`), + edit: (data: any) => request.post('/datasource/editLocalComment', data), + previewData: (id: Number, data: any) => request.post(`/datasource/previewData/${id}`, data), } \ No newline at end of file diff --git a/frontend/src/views/ds/TableList.vue b/frontend/src/views/ds/TableList.vue index 654ca5a0..8d698ec3 100644 --- a/frontend/src/views/ds/TableList.vue +++ b/frontend/src/views/ds/TableList.vue @@ -5,145 +5,132 @@ {{ props.dsName }} - - Save - - - + + + Tables + + + {{ item.table_name }} + + + + No data + + + + {{ currentTable.table_name }} + | + + + + + + Save + + + + + + + + + + + + + + + + + + + + + + + + + + Preview 100 items + + + + + + + - - - Detail - - - - - - - - - Cancel - Confirm - - - \ No newline at end of file