- Migration du blog et des interviews des données mockées vers PostgreSQL (Prisma). - Refonte des pages publiques en Server Components pour de meilleures performances/SEO. - Intégration d'un éditeur de texte riche (React Quill) avec titres H1-H6 et séparateurs. - Correction des erreurs de validation Prisma liées aux paramètres asynchrones (Next.js 15+). - Correction des problèmes d'affichage des modales de suspension via React Portals. - Installation de @tailwindcss/typography et correction du débordement de texte (break-words). - Implémentation des actions de modération (suspension/révocation) pour les utilisateurs et boutiques.
53 lines
1.4 KiB
TypeScript
53 lines
1.4 KiB
TypeScript
"use server";
|
|
|
|
import { prisma } from '@/lib/prisma';
|
|
import { revalidatePath } from 'next/cache';
|
|
|
|
export async function getReports() {
|
|
return await prisma.messageReport.findMany({
|
|
include: {
|
|
message: {
|
|
include: {
|
|
sender: {
|
|
select: { id: true, name: true, email: true }
|
|
},
|
|
conversation: {
|
|
include: {
|
|
business: {
|
|
select: { id: true, name: true }
|
|
},
|
|
messages: {
|
|
orderBy: { createdAt: 'asc' },
|
|
include: {
|
|
sender: {
|
|
select: { id: true, name: true }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
reporter: {
|
|
select: { id: true, name: true, email: true }
|
|
}
|
|
},
|
|
orderBy: {
|
|
createdAt: 'desc',
|
|
},
|
|
});
|
|
}
|
|
|
|
export async function updateReportStatus(id: string, status: 'RESOLVED' | 'DISMISSED') {
|
|
try {
|
|
await prisma.messageReport.update({
|
|
where: { id },
|
|
data: { status }
|
|
});
|
|
revalidatePath('/moderation');
|
|
return { success: true };
|
|
} catch (error) {
|
|
return { success: false, error: "Erreur lors de la mise à jour" };
|
|
}
|
|
}
|