61 lines
1.5 KiB
TypeScript

import { NextResponse } from 'next/server';
import { prisma } from '@/lib/prisma';
import { getFileUrl } from '@/lib/minio';
export async function GET() {
try {
const videos = await prisma.video.findMany({
orderBy: { created_at: 'desc' },
take: 1000,
include: {
author: {
select: {
nickname: true,
},
},
transcript: {
select: {
id: true,
speech_detected: true,
language: true,
audio_type: true,
transcript: true,
non_speech_summary: true,
},
},
},
});
const formattedVideos = videos.map((v) => ({
aweme_id: v.aweme_id,
desc: v.desc,
cover_url: getFileUrl(v.cover_url ?? ''),
duration_ms: v.duration_ms,
author: {
nickname: v.author.nickname,
},
transcript: v.transcript
? {
id: v.transcript.id,
speech_detected: v.transcript.speech_detected,
language: v.transcript.language,
audio_type: v.transcript.audio_type,
transcript: v.transcript.transcript,
non_speech_summary: v.transcript.non_speech_summary,
}
: null,
}));
return NextResponse.json({
videos: formattedVideos,
total: videos.length,
});
} catch (error) {
console.error('Failed to fetch videos:', error);
return NextResponse.json(
{ error: 'Failed to fetch videos' },
{ status: 500 }
);
}
}