Your Name 98fe210b64
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled
feat: separate agent projects from canvas storage
2026-03-19 13:07:39 +08:00

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: "删除生图项目失败" };
}
},
};