import {
  parseIsinMarketPriceSearchParams,
} from "./_components/constants";
import { IsinMarketPricePageClient } from "./_components/isin-market-price-page-client";
import { fetchBackendIsinMarketPrices } from "./_lib/isin-market-price-server-api";

type PageProps = {
  searchParams: Promise<{
    model?: string;
    isin?: string;
    industry?: string;
    sector?: string;
    page?: string;
    page_size?: string;
  }>;
};

export default async function IsinAssetsMarketPricePage({
  searchParams,
}: PageProps) {
  const query = parseIsinMarketPriceSearchParams(await searchParams);
  const result = await fetchBackendIsinMarketPrices({
    model: query.model,
    isin: query.isin,
    industry: query.industry,
    sector: query.sector,
    page: query.page,
    pageSize: query.pageSize,
  });

  return (
    <IsinMarketPricePageClient
      key={`${result.activeModel}-${result.page}-${result.pageSize}`}
      activeModel={result.activeModel}
      data={result.rows}
      tabs={result.tabs}
      totalCount={result.totalCount}
      page={result.page}
      pageSize={result.pageSize}
      pageCount={result.pageCount}
      filters={{
        isin: query.isin,
        industry: query.industry,
        sector: query.sector,
      }}
      errorMessage={result.errorMessage}
    />
  );
}
