43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
import { NextRequest, NextResponse } from 'next/server';
|
|
import postgresClient from '@/lib/services/postgres-client';
|
|
import { AiPromptTemplateInput } from '@/lib/types/workflow';
|
|
|
|
export async function GET() {
|
|
try {
|
|
const result = await postgresClient.query(
|
|
`SELECT * FROM ai_prompt_templates ORDER BY purpose, version DESC`
|
|
);
|
|
return NextResponse.json(result.rows);
|
|
} catch (error) {
|
|
console.error('Failed to fetch templates:', error);
|
|
return NextResponse.json({ error: 'Failed to fetch templates' }, { status: 500 });
|
|
}
|
|
}
|
|
|
|
export async function POST(request: NextRequest) {
|
|
try {
|
|
const body: AiPromptTemplateInput = await request.json();
|
|
|
|
const result = await postgresClient.query(
|
|
`INSERT INTO ai_prompt_templates
|
|
(name, purpose, system_prompt, user_prompt_template, provider, model, temperature, max_tokens, is_active)
|
|
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING *`,
|
|
[
|
|
body.name,
|
|
body.purpose,
|
|
body.system_prompt,
|
|
body.user_prompt_template,
|
|
body.provider ?? 'openai',
|
|
body.model ?? 'gpt-4o',
|
|
body.temperature ?? 0.3,
|
|
body.max_tokens ?? 4000,
|
|
body.is_active ?? true,
|
|
]
|
|
);
|
|
|
|
return NextResponse.json(result.rows[0], { status: 201 });
|
|
} catch (error) {
|
|
console.error('Failed to create template:', error);
|
|
return NextResponse.json({ error: 'Failed to create template' }, { status: 500 });
|
|
}
|
|
}
|