mirror of
https://github.com/langgenius/dify.git
synced 2026-05-03 08:58:09 +08:00
- Add TypeScript types for app asset management (types/app-asset.ts) - Add oRPC contract definitions with nested router pattern (contract/console/app-asset.ts) - Add React Query hooks for all asset operations (service/use-app-asset.ts) - Integrate app asset contracts into console router Endpoints covered: tree, createFolder, createFile, getFileContent, updateFileContent, deleteNode, renameNode, moveNode, reorderNode, publish
120 lines
2.7 KiB
TypeScript
120 lines
2.7 KiB
TypeScript
import type {
|
|
AppAssetDeleteResponse,
|
|
AppAssetFileContentResponse,
|
|
AppAssetNode,
|
|
AppAssetPublishResponse,
|
|
AppAssetTreeResponse,
|
|
CreateFolderPayload,
|
|
MoveNodePayload,
|
|
RenameNodePayload,
|
|
ReorderNodePayload,
|
|
UpdateFileContentPayload,
|
|
} from '@/types/app-asset'
|
|
import { type } from '@orpc/contract'
|
|
import { base } from '../base'
|
|
|
|
export const treeContract = base
|
|
.route({
|
|
path: '/apps/{appId}/assets/tree',
|
|
method: 'GET',
|
|
})
|
|
.input(type<{
|
|
params: { appId: string }
|
|
}>())
|
|
.output(type<AppAssetTreeResponse>())
|
|
|
|
export const createFolderContract = base
|
|
.route({
|
|
path: '/apps/{appId}/assets/folders',
|
|
method: 'POST',
|
|
})
|
|
.input(type<{
|
|
params: { appId: string }
|
|
body: CreateFolderPayload
|
|
}>())
|
|
.output(type<AppAssetNode>())
|
|
|
|
export const createFileContract = base
|
|
.route({
|
|
path: '/apps/{appId}/assets/files',
|
|
method: 'POST',
|
|
})
|
|
.input(type<{
|
|
params: { appId: string }
|
|
}>())
|
|
.output(type<AppAssetNode>())
|
|
|
|
export const getFileContentContract = base
|
|
.route({
|
|
path: '/apps/{appId}/assets/files/{nodeId}',
|
|
method: 'GET',
|
|
})
|
|
.input(type<{
|
|
params: { appId: string, nodeId: string }
|
|
}>())
|
|
.output(type<AppAssetFileContentResponse>())
|
|
|
|
export const updateFileContentContract = base
|
|
.route({
|
|
path: '/apps/{appId}/assets/files/{nodeId}',
|
|
method: 'PUT',
|
|
})
|
|
.input(type<{
|
|
params: { appId: string, nodeId: string }
|
|
body: UpdateFileContentPayload
|
|
}>())
|
|
.output(type<AppAssetNode>())
|
|
|
|
export const deleteNodeContract = base
|
|
.route({
|
|
path: '/apps/{appId}/assets/nodes/{nodeId}',
|
|
method: 'DELETE',
|
|
})
|
|
.input(type<{
|
|
params: { appId: string, nodeId: string }
|
|
}>())
|
|
.output(type<AppAssetDeleteResponse>())
|
|
|
|
export const renameNodeContract = base
|
|
.route({
|
|
path: '/apps/{appId}/assets/nodes/{nodeId}/rename',
|
|
method: 'POST',
|
|
})
|
|
.input(type<{
|
|
params: { appId: string, nodeId: string }
|
|
body: RenameNodePayload
|
|
}>())
|
|
.output(type<AppAssetNode>())
|
|
|
|
export const moveNodeContract = base
|
|
.route({
|
|
path: '/apps/{appId}/assets/nodes/{nodeId}/move',
|
|
method: 'POST',
|
|
})
|
|
.input(type<{
|
|
params: { appId: string, nodeId: string }
|
|
body: MoveNodePayload
|
|
}>())
|
|
.output(type<AppAssetNode>())
|
|
|
|
export const reorderNodeContract = base
|
|
.route({
|
|
path: '/apps/{appId}/assets/nodes/{nodeId}/reorder',
|
|
method: 'POST',
|
|
})
|
|
.input(type<{
|
|
params: { appId: string, nodeId: string }
|
|
body: ReorderNodePayload
|
|
}>())
|
|
.output(type<AppAssetNode>())
|
|
|
|
export const publishContract = base
|
|
.route({
|
|
path: '/apps/{appId}/assets/publish',
|
|
method: 'POST',
|
|
})
|
|
.input(type<{
|
|
params: { appId: string }
|
|
}>())
|
|
.output(type<AppAssetPublishResponse>())
|