81 lines
2.2 KiB
TypeScript
81 lines
2.2 KiB
TypeScript
import type {
|
|
AgentGenerationProject,
|
|
AgentGenerationProjectPersistedState,
|
|
} from "@/types/agent";
|
|
|
|
interface ApiResponse<T = unknown> {
|
|
success: boolean;
|
|
data?: T;
|
|
error?: string;
|
|
}
|
|
|
|
export const agentProjectService = {
|
|
async getProjects(): Promise<ApiResponse<AgentGenerationProject[]>> {
|
|
try {
|
|
const response = await fetch("/api/agent-projects", { cache: "no-store" });
|
|
return await response.json();
|
|
} catch {
|
|
return { success: false, error: "获取生图项目列表失败" };
|
|
}
|
|
},
|
|
|
|
async getProject(id: string): Promise<ApiResponse<AgentGenerationProject>> {
|
|
try {
|
|
const response = await fetch(`/api/agent-projects/${id}`, { cache: "no-store" });
|
|
return await response.json();
|
|
} catch {
|
|
return { success: false, error: "获取生图项目失败" };
|
|
}
|
|
},
|
|
|
|
async createProject(payload: {
|
|
title?: string;
|
|
description?: string | null;
|
|
thumbnail?: string | null;
|
|
projectState?: AgentGenerationProjectPersistedState;
|
|
}): Promise<ApiResponse<AgentGenerationProject>> {
|
|
try {
|
|
const response = await fetch("/api/agent-projects", {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify(payload),
|
|
});
|
|
return await response.json();
|
|
} catch {
|
|
return { success: false, error: "创建生图项目失败" };
|
|
}
|
|
},
|
|
|
|
async updateProject(
|
|
id: string,
|
|
payload: {
|
|
title?: string;
|
|
description?: string | null;
|
|
thumbnail?: string | null;
|
|
projectState?: AgentGenerationProjectPersistedState;
|
|
}
|
|
): Promise<ApiResponse<AgentGenerationProject>> {
|
|
try {
|
|
const response = await fetch(`/api/agent-projects/${id}`, {
|
|
method: "PUT",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify(payload),
|
|
});
|
|
return await response.json();
|
|
} catch {
|
|
return { success: false, error: "保存生图项目失败" };
|
|
}
|
|
},
|
|
|
|
async deleteProject(id: string): Promise<ApiResponse> {
|
|
try {
|
|
const response = await fetch(`/api/agent-projects/${id}`, {
|
|
method: "DELETE",
|
|
});
|
|
return await response.json();
|
|
} catch {
|
|
return { success: false, error: "删除生图项目失败" };
|
|
}
|
|
},
|
|
};
|