"use client";

import { useState } from "react";

import type { DataTableQuery } from "./types";

export const DEFAULT_DATA_TABLE_QUERY: DataTableQuery = {
  page: 1,
  pageSize: 10,
  search: "",
  sort: null,
};

/**
 * Convenience state holder for server-mode DataTables. The parent owns the
 * query, feeds it to its TanStack Query key/fetcher, and passes both down:
 *
 *   const { query, setQuery } = useDataTableQuery()
 *   const { data, isLoading } = useQuery({
 *     queryKey: queryKeys.orders.list(query),
 *     queryFn: () => fetchOrders(query),
 *   })
 *   <DataTable mode="server" query={query} onQueryChange={setQuery}
 *              data={data?.items ?? []} totalCount={data?.total} ... />
 */
export function useDataTableQuery(initial?: Partial<DataTableQuery>) {
  const [query, setQuery] = useState<DataTableQuery>({
    ...DEFAULT_DATA_TABLE_QUERY,
    ...initial,
  });

  return { query, setQuery } as const;
}
