import { parseIsinAssetsSearchParams } from "./_components/constants";
import { IsinAssetsPageClient } from "./_components/isin-assets-page-client";
import { fetchBackendIsinAssets } from "./_lib/isin-assets-server-api";

type PageProps = {
  searchParams: Promise<{
    isin?: string;
    assetClassCode?: string;
    inPortfolio?: string;
    page?: string;
    page_size?: string;
  }>;
};

export default async function IsinAssetsPage({ searchParams }: PageProps) {
  const query = parseIsinAssetsSearchParams(await searchParams);
  const { rows, totalCount, page, pageSize, pageCount, errorMessage } =
    await fetchBackendIsinAssets(query);

  return (
    <IsinAssetsPageClient
      rows={rows}
      filters={{
        isin: query.isin,
        assetClassCode: query.assetClassCode,
        inPortfolio: query.inPortfolio,
      }}
      totalCount={totalCount}
      page={page}
      pageSize={pageSize}
      pageCount={pageCount}
      errorMessage={errorMessage}
    />
  );
}
