import { parseAssetFieldDefinitionSearchParams } from "./_components/constants";
import { AssetFieldDefinitionPageClient } from "./_components/asset-field-definition-page-client";
import { fetchBackendAssetFieldDefinitions } from "./_lib/asset-field-definition-server-api";

type PageProps = {
  searchParams: Promise<{
    apiField?: string;
    oxyField?: string;
    module?: string;
    info?: string;
    page?: string;
    page_size?: string;
  }>;
};

export default async function AssetFieldDefinitionPage({ searchParams }: PageProps) {
  const query = parseAssetFieldDefinitionSearchParams(await searchParams);
  const { rows, totalCount, page, pageSize, pageCount, errorMessage } =
    await fetchBackendAssetFieldDefinitions(query);

  return (
    <AssetFieldDefinitionPageClient
      rows={rows}
      filters={{
        apiField: query.apiField,
        oxyField: query.oxyField,
        module: query.module,
        info: query.info,
      }}
      totalCount={totalCount}
      page={page}
      pageSize={pageSize}
      pageCount={pageCount}
      errorMessage={errorMessage}
    />
  );
}
