mirror of
https://gh-proxy.org/https://github.com/klinsmaya/SQLBot.git
synced 2026-11-08 01:06:59 +08:00
fix: Assistant change ds by workspace
This commit is contained in:
@@ -18,6 +18,11 @@ from ..models.datasource import CoreDatasource, CreateDatasource, TableObj, Core
|
||||
router = APIRouter(tags=["datasource"], prefix="/datasource")
|
||||
path = "/opt/sqlbot/data/excel"
|
||||
|
||||
@router.get("/ws/{oid}", include_in_schema=False)
|
||||
async def query_by_oid(session: SessionDep, user: CurrentUser, oid: int) -> List[CoreDatasource]:
|
||||
if not user.isAdmin:
|
||||
raise Exception("no permission to execute")
|
||||
return get_datasource_list(session=session, user=user, oid=oid)
|
||||
|
||||
@router.get("/list")
|
||||
async def datasource_list(session: SessionDep, user: CurrentUser):
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import datetime
|
||||
import json
|
||||
from typing import List
|
||||
from typing import List, Optional
|
||||
|
||||
from fastapi import HTTPException
|
||||
from sqlalchemy import and_, text, cast, or_, func
|
||||
@@ -25,10 +25,13 @@ from ..models.datasource import CoreDatasource, CreateDatasource, CoreTable, Cor
|
||||
DatasourceConf, TableAndFields
|
||||
|
||||
|
||||
def get_datasource_list(session: SessionDep, user: CurrentUser):
|
||||
oid = user.oid if user.oid is not None else 1
|
||||
return session.query(CoreDatasource).filter(CoreDatasource.oid == oid).order_by(
|
||||
func.convert_to(CoreDatasource.name, 'gbk')).all()
|
||||
def get_datasource_list(session: SessionDep, user: CurrentUser, oid: Optional[int] = None) -> List[CoreDatasource]:
|
||||
current_oid = user.oid if user.oid is not None else 1
|
||||
if user.isAdmin and oid:
|
||||
current_oid = oid
|
||||
return session.exec(select(CoreDatasource).where(CoreDatasource.oid == current_oid).order_by(
|
||||
func.convert_to(CoreDatasource.name, 'gbk'))).all()
|
||||
|
||||
|
||||
|
||||
def get_ds(session: SessionDep, id: int):
|
||||
|
||||
@@ -5,3 +5,4 @@ export const updateAssistant = (data: any) => request.put('/system/assistant', d
|
||||
export const saveAssistant = (data: any) => request.post('/system/assistant', data)
|
||||
export const getOne = (id: any) => request.get(`/system/assistant/${id}`)
|
||||
export const delOne = (id: any) => request.delete(`/system/assistant/${id}`)
|
||||
export const dsApi = (id: any) => request.get(`/datasource/ws/${id}`)
|
||||
|
||||
@@ -14,8 +14,7 @@ import icon_copy_outlined from '@/assets/embedded/icon_copy_outlined.svg'
|
||||
import Card from './Card.vue'
|
||||
import { workspaceList } from '@/api/workspace'
|
||||
import DsCard from './DsCard.vue'
|
||||
import { datasourceApi } from '@/api/datasource'
|
||||
import { getList, updateAssistant, saveAssistant, delOne } from '@/api/embedded'
|
||||
import { getList, updateAssistant, saveAssistant, delOne, dsApi } from '@/api/embedded'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { cloneDeep } from 'lodash-es'
|
||||
|
||||
@@ -49,7 +48,7 @@ const currentEmbedded = reactive<any>(cloneDeep(defaultEmbedded))
|
||||
|
||||
const isCreate = ref(false)
|
||||
const defaultForm = {
|
||||
oid: '',
|
||||
oid: 1,
|
||||
private_list: [] as any,
|
||||
}
|
||||
const dsForm = reactive(cloneDeep(defaultForm))
|
||||
@@ -107,9 +106,13 @@ const handleAddEmbedded = (val: any) => {
|
||||
handleAdvancedEmbedded(null)
|
||||
}
|
||||
}
|
||||
|
||||
const wsChanged = (val: any) => {
|
||||
dsForm.private_list = []
|
||||
dsForm.oid = val
|
||||
getDsList()
|
||||
}
|
||||
const getDsList = () => {
|
||||
datasourceApi.list().then((res: any) => {
|
||||
dsApi(dsForm.oid).then((res: any) => {
|
||||
dsListOptions.value = res || []
|
||||
if (!currentEmbedded.id) {
|
||||
dsForm.private_list = dsListOptions.value.map((ele) => ele.id)
|
||||
@@ -119,10 +122,10 @@ const getDsList = () => {
|
||||
const handleBaseEmbedded = (row: any) => {
|
||||
advancedApplication.value = false
|
||||
initWorkspace()
|
||||
getDsList()
|
||||
if (row) {
|
||||
Object.assign(dsForm, JSON.parse(row.configuration))
|
||||
}
|
||||
getDsList()
|
||||
ruleConfigvVisible.value = true
|
||||
dialogTitle.value = row?.id
|
||||
? t('embedded.edit_basic_applications')
|
||||
@@ -697,6 +700,7 @@ const saveHandler = () => {
|
||||
:placeholder="
|
||||
$t('datasource.please_enter') + $t('common.empty') + $t('user.workspace')
|
||||
"
|
||||
@change="wsChanged"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in workspaces"
|
||||
|
||||
Reference in New Issue
Block a user