import type { Metadata } from 'next'; import Link from 'next/link'; import { Alert } from '@/components/ui/alert'; import { Pagination } from '@/components/ui/pagination'; import { verifySession } from '@/lib/auth/dal'; import { fetchStudentMembers } from '@/lib/data/repositories/student-member-repository'; import { buildStudentMemberHref, parseStudentMemberQuery } from '@/lib/domain/student-member-query'; import { StudentListToolbar } from './_components/student-list-toolbar'; import { StudentSearchBar } from './_components/student-search-bar'; import { StudentTable } from './_components/student-table'; export const metadata: Metadata = { title: '학생 회원', }; interface PageProps { searchParams: Promise>; } export default async function Page({ searchParams }: PageProps) { await verifySession(); const query = parseStudentMemberQuery(await searchParams); const { items, totalCount } = await fetchStudentMembers(query); const totalPages = Math.max(1, Math.ceil(totalCount / query.pageSize)); const currentPage = Math.min(query.page, totalPages); return (

학생 회원 목록

총 {totalCount}명 | 현재페이지 {currentPage}/{totalPages}

{items.length === 0 ? ( 확인 } > 다른 검색어로 다시 시도해 주세요. ) : ( <> buildStudentMemberHref(query, { page })} /> )}
); }