Spaces:
Running
Running
import { NextRequest, NextResponse } from 'next/server'; | |
import { PrismaClient } from '@prisma/client'; | |
import path from 'path'; | |
import fs from 'fs'; | |
import { getTrainingFolder } from '@/server/settings'; | |
const prisma = new PrismaClient(); | |
export async function GET(request: NextRequest, { params }: { params: { jobID: string } }) { | |
const { jobID } = await params; | |
const job = await prisma.job.findUnique({ | |
where: { id: jobID }, | |
}); | |
if (!job) { | |
return NextResponse.json({ error: 'Job not found' }, { status: 404 }); | |
} | |
const trainingFolder = await getTrainingFolder(); | |
const jobFolder = path.join(trainingFolder, job.name); | |
if (!fs.existsSync(jobFolder)) { | |
return NextResponse.json({ files: [] }); | |
} | |
// find all safetensors files in the job folder | |
let files = fs | |
.readdirSync(jobFolder) | |
.filter(file => { | |
return file.endsWith('.safetensors'); | |
}) | |
.map(file => { | |
return path.join(jobFolder, file); | |
}) | |
.sort(); | |
// get the file size for each file | |
const fileObjects = files.map(file => { | |
const stats = fs.statSync(file); | |
return { | |
path: file, | |
size: stats.size, | |
}; | |
}); | |
return NextResponse.json({ files: fileObjects }); | |
} | |