import { connectDB } from "@/lib/db";
import { Testimonial } from "@/models/Testimonial";
import { QuickReview } from "@/models/QuickReview";

// Gleiche Berechnung wie CombinedReviewsBadge in components/ReviewsWidget.tsx
// (dort client-seitig aus bereits geladenen Props), hier als Server-Helfer
// für strukturierte Daten (aggregateRating im LocalBusiness-JSON-LD,
// 26.09.2026) — bewusst dieselbe Formel/Datenquelle, damit die angezeigte
// Bewertungs-Badge und die Google-sichtbaren strukturierten Daten nie
// auseinanderlaufen.
export async function getReviewAverage(): Promise<{ average: number; count: number } | null> {
  await connectDB();
  const [testimonials, quickReviews] = await Promise.all([
    Testimonial.find({ visible: true }).select("rating").lean(),
    QuickReview.find({ visible: true }).select("rating").lean(),
  ]);
  const allRatings = [...testimonials.map((t) => t.rating), ...quickReviews.map((q) => q.rating)].filter((r) => r > 0);
  if (allRatings.length === 0) return null;

  const avg = allRatings.reduce((a, b) => a + b, 0) / allRatings.length;
  return { average: Math.round(avg * 10) / 10, count: allRatings.length };
}
