wulf-pulse/app/api/workflow/templates/[id]/route.ts

87 lines
2.5 KiB
TypeScript

import { NextRequest, NextResponse } from 'next/server';
import postgresClient from '@/lib/services/postgres-client';
export async function GET(
request: NextRequest,
{ params }: { params: Promise<{ id: string }> }
) {
try {
const { id } = await params;
const result = await postgresClient.query(
`SELECT * FROM ai_prompt_templates WHERE id = $1`, [id]
);
if (result.rows.length === 0) {
return NextResponse.json({ error: 'Not found' }, { status: 404 });
}
return NextResponse.json(result.rows[0]);
} catch (error) {
console.error('Failed to fetch template:', error);
return NextResponse.json({ error: 'Failed to fetch template' }, { status: 500 });
}
}
export async function PUT(
request: NextRequest,
{ params }: { params: Promise<{ id: string }> }
) {
try {
const { id } = await params;
const body = await request.json();
const fields: string[] = [];
const values: any[] = [];
let paramIndex = 1;
for (const key of ['name', 'purpose', 'system_prompt', 'user_prompt_template', 'provider', 'model', 'temperature', 'max_tokens', 'is_active']) {
if (key in body) {
fields.push(`${key} = $${paramIndex}`);
values.push(body[key]);
paramIndex++;
}
}
if (fields.length === 0) {
return NextResponse.json({ error: 'No fields to update' }, { status: 400 });
}
fields.push(`updated_at = NOW()`);
values.push(id);
const result = await postgresClient.query(
`UPDATE ai_prompt_templates SET ${fields.join(', ')} WHERE id = $${paramIndex} RETURNING *`,
values
);
if (result.rows.length === 0) {
return NextResponse.json({ error: 'Not found' }, { status: 404 });
}
return NextResponse.json(result.rows[0]);
} catch (error) {
console.error('Failed to update template:', error);
return NextResponse.json({ error: 'Failed to update template' }, { status: 500 });
}
}
export async function DELETE(
request: NextRequest,
{ params }: { params: Promise<{ id: string }> }
) {
try {
const { id } = await params;
const result = await postgresClient.query(
`DELETE FROM ai_prompt_templates WHERE id = $1 RETURNING id`, [id]
);
if (result.rows.length === 0) {
return NextResponse.json({ error: 'Not found' }, { status: 404 });
}
return NextResponse.json({ success: true });
} catch (error) {
console.error('Failed to delete template:', error);
return NextResponse.json({ error: 'Failed to delete template' }, { status: 500 });
}
}