ramimu's picture
Upload 586 files
1c72248 verified
import { NextResponse } from 'next/server';
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
export async function GET(request: Request) {
const { searchParams } = new URL(request.url);
const id = searchParams.get('id');
try {
if (id) {
const job = await prisma.job.findUnique({
where: { id },
});
return NextResponse.json(job);
}
const jobs = await prisma.job.findMany({
orderBy: { created_at: 'desc' },
});
return NextResponse.json({ jobs: jobs });
} catch (error) {
console.error(error);
return NextResponse.json({ error: 'Failed to fetch training data' }, { status: 500 });
}
}
export async function POST(request: Request) {
try {
const body = await request.json();
const { id, name, job_config, gpu_ids } = body;
if (id) {
// Update existing training
const training = await prisma.job.update({
where: { id },
data: {
name,
gpu_ids,
job_config: JSON.stringify(job_config),
},
});
return NextResponse.json(training);
} else {
// Create new training
const training = await prisma.job.create({
data: {
name,
gpu_ids,
job_config: JSON.stringify(job_config),
},
});
return NextResponse.json(training);
}
} catch (error: any) {
if (error.code === 'P2002') {
// Handle unique constraint violation, 409=Conflict
return NextResponse.json({ error: 'Job name already exists' }, { status: 409 });
}
console.error(error);
// Handle other errors
return NextResponse.json({ error: 'Failed to save training data' }, { status: 500 });
}
}