79 lines
2.2 KiB
TypeScript
79 lines
2.2 KiB
TypeScript
/**
|
|
* 模板编辑器 API 函数
|
|
*/
|
|
import apiClient from "../client"
|
|
import type {
|
|
EditingTemplate,
|
|
TemplateCategory,
|
|
SaveTemplatePayload,
|
|
GenerateFromTemplatePayload,
|
|
GenerateFromTemplateResponse,
|
|
ListTemplatesResponse,
|
|
ListCategoriesResponse,
|
|
} from "./types"
|
|
|
|
/** 获取模板列表 */
|
|
export const getEditingTemplates = async (params?: {
|
|
category?: string
|
|
tag?: string
|
|
skip?: number
|
|
limit?: number
|
|
}): Promise<EditingTemplate[]> => {
|
|
const response = await apiClient.get<ListTemplatesResponse>("/templates", {
|
|
params: {
|
|
skip: params?.skip ?? 0,
|
|
limit: params?.limit ?? 50,
|
|
},
|
|
})
|
|
let list = response.data.items
|
|
if (params?.category) list = list.filter((t) => t.category === params.category)
|
|
if (params?.tag) list = list.filter((t) => t.tags.includes(params.tag!))
|
|
return list
|
|
}
|
|
|
|
/** 获取模板详情 */
|
|
export const getEditingTemplate = async (id: string): Promise<EditingTemplate> => {
|
|
const response = await apiClient.get<EditingTemplate>(`/templates/${id}`)
|
|
return response.data
|
|
}
|
|
|
|
/** 创建模板 */
|
|
export const createEditingTemplate = async (
|
|
data: SaveTemplatePayload,
|
|
): Promise<EditingTemplate> => {
|
|
const response = await apiClient.post<EditingTemplate>("/templates", data)
|
|
return response.data
|
|
}
|
|
|
|
/** 更新模板 */
|
|
export const updateEditingTemplate = async (
|
|
id: string,
|
|
data: SaveTemplatePayload,
|
|
): Promise<EditingTemplate> => {
|
|
const response = await apiClient.patch<EditingTemplate>(`/templates/${id}`, data)
|
|
return response.data
|
|
}
|
|
|
|
/** 删除模板 */
|
|
export const deleteEditingTemplate = async (id: string): Promise<void> => {
|
|
await apiClient.delete(`/templates/${id}`)
|
|
}
|
|
|
|
/** 获取模板分类列表 */
|
|
export const getTemplateCategories = async (): Promise<TemplateCategory[]> => {
|
|
const response = await apiClient.get<ListCategoriesResponse>("/templates/categories/list")
|
|
return response.data.items
|
|
}
|
|
|
|
/** 使用模板生成视频(调用 validate 端点) */
|
|
export const generateFromTemplate = async (
|
|
templateId: string,
|
|
data: GenerateFromTemplatePayload,
|
|
): Promise<GenerateFromTemplateResponse> => {
|
|
const response = await apiClient.post<GenerateFromTemplateResponse>(
|
|
`/templates/${templateId}/validate`,
|
|
data,
|
|
)
|
|
return response.data
|
|
}
|