Files
2026-05-09 00:55:40 +07:00

47 lines
1.1 KiB
TypeScript

import { prisma } from "@/lib/prisma";
export const reviewRepo = {
async upsert(data: {
tripId: string;
userId: string;
rating: number;
comment: string | null;
}) {
return prisma.tripReview.upsert({
where: {
tripId_userId: { tripId: data.tripId, userId: data.userId },
},
create: {
tripId: data.tripId,
userId: data.userId,
rating: data.rating,
comment: data.comment,
},
update: {
rating: data.rating,
comment: data.comment,
},
});
},
/**
* Semua review untuk trip yang di-host organizer ini, terbaru di depan.
* Dipakai di profil publik organizer untuk menampilkan testimoni.
*/
async findByOrganizer(organizerId: string, limit = 20) {
return prisma.tripReview.findMany({
where: { trip: { organizerId } },
orderBy: { createdAt: "desc" },
take: limit,
select: {
id: true,
rating: true,
comment: true,
createdAt: true,
user: { select: { id: true, name: true, image: true } },
trip: { select: { id: true, title: true, destination: true } },
},
});
},
};