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 }); | |
} | |
} | |