34 lines
1.3 KiB
TypeScript
34 lines
1.3 KiB
TypeScript
import { http } from './client'
|
|
import type { Outline, OutlineCreate, OutlineUpdate, OutlineList, OutlineReorder } from '@/types/outline'
|
|
|
|
const base = (novelId: number) => `/novels/${novelId}/outlines`
|
|
|
|
export async function fetchOutlines(novelId: number): Promise<OutlineList> {
|
|
const { data } = await http.get<OutlineList>(base(novelId))
|
|
return data
|
|
}
|
|
|
|
export async function fetchOutline(novelId: number, outlineId: number): Promise<Outline> {
|
|
const { data } = await http.get<Outline>(`${base(novelId)}/${outlineId}`)
|
|
return data
|
|
}
|
|
|
|
export async function createOutline(novelId: number, payload: OutlineCreate): Promise<Outline> {
|
|
const { data } = await http.post<Outline>(base(novelId), payload)
|
|
return data
|
|
}
|
|
|
|
export async function updateOutline(novelId: number, outlineId: number, payload: OutlineUpdate): Promise<Outline> {
|
|
const { data } = await http.patch<Outline>(`${base(novelId)}/${outlineId}`, payload)
|
|
return data
|
|
}
|
|
|
|
export async function deleteOutline(novelId: number, outlineId: number): Promise<void> {
|
|
await http.delete(`${base(novelId)}/${outlineId}`)
|
|
}
|
|
|
|
export async function reorderOutlines(novelId: number, orderedIds: number[]): Promise<OutlineList> {
|
|
const { data } = await http.put<OutlineList>(`${base(novelId)}/reorder`, { ordered_ids: orderedIds })
|
|
return data
|
|
}
|