import { NextResponse } from "next/server"; import { db, notifications, users, eq, and, desc, count } from "@epicure/db"; import { requireSession } from "@/lib/api-auth"; export async function GET() { const { session, response } = await requireSession(); if (response) return response; const [rows, unread] = await Promise.all([ db .select({ id: notifications.id, type: notifications.type, recipeId: notifications.recipeId, commentId: notifications.commentId, read: notifications.read, createdAt: notifications.createdAt, actorId: notifications.actorId, actorName: users.name, actorUsername: users.username, actorAvatarUrl: users.avatarUrl, }) .from(notifications) .innerJoin(users, eq(notifications.actorId, users.id)) .where(eq(notifications.userId, session!.user.id)) .orderBy(desc(notifications.createdAt)) .limit(30), db .select({ total: count() }) .from(notifications) .where(and(eq(notifications.userId, session!.user.id), eq(notifications.read, false))), ]); return NextResponse.json({ notifications: rows, unreadCount: unread[0]?.total ?? 0 }); }