mirror of
https://gh-proxy.org/https://github.com/klinsmaya/SQLBot.git
synced 2026-11-08 01:06:59 +08:00
feat(datasource): provide checked tables and fields
This commit is contained in:
@@ -12,7 +12,7 @@ from ..crud.datasource import get_datasource_list, check_status, create_ds, upda
|
||||
execSql, update_table_and_fields, getTablesByDs, chooseTables, preview
|
||||
from ..crud.field import get_fields_by_table_id
|
||||
from ..crud.table import get_tables_by_ds_id
|
||||
from ..models.datasource import CoreDatasource, CreateDatasource, EditObj, CoreTable
|
||||
from ..models.datasource import CoreDatasource, CreateDatasource, TableObj, CoreTable
|
||||
|
||||
router = APIRouter(tags=["datasource"], prefix="/datasource")
|
||||
path = "/opt/sqlbot/data/excel"
|
||||
@@ -79,12 +79,12 @@ async def field_list(session: SessionDep, id: int):
|
||||
|
||||
|
||||
@router.post("/editLocalComment")
|
||||
async def edit_local(session: SessionDep, data: EditObj):
|
||||
async def edit_local(session: SessionDep, data: TableObj):
|
||||
update_table_and_fields(session, data)
|
||||
|
||||
|
||||
@router.post("/previewData/{id}")
|
||||
async def edit_local(session: SessionDep, id: int, data: EditObj):
|
||||
async def edit_local(session: SessionDep, id: int, data: TableObj):
|
||||
return preview(session, id, data)
|
||||
|
||||
|
||||
|
||||
@@ -9,13 +9,13 @@ from apps.datasource.utils.utils import aes_decrypt
|
||||
from apps.db.db import get_engine, get_tables, get_fields, exec_sql
|
||||
from apps.db.engine import get_engine_config
|
||||
from apps.db.engine import get_engine_conn
|
||||
from apps.db.type import db_type_relation
|
||||
from common.core.deps import SessionDep, CurrentUser
|
||||
from common.utils.utils import deepcopy_ignore_extra
|
||||
from ..crud.field import delete_field_by_ds_id, update_field
|
||||
from ..crud.table import delete_table_by_ds_id, update_table
|
||||
from ..models.datasource import CoreDatasource, CreateDatasource, CoreTable, CoreField, ColumnSchema, EditObj, \
|
||||
DatasourceConf
|
||||
from apps.db.type import db_type_relation
|
||||
from ..models.datasource import CoreDatasource, CreateDatasource, CoreTable, CoreField, ColumnSchema, TableObj, \
|
||||
DatasourceConf, TableAndFields
|
||||
|
||||
|
||||
def get_datasource_list(session: SessionDep):
|
||||
@@ -186,13 +186,13 @@ def sync_fields(session: SessionDep, ds: CoreDatasource, table: CoreTable, field
|
||||
session.commit()
|
||||
|
||||
|
||||
def update_table_and_fields(session: SessionDep, data: EditObj):
|
||||
def update_table_and_fields(session: SessionDep, data: TableObj):
|
||||
update_table(session, data.table)
|
||||
for field in data.fields:
|
||||
update_field(session, field)
|
||||
|
||||
|
||||
def preview(session: SessionDep, id: int, data: EditObj):
|
||||
def preview(session: SessionDep, id: int, data: TableObj):
|
||||
ds = session.query(CoreDatasource).filter(CoreDatasource.id == id).first()
|
||||
conf = DatasourceConf(**json.loads(aes_decrypt(ds.configuration))) if ds.type != "excel" else get_engine_config()
|
||||
sql: str = ""
|
||||
@@ -209,3 +209,12 @@ def preview(session: SessionDep, id: int, data: EditObj):
|
||||
ORDER BY "{data.fields[0].field_name}"
|
||||
OFFSET 0 ROWS FETCH NEXT 100 ROWS ONLY"""
|
||||
return exec_sql(ds, sql)
|
||||
|
||||
|
||||
def get_tableobj_by_ds(session: SessionDep, id: int) -> List[TableAndFields]:
|
||||
list: List = []
|
||||
tables = session.query(CoreTable).filter(CoreTable.ds_id == id).all()
|
||||
for table in tables:
|
||||
fields = session.query(CoreField).filter(and_(CoreField.table_id == table.id, CoreField.checked == True)).all()
|
||||
list.append(TableAndFields(table=table, fields=fields))
|
||||
return list
|
||||
|
||||
@@ -9,7 +9,8 @@ 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).all()
|
||||
return session.query(CoreField).filter(CoreField.table_id == id).order_by(
|
||||
CoreField.field_name.asc()).all()
|
||||
|
||||
|
||||
def update_field(session: SessionDep, item: CoreField):
|
||||
|
||||
@@ -55,7 +55,7 @@ class CreateDatasource(BaseModel):
|
||||
|
||||
|
||||
# edit local saved table and fields
|
||||
class EditObj(BaseModel):
|
||||
class TableObj(BaseModel):
|
||||
table: CoreTable = None
|
||||
fields: List[CoreField] = []
|
||||
|
||||
@@ -108,3 +108,12 @@ class ColumnSchema:
|
||||
fieldName: str
|
||||
fieldType: str
|
||||
fieldComment: str
|
||||
|
||||
|
||||
class TableAndFields:
|
||||
def __init__(self, table, fields):
|
||||
self.table = table
|
||||
self.fields = fields
|
||||
|
||||
table: CoreTable
|
||||
fields: List[CoreField]
|
||||
|
||||
Reference in New Issue
Block a user