import React from 'react'; import Link from 'next/link'; import { Play, FileText, Clock, Mic, Calendar } from 'lucide-react'; import { prisma } from '../../lib/prisma'; import { InterviewType } from '@prisma/client'; import EventTimeline from '../../components/EventTimeline'; export const revalidate = 3600; interface Props { searchParams: Promise<{ type?: string }>; } export default async function AfroLifePage({ searchParams }: Props) { const params = await searchParams; const rawFilter = params.type as string || 'ALL'; const allowedFilters = ['ALL', 'EVENT', 'VIDEO', 'ARTICLE']; const filter = allowedFilters.includes(rawFilter) ? rawFilter : 'ALL'; let items: any[] = []; try { if (filter === 'EVENT') { const events = await prisma.event.findMany({ orderBy: { date: 'desc' } }); items = events.map(e => ({ ...e, guestName: 'Événement', companyName: e.location, excerpt: e.description, type: 'EVENT', duration: new Date(e.date).toLocaleDateString('fr-FR') })); } else { const where: any = {}; if (filter !== 'ALL') { where.type = filter as InterviewType; } const interviews = await prisma.interview.findMany({ where, orderBy: { createdAt: 'desc' } }); items = interviews.map(i => ({ ...i })); // If 'ALL', we might want to also fetch events and mix them if (filter === 'ALL') { const events = await prisma.event.findMany({ orderBy: { date: 'desc' }, take: 10 }); const mappedEvents = events.map(e => ({ ...e, guestName: 'Événement', companyName: e.location, excerpt: e.description, type: 'EVENT', duration: new Date(e.date).toLocaleDateString('fr-FR') })); items = [...items, ...mappedEvents].sort((a, b) => new Date(b.createdAt || b.date).getTime() - new Date(a.createdAt || a.date).getTime() ); } } } catch (error) { console.error("Database connection failed on Afro Life page:", error); items = []; } return (
Plongez dans l'intimité des bâtisseurs. Entretiens exclusifs, parcours de vie et leçons de leadership.
Aucun contenu trouvé dans cette catégorie.