import type { Metadata } from 'next';
import { verifySession } from '@/lib/auth/dal';
import { fetchAdminMenus } from '@/lib/data/repositories/admin-menu-repository';
import { buildAdminMenuTree } from '@/lib/domain/admin-menu';
import { AdminMenuList } from './_components/admin-menu-list';

export const metadata: Metadata = {
  title: '메뉴관리',
};

export const dynamic = 'force-dynamic';

export default async function Page() {
  await verifySession();

  const menus = await fetchAdminMenus();

  // 이슈: 역할 목록 조회 API가 없어 메뉴에 쓰인 역할을 모아 선택지로 쓴다.
  const roles = [...new Map(
    menus
      .filter((menu) => menu.roleId)
      .map((menu) => [menu.roleId, { id: menu.roleId, name: menu.roleName || menu.roleId }])
  ).values()];

  return (
    <AdminMenuList
      roots={buildAdminMenuTree(menus)}
      totalCount={menus.length}
      roles={roles}
    />
  );
}
