19 lines
1.0 KiB
TypeScript
19 lines
1.0 KiB
TypeScript
import { apiDelete, apiGet, apiPatch, apiPost } from './client'
|
|
import type { ProjectCreate, ProjectListResponse, ProjectRead } from '../../types'
|
|
|
|
export const projectsApi = {
|
|
list: (options?: { name?: string; limit?: number }): Promise<ProjectListResponse> => {
|
|
const search = new URLSearchParams()
|
|
if (options?.name) search.set('name', options.name)
|
|
if (options?.limit) search.set('limit', String(options.limit))
|
|
const query = search.toString()
|
|
return apiGet<ProjectListResponse>(`/api/v1/projects${query ? `?${query}` : ''}`)
|
|
},
|
|
create: (payload: ProjectCreate): Promise<ProjectRead> => apiPost<ProjectRead>('/api/v1/projects', payload),
|
|
get: (id: string): Promise<ProjectRead> => apiGet<ProjectRead>(`/api/v1/projects/${id}`),
|
|
update: (id: string, payload: Partial<ProjectCreate>): Promise<ProjectRead> =>
|
|
apiPatch<ProjectRead>(`/api/v1/projects/${id}`, payload),
|
|
delete: (id: string): Promise<{ deleted: boolean }> =>
|
|
apiDelete<{ deleted: boolean }>(`/api/v1/projects/${id}`),
|
|
}
|