106 lines
3.0 KiB
JavaScript
106 lines
3.0 KiB
JavaScript
|
|
import { NextResponse } from 'next/server';
|
||
|
|
import {
|
||
|
|
getCustomPrompts,
|
||
|
|
getCustomPrompt,
|
||
|
|
saveCustomPrompt,
|
||
|
|
deleteCustomPrompt,
|
||
|
|
batchSaveCustomPrompts,
|
||
|
|
toggleCustomPrompt,
|
||
|
|
getPromptTemplates
|
||
|
|
} from '@/lib/db/custom-prompts';
|
||
|
|
|
||
|
|
// 获取项目的自定义提示词
|
||
|
|
export async function GET(request, { params }) {
|
||
|
|
try {
|
||
|
|
const { projectId } = params;
|
||
|
|
const { searchParams } = new URL(request.url);
|
||
|
|
const promptType = searchParams.get('promptType');
|
||
|
|
const language = searchParams.get('language');
|
||
|
|
|
||
|
|
if (!projectId) {
|
||
|
|
return NextResponse.json({ error: 'Project ID is required' }, { status: 400 });
|
||
|
|
}
|
||
|
|
|
||
|
|
const customPrompts = await getCustomPrompts(projectId, promptType, language);
|
||
|
|
const templates = await getPromptTemplates();
|
||
|
|
|
||
|
|
return NextResponse.json({
|
||
|
|
success: true,
|
||
|
|
customPrompts,
|
||
|
|
templates
|
||
|
|
});
|
||
|
|
} catch (error) {
|
||
|
|
console.error('获取自定义提示词失败:', error);
|
||
|
|
return NextResponse.json({ error: error.message }, { status: 500 });
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// 保存自定义提示词
|
||
|
|
export async function POST(request, { params }) {
|
||
|
|
try {
|
||
|
|
const { projectId } = params;
|
||
|
|
const body = await request.json();
|
||
|
|
|
||
|
|
if (!projectId) {
|
||
|
|
return NextResponse.json({ error: 'Project ID is required' }, { status: 400 });
|
||
|
|
}
|
||
|
|
|
||
|
|
// 批量保存
|
||
|
|
if (body.prompts && Array.isArray(body.prompts)) {
|
||
|
|
const results = await batchSaveCustomPrompts(projectId, body.prompts);
|
||
|
|
return NextResponse.json({
|
||
|
|
success: true,
|
||
|
|
results
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
// 单个保存
|
||
|
|
const { promptType, promptKey, language, content } = body;
|
||
|
|
if (!promptType || !promptKey || !language || content === undefined) {
|
||
|
|
return NextResponse.json(
|
||
|
|
{
|
||
|
|
error: 'promptType, promptKey, language and content are required'
|
||
|
|
},
|
||
|
|
{ status: 400 }
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
const result = await saveCustomPrompt(projectId, promptType, promptKey, language, content);
|
||
|
|
return NextResponse.json({
|
||
|
|
success: true,
|
||
|
|
result
|
||
|
|
});
|
||
|
|
} catch (error) {
|
||
|
|
console.error('保存自定义提示词失败:', error);
|
||
|
|
return NextResponse.json({ error: error.message }, { status: 500 });
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// 删除自定义提示词
|
||
|
|
export async function DELETE(request, { params }) {
|
||
|
|
try {
|
||
|
|
const { projectId } = params;
|
||
|
|
const { searchParams } = new URL(request.url);
|
||
|
|
const promptType = searchParams.get('promptType');
|
||
|
|
const promptKey = searchParams.get('promptKey');
|
||
|
|
const language = searchParams.get('language');
|
||
|
|
|
||
|
|
if (!projectId || !promptType || !promptKey || !language) {
|
||
|
|
return NextResponse.json(
|
||
|
|
{
|
||
|
|
error: 'projectId, promptType, promptKey and language are required'
|
||
|
|
},
|
||
|
|
{ status: 400 }
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
const success = await deleteCustomPrompt(projectId, promptType, promptKey, language);
|
||
|
|
return NextResponse.json({
|
||
|
|
success
|
||
|
|
});
|
||
|
|
} catch (error) {
|
||
|
|
console.error('删除自定义提示词失败:', error);
|
||
|
|
return NextResponse.json({ error: error.message }, { status: 500 });
|
||
|
|
}
|
||
|
|
}
|