feat(sandbox): add sandbox file API service layer

- Add types for sandbox file API (SandboxFileNode, SandboxFileDownloadTicket)
- Add oRPC contracts for listFiles and downloadFile endpoints
- Add TanStack Query hooks (useGetSandboxFiles, useDownloadSandboxFile)
- Add useSandboxFilesTree hook with flat-to-tree conversion
This commit is contained in:
yyh
2026-01-26 15:40:27 +08:00
parent 694ed4f5e3
commit 166b4a5a2b
4 changed files with 230 additions and 0 deletions

View File

@ -0,0 +1,30 @@
import type {
SandboxFileDownloadRequest,
SandboxFileDownloadTicket,
SandboxFileListQuery,
SandboxFileNode,
} from '@/types/sandbox-file'
import { type } from '@orpc/contract'
import { base } from '../base'
export const listFilesContract = base
.route({
path: '/sandboxes/{sandboxId}/files',
method: 'GET',
})
.input(type<{
params: { sandboxId: string }
query?: SandboxFileListQuery
}>())
.output(type<SandboxFileNode[]>())
export const downloadFileContract = base
.route({
path: '/sandboxes/{sandboxId}/files/download',
method: 'POST',
})
.input(type<{
params: { sandboxId: string }
body: SandboxFileDownloadRequest
}>())
.output(type<SandboxFileDownloadTicket>())