Files
NovalRedot/frontend/src/api/outlines.ts

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
}