import { usePrisma } from "../utils/prisma";

export async function createNotification(data: {
  recipientId: string;
  type: string;
  actorName: string;
  actorAvatar?: string;
  postId?: string;
  preview?: string;
}) {
  const db = usePrisma();
  return db.notification.create({ data });
}

export async function getNotifications(userId: string) {
  const db = usePrisma();
  return db.notification.findMany({
    where: { recipientId: userId },
    orderBy: { createdAt: "desc" },
    take: 30,
  });
}

export async function countUnread(userId: string) {
  const db = usePrisma();
  return db.notification.count({
    where: { recipientId: userId, readAt: null },
  });
}

export async function markAllRead(userId: string) {
  const db = usePrisma();
  return db.notification.updateMany({
    where: { recipientId: userId, readAt: null },
    data: { readAt: new Date() },
  });
}

export async function deleteNotification(notifId: string, userId: string) {
  const db = usePrisma();
  return db.notification.deleteMany({
    where: { id: notifId, recipientId: userId },
  });
}

export async function deleteOldNotifications() {
  const db = usePrisma();
  const threeDaysAgo = new Date(Date.now() - 3 * 24 * 60 * 60 * 1000);
  return db.notification.deleteMany({
    where: { createdAt: { lt: threeDaysAgo } },
  });
}
