import {useDiscoverQuery} from 'sentry/utils/discover/discoverQuery';
import type EventView from 'sentry/utils/discover/eventView';
import type {QueryFieldValue} from 'sentry/utils/discover/fields';
import {MutableSearch} from 'sentry/utils/tokenizeSearch';
import {useLocation} from 'sentry/utils/useLocation';
import useOrganization from 'sentry/utils/useOrganization';

export default function useErrorSamples(eventView: EventView) {
  const location = useLocation();
  const organization = useOrganization();

  const columns: QueryFieldValue[] = [
    {
      field: 'timestamp',
      kind: 'field',
    },
    {
      field: 'http.status_code',
      kind: 'field',
    },
    {
      field: 'transaction.status',
      kind: 'field',
    },
  ];

  let errorSamplesEventView = eventView.clone();
  errorSamplesEventView.additionalConditions = new MutableSearch(
    'http.status_code:[500,501,502,503,504,505,506,507,508,510,511]'
  );
  errorSamplesEventView = errorSamplesEventView.withColumns(columns).withSorts([
    {
      field: 'timestamp',
      kind: 'desc',
    },
  ]);

  const {isLoading, data} = useDiscoverQuery({
    eventView: errorSamplesEventView,
    referrer: 'starfish-transaction-summary-sample-events',
    location,
    orgSlug: organization.slug,
    limit: 6,
  });

  return {isLoading, data: data ? data.data : []};
}
