Files
gen2d/frontend/src/api/project.ts
T

61 lines
1.6 KiB
TypeScript
Raw Normal View History

import type { Project, Task } from './types'
import { get, post, put, del } from './client'
export async function listProjects(
page?: number,
pageSize?: number
): Promise<Project[]> {
const params = new URLSearchParams()
if (page !== undefined) params.set('page', String(page))
if (pageSize !== undefined) params.set('pageSize', String(pageSize))
const url = `/api/v1/projects${params.toString() ? '?' + params : ''}`
const resp = await get<{
total: number
projects: Project[]
}>(url)
return resp.projects
}
export async function getProject(projectId: string): Promise<Project> {
return get<Project>(`/api/v1/projects/${projectId}`)
}
export async function createProject(
name: string,
style?: Record<string, string>
): Promise<Project> {
return post<Project>('/api/v1/projects', { name, style })
}
export async function deleteProject(projectId: string): Promise<void> {
return del<void>(`/api/v1/projects/${projectId}`)
}
export async function updateProject(
projectId: string,
data: { name: string }
): Promise<Project> {
return put<Project>(`/api/v1/projects/${projectId}`, data)
}
export async function getStyle(
projectId: string
): Promise<Record<string, string>> {
const resp = await get<{ kvPairs: Record<string, string> }>(
`/api/v1/projects/${projectId}/style`
)
return resp.kvPairs
}
export async function saveStyle(
projectId: string,
kvPairs: Record<string, string>
): Promise<void> {
return put<void>(`/api/v1/projects/${projectId}/style`, { kvPairs })
}
export async function getTasks(projectId: string): Promise<Task[]> {
return get<Task[]>(`/api/v1/projects/${projectId}/tasks`)
}