import type { Metadata } from 'next'; import { verifySession } from '@/lib/auth/dal'; import { fetchCommonCodes } from '@/lib/data/repositories/common-code-repository'; import { fetchMerchants } from '@/lib/data/repositories/merchant-repository'; import { CODE_GROUP } from '@/lib/domain/common-code'; import { parseMerchantQuery } from '@/lib/domain/merchant-query'; import { MerchantList } from './_components/merchant-list'; export const metadata: Metadata = { title: '가맹몰 관리', }; export const dynamic = 'force-dynamic'; interface PageProps { searchParams: Promise>; } export default async function Page({ searchParams }: PageProps) { await verifySession(); const query = parseMerchantQuery(await searchParams); const [{ items, totalCount }, business, businessDetail] = await Promise.all([ fetchMerchants(query), fetchCommonCodes(CODE_GROUP.merchantBusiness), fetchCommonCodes(CODE_GROUP.merchantBusinessDetail), ]); // 앞쪽 표가 먼저 맞는다 — 2자리 값은 FRCS_TPBIZ_CD에서, 4자리 값은 FRCS_CD에서 이름을 찾는다. const businessCodes = [...business, ...businessDetail]; const totalPages = Math.max(1, Math.ceil(totalCount / query.pageSize)); const currentPage = Math.min(query.page, totalPages); return ( ); }