import { db } from "@/db";
import { menuCategories, menuFeedRequests, menuItemSbisLinks, menuItems, menuItemVariants } from "@/db/schema";
import { desc } from "drizzle-orm";
import { AdminMenuPanel, type Data } from "@/components/admin-menu-panel";
import { currentAdminSession } from "@/lib/admin-auth";

export const dynamic = "force-dynamic";
export default async function AdminMenuPage() {
  if (!await currentAdminSession()) return <AdminMenuPanel loggedIn={false} stats={null} />;

  let stats: { items: number; lastFeed: string } | null = null;
  let initialData: Data | null = null;
  let databaseError = "";
  if (db) {
    try {
      const [categories, items, variants, links, lastFeed] = await Promise.all([
        db.select().from(menuCategories).orderBy(menuCategories.sortOrder),
        db.select().from(menuItems),
        db.select().from(menuItemVariants).orderBy(menuItemVariants.sortOrder),
        db.select().from(menuItemSbisLinks),
        db.select().from(menuFeedRequests).orderBy(desc(menuFeedRequests.requestedAt)).limit(1)
      ]);
      stats = { items: items.length, lastFeed: lastFeed[0]?.requestedAt?.toISOString() || "не запрашивался" };
      initialData = { categories, items, variants, links };
    } catch {
      databaseError = "Не удалось подключиться к базе меню. Проверьте DATABASE_URL и примените миграцию.";
    }
  } else {
    databaseError = "База меню не настроена. Задайте DATABASE_URL и примените миграцию.";
  }

  return <AdminMenuPanel loggedIn stats={stats} initialData={initialData} initialError={databaseError} />;
}
