Spaces:
Paused
Paused
| 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 }); | |
| } | |
| } | |