@@ -4,13 +4,15 @@ import type { ParentIdType } from '@fastgpt/global/common/parentFolder/type';
4
4
import type {
5
5
APIFileServer ,
6
6
YuqueServer ,
7
- FeishuServer
7
+ FeishuServer ,
8
+ ApiDatasetDetailResponse
8
9
} from '@fastgpt/global/core/dataset/apiDataset' ;
9
10
import { getProApiDatasetFileDetailRequest } from '@/service/core/dataset/apiDataset/controller' ;
10
11
import type { ApiRequestProps , ApiResponseType } from '@fastgpt/service/type/next' ;
11
12
import { authCert } from '@fastgpt/service/support/permission/auth/common' ;
12
13
import { authDataset } from '@fastgpt/service/support/permission/dataset/auth' ;
13
14
import { ManagePermissionVal } from '@fastgpt/global/support/permission/constant' ;
15
+ import { useApiDatasetRequest } from '@fastgpt/service/core/dataset/apiDataset/api' ;
14
16
15
17
export type GetApiDatasetPathQuery = { } ;
16
18
@@ -24,6 +26,24 @@ export type GetApiDatasetPathBody = {
24
26
25
27
export type GetApiDatasetPathResponse = string ;
26
28
29
+ const getFullPath = async (
30
+ currentId : string ,
31
+ getFileDetail : ( { apiFileId } : { apiFileId : string } ) => Promise < ApiDatasetDetailResponse >
32
+ ) : Promise < string > => {
33
+ const response = await getFileDetail ( { apiFileId : currentId } ) ;
34
+
35
+ if ( ! response ) {
36
+ return '' ;
37
+ }
38
+
39
+ if ( response . parentId && response . parentId !== null ) {
40
+ const parentPath = await getFullPath ( response . parentId , getFileDetail ) ;
41
+ return `${ parentPath } /${ response . name } ` ;
42
+ }
43
+
44
+ return `/${ response . name } ` ;
45
+ } ;
46
+
27
47
async function handler (
28
48
req : ApiRequestProps < GetApiDatasetPathBody , any > ,
29
49
res : ApiResponseType < GetApiDatasetPathResponse >
@@ -70,27 +90,22 @@ async function handler(
70
90
return Promise . reject ( DatasetErrEnum . noApiServer ) ;
71
91
}
72
92
73
- if ( apiServer || feishuServer ) {
74
- return Promise . reject ( '不支持获取 BaseUrl' ) ;
93
+ if ( feishuServer ) {
94
+ return '' ;
95
+ }
96
+
97
+ if ( apiServer ) {
98
+ return await getFullPath ( parentId , useApiDatasetRequest ( { apiServer } ) . getFileDetail ) ;
75
99
}
76
100
77
101
if ( yuqueServer ) {
78
- const getFullPath = async ( currentId : string ) : Promise < string > => {
79
- const response = await getProApiDatasetFileDetailRequest ( {
80
- feishuServer,
102
+ const yuqueFileGetter = async ( { apiFileId } : { apiFileId : string } ) => {
103
+ return await getProApiDatasetFileDetailRequest ( {
81
104
yuqueServer,
82
- apiFileId : currentId
105
+ apiFileId
83
106
} ) ;
84
-
85
- if ( response . parentId ) {
86
- const parentPath = await getFullPath ( response . parentId ) ;
87
- return `${ parentPath } /${ response . name } ` ;
88
- }
89
-
90
- return `/${ response . name } ` ;
91
107
} ;
92
-
93
- return await getFullPath ( parentId ) ;
108
+ return await getFullPath ( parentId , yuqueFileGetter ) ;
94
109
}
95
110
96
111
return Promise . reject ( new Error ( DatasetErrEnum . noApiServer ) ) ;
0 commit comments