mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-11 12:07:42 +00:00
feat:Support kyuubi presto trino (#2109)
This commit is contained in:
@@ -24,6 +24,7 @@ const ModelBasicForm: React.FC<Props> = ({
|
||||
mode = 'normal',
|
||||
}) => {
|
||||
const [currentDbLinkConfigId, setCurrentDbLinkConfigId] = useState<number>();
|
||||
const [currentCatalog, setCurrentCatalog] = useState<string>("");
|
||||
const [catalogList, setCatalogList] = useState<string[]>([]);
|
||||
const [dbNameList, setDbNameList] = useState<string[]>([]);
|
||||
const [tableNameList, setTableNameList] = useState<any[]>([]);
|
||||
@@ -55,8 +56,8 @@ const ModelBasicForm: React.FC<Props> = ({
|
||||
|
||||
const onDatabaseSelect = (databaseId: number, type: string) => {
|
||||
setLoading(true);
|
||||
if (type === 'STARROCKS') {
|
||||
queryCatalogList(databaseId)
|
||||
if (type === 'STARROCKS' || type === 'KYUUBI' || type === 'PRESTO' || type === 'TRINO') {
|
||||
queryCatalogList(databaseId);
|
||||
setCatalogSelectOpen(true);
|
||||
setDbNameList([]);
|
||||
} else {
|
||||
@@ -88,9 +89,11 @@ const ModelBasicForm: React.FC<Props> = ({
|
||||
queryDbNameList(currentDbLinkConfigId, catalog);
|
||||
}
|
||||
form.setFieldsValue({
|
||||
catalog: catalog,
|
||||
dbName: undefined,
|
||||
tableName: undefined,
|
||||
})
|
||||
setCurrentCatalog(catalog);
|
||||
}
|
||||
|
||||
const queryDbNameList = async (databaseId: number, catalog: string) => {
|
||||
@@ -110,7 +113,7 @@ const ModelBasicForm: React.FC<Props> = ({
|
||||
return;
|
||||
}
|
||||
setLoading(true);
|
||||
const { code, data, msg } = await getTables(currentDbLinkConfigId, databaseName);
|
||||
const { code, data, msg } = await getTables(currentDbLinkConfigId, currentCatalog, databaseName);
|
||||
setLoading(false);
|
||||
if (code === 200) {
|
||||
const list = data || [];
|
||||
@@ -136,6 +139,7 @@ const ModelBasicForm: React.FC<Props> = ({
|
||||
onSelect={(dbLinkConfigId: number, option) => {
|
||||
onDatabaseSelect(dbLinkConfigId, option.type);
|
||||
setCurrentDbLinkConfigId(dbLinkConfigId);
|
||||
setCurrentCatalog("");
|
||||
}}
|
||||
>
|
||||
{databaseConfigList.map((item) => (
|
||||
|
||||
@@ -351,12 +351,24 @@ const ModelCreateForm: React.FC<CreateFormProps> = ({
|
||||
let columns = fieldColumns || [];
|
||||
if (queryType === 'table_query') {
|
||||
const tableQueryString = tableQuery || '';
|
||||
const [dbName, tableName] = tableQueryString.split('.');
|
||||
columns = await queryTableColumnList(modelItem.databaseId, dbName, tableName);
|
||||
tableQueryInitValue = {
|
||||
dbName,
|
||||
tableName,
|
||||
};
|
||||
if (tableQueryString.split('.').length === 3) {
|
||||
const [catalog, dbName, tableName] = tableQueryString.split('.');
|
||||
columns = await queryTableColumnList(modelItem.databaseId, catalog, dbName, tableName);
|
||||
tableQueryInitValue = {
|
||||
catalog,
|
||||
dbName,
|
||||
tableName,
|
||||
};
|
||||
}
|
||||
if (tableQueryString.split('.').length === 2) {
|
||||
const [dbName, tableName] = tableQueryString.split('.');
|
||||
columns = await queryTableColumnList(modelItem.databaseId, '', dbName, tableName);
|
||||
tableQueryInitValue = {
|
||||
catalog: '',
|
||||
dbName,
|
||||
tableName,
|
||||
};
|
||||
}
|
||||
}
|
||||
formatterInitData(columns, tableQueryInitValue);
|
||||
};
|
||||
@@ -426,8 +438,8 @@ const ModelCreateForm: React.FC<CreateFormProps> = ({
|
||||
setFields(result);
|
||||
};
|
||||
|
||||
const queryTableColumnList = async (databaseId: number, dbName: string, tableName: string) => {
|
||||
const { code, data, msg } = await getColumns(databaseId, dbName, tableName);
|
||||
const queryTableColumnList = async (databaseId: number, catalog: string, dbName: string, tableName: string) => {
|
||||
const { code, data, msg } = await getColumns(databaseId, catalog, dbName, tableName);
|
||||
if (code === 200) {
|
||||
const list = data || [];
|
||||
const columns = list.map((item: any, index: number) => {
|
||||
@@ -563,10 +575,10 @@ const ModelCreateForm: React.FC<CreateFormProps> = ({
|
||||
}}
|
||||
onValuesChange={(value, values) => {
|
||||
const { tableName } = value;
|
||||
const { dbName, databaseId } = values;
|
||||
const { catalog, dbName, databaseId } = values;
|
||||
setFormDatabaseId(databaseId);
|
||||
if (tableName) {
|
||||
queryTableColumnList(databaseId, dbName, tableName);
|
||||
queryTableColumnList(databaseId, catalog, dbName, tableName);
|
||||
}
|
||||
}}
|
||||
className={styles.form}
|
||||
|
||||
@@ -398,21 +398,23 @@ export function getDbNames(dbId: number, catalog: string): Promise<any> {
|
||||
});
|
||||
}
|
||||
|
||||
export function getTables(databaseId: number, dbName: string): Promise<any> {
|
||||
export function getTables(databaseId: number, catalog: string, dbName: string): Promise<any> {
|
||||
return request(`${process.env.API_BASE_URL}database/getTables`, {
|
||||
method: 'GET',
|
||||
params: {
|
||||
databaseId,
|
||||
catalog: catalog,
|
||||
db: dbName,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function getColumns(databaseId: number, dbName: string, tableName: string): Promise<any> {
|
||||
export function getColumns(databaseId: number, catalog: string, dbName: string, tableName: string): Promise<any> {
|
||||
return request(`${process.env.API_BASE_URL}database/getColumnsByName`, {
|
||||
method: 'GET',
|
||||
params: {
|
||||
databaseId,
|
||||
catalog: catalog,
|
||||
db: dbName,
|
||||
table: tableName,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user