import { connectDB } from "@/lib/db";
import { PortfolioItem } from "@/models/PortfolioItem";
import { PortfolioCategory } from "@/models/PortfolioCategory";

const PAGE_SIZE = 20;

export async function getPortfolioList(page: number) {
  await connectDB();
  const [featuredCount, total, rawItems, categories] = await Promise.all([
    PortfolioItem.countDocuments({ featured: true }),
    PortfolioItem.countDocuments({}),
    PortfolioItem.find({}).sort({ sortOrder: 1, createdAt: -1 }).skip((page - 1) * PAGE_SIZE).limit(PAGE_SIZE).lean(),
    PortfolioCategory.find({}).sort({ sortOrder: 1 }).lean(),
  ]);
  const totalPages = Math.max(1, Math.ceil(total / PAGE_SIZE));

  return {
    items: rawItems.map((i) => ({
      _id: String(i._id),
      title: i.title,
      titleEn: i.titleEn,
      category: i.category,
      images: i.images,
      coverImage: i.coverImage,
      description: i.description,
      descriptionEn: i.descriptionEn,
      eventLabel: i.eventLabel,
      modelInstagram: i.modelInstagram,
      tags: i.tags,
      visible: i.visible,
      featured: i.featured,
    })),
    total,
    totalPages,
    page,
    featuredCount,
    categories: categories.map((c) => ({ id: String(c._id), name: c.name })),
  };
}
