43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
import { createProject, getProjects, isExistByName } from '@/lib/db/projects';
|
|
import { createInitModelConfig, getModelConfigByProjectId } from '@/lib/db/model-config';
|
|
|
|
export async function POST(request) {
|
|
try {
|
|
const projectData = await request.json();
|
|
if (!projectData.name) {
|
|
return Response.json({ error: 'Project name is required' }, { status: 400 });
|
|
}
|
|
|
|
if (await isExistByName(projectData.name)) {
|
|
return Response.json({ error: 'Project name already exists' }, { status: 400 });
|
|
}
|
|
const newProject = await createProject(projectData);
|
|
if (projectData.reuseConfigFrom) {
|
|
let data = await getModelConfigByProjectId(projectData.reuseConfigFrom);
|
|
|
|
let newData = data.map(item => {
|
|
delete item.id;
|
|
return {
|
|
...item,
|
|
projectId: newProject.id
|
|
};
|
|
});
|
|
await createInitModelConfig(newData);
|
|
}
|
|
return Response.json(newProject, { status: 201 });
|
|
} catch (error) {
|
|
console.error('Failed to create project:', String(error));
|
|
return Response.json({ error: String(error) }, { status: 500 });
|
|
}
|
|
}
|
|
|
|
export async function GET(request) {
|
|
try {
|
|
const projects = await getProjects();
|
|
return Response.json(projects);
|
|
} catch (error) {
|
|
console.error('Failed to get project list:', String(error));
|
|
return Response.json({ error: String(error) }, { status: 500 });
|
|
}
|
|
}
|