Spaces:
Paused
Paused
File size: 1,741 Bytes
1c72248 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
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 });
}
}
|