feat(web): add file manager and task types with API clients
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
49
web/src/api/files.ts
Normal file
49
web/src/api/files.ts
Normal file
@@ -0,0 +1,49 @@
|
||||
import type { ApiResponse } from '@/types/jobs'
|
||||
import apiClient from '@/api/client'
|
||||
import type { FileResponse, ListFilesResponse, UploadSessionResponse, InitUploadRequest, FolderResponse, CreateFolderRequest } from '@/types/files'
|
||||
|
||||
export function listFiles(params?: { folder_id?: number; page?: number; page_size?: number; search?: string }): Promise<ApiResponse<ListFilesResponse>> {
|
||||
return apiClient.get('/files', { params })
|
||||
}
|
||||
|
||||
export function getFile(id: number): Promise<ApiResponse<FileResponse>> {
|
||||
return apiClient.get(`/files/${id}`)
|
||||
}
|
||||
|
||||
export function deleteFile(id: number): Promise<ApiResponse<{ message: string }>> {
|
||||
return apiClient.delete(`/files/${id}`)
|
||||
}
|
||||
|
||||
export function downloadFileUrl(id: number): string {
|
||||
return `/api/v1/files/${id}/download`
|
||||
}
|
||||
|
||||
export function initUpload(data: InitUploadRequest): Promise<ApiResponse<FileResponse | UploadSessionResponse>> {
|
||||
return apiClient.post('/files/uploads', data)
|
||||
}
|
||||
|
||||
export function uploadChunk(sessionId: number, chunkIndex: number, chunk: Blob): Promise<ApiResponse<{ message: string }>> {
|
||||
const formData = new FormData()
|
||||
formData.append('chunk', chunk)
|
||||
return apiClient.put(`/files/uploads/${sessionId}/chunks/${chunkIndex}`, formData)
|
||||
}
|
||||
|
||||
export function completeUpload(sessionId: number): Promise<ApiResponse<FileResponse>> {
|
||||
return apiClient.post(`/files/uploads/${sessionId}/complete`)
|
||||
}
|
||||
|
||||
export function cancelUpload(sessionId: number): Promise<ApiResponse<{ message: string }>> {
|
||||
return apiClient.post(`/files/uploads/${sessionId}/cancel`)
|
||||
}
|
||||
|
||||
export function listFolders(params?: { parent_id?: number | null }): Promise<ApiResponse<FolderResponse[]>> {
|
||||
return apiClient.get('/files/folders', { params })
|
||||
}
|
||||
|
||||
export function createFolder(data: CreateFolderRequest): Promise<ApiResponse<FolderResponse>> {
|
||||
return apiClient.post('/files/folders', data)
|
||||
}
|
||||
|
||||
export function deleteFolder(id: number): Promise<ApiResponse<{ message: string }>> {
|
||||
return apiClient.delete(`/files/folders/${id}`)
|
||||
}
|
||||
15
web/src/api/tasks.ts
Normal file
15
web/src/api/tasks.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import type { ApiResponse } from '@/types/jobs'
|
||||
import apiClient from '@/api/client'
|
||||
import type { ApplicationListResponse, CreateTaskRequest, TaskListResponse } from '@/types/tasks'
|
||||
|
||||
export function getApplications(params?: { page?: number; page_size?: number }): Promise<ApiResponse<ApplicationListResponse>> {
|
||||
return apiClient.get('/applications', { params })
|
||||
}
|
||||
|
||||
export function createTask(data: CreateTaskRequest): Promise<ApiResponse<{ id: number }>> {
|
||||
return apiClient.post('/tasks', data)
|
||||
}
|
||||
|
||||
export function listTasks(params?: { page?: number; page_size?: number; status?: string }): Promise<ApiResponse<TaskListResponse>> {
|
||||
return apiClient.get('/tasks', { params })
|
||||
}
|
||||
Reference in New Issue
Block a user