"use server";

import axios from "axios";

interface SearchResultItem {
  id: string;
  entityType: string;
  title?: string;
  description?: string;
  price?: number;
  slug?: string;
  category?: {
    id: string;
    name: string;
    slug: string;
  };
}

interface SearchResponse {
  success: boolean;
  message?: string;
  data?: SearchResultItem[];
  searchTerm?: string;
  counts?: {
    products: number;
    services: number;
    jobs: number;
    community: number;
    total: number;
  };
}

/**
 * Fetch global search results by query
 */
export async function fetchSearchResultsAction(
  query: string
): Promise<SearchResponse> {
  try {
    const response = await axios.get(
      `${process.env.NEXT_PUBLIC_API_URL}/api/v1/home/search`,
      {
        params: { search: query },
        headers: {
          Accept: "application/json",
          "Accept-Language": "en",
        },
      }
    );

    const data = response?.data;

    if (data?.status && data?.data?.results?.length > 0) {
      return {
        success: true,
        message: data?.message || "Search successful",
        data: data?.data?.results,
        searchTerm: data?.data?.searchTerm,
        counts: data?.data?.counts,
      };
    } else {
      return {
        success: false,
        message: data?.message || "No results found",
        data: [],
      };
    }
  } catch (error: any) {
    return {
      success: false,
      message: error?.response?.data?.message || "Something went wrong",
    };
  }
}
