export interface ApiData {
  id: number;
  title: string;
  descriptions: string;
  locale: string;
  slug: string;
  slugUrl: string;
}

export interface ApiResponse {
  data: Array<{
    id: number;
    attributes: ApiData;
  }>;
}

export function extractPath(url: string): string | '' {
  const regex = /^\/[\w-]+\/[\w-]+/;
  const match = url.match(regex);
  return match ? match[0] : '';
}

async function fetchBlogs(locale: string): Promise<ApiData[]> {
  const response = await fetch(
    `${process.env.NEXT_PUBLIC_API_URL}/blogs?locale=${locale}&fields[0]=slug&fields[1]=locale&fields[2]=slugUrl`
  );
  const json: ApiResponse = await response.json();

  return json.data.map((item) => item.attributes);
}

async function fetchProjects(locale: string): Promise<ApiData[]> {
  const response = await fetch(
    `${process.env.NEXT_PUBLIC_API_URL}/projects?locale=${locale}&fields[0]=slug&fields[1]=locale&fields[2]=slugUrl`
  );
  const json: ApiResponse = await response.json();

  return json.data.map((item) => item.attributes);
}

export async function fetchAndCombineBlogs(): Promise<ApiData[]> {
  const blogsFr = fetchBlogs('fr');
  const blogsEn = fetchBlogs('en');
  const [blogsFrData, blogsEnData] = await Promise.all([blogsFr, blogsEn]);

  return [...blogsFrData, ...blogsEnData];
}

export async function fetchAndCombineProjects(): Promise<ApiData[]> {
  const pagesFr = fetchProjects('fr');
  const pagesEn = fetchProjects('en');
  const [pagesFrData, pagesEnData] = await Promise.all([pagesFr, pagesEn]);
  return [...pagesFrData, ...pagesEnData];
}
export async function postMessage(data: any)  {
  const query = `
mutation createMessage($data: MessageInput!)  {
  createMessage(data: $data){
    data {
      id
    }
  }
}
`;
  const operationName = 'createMessage';
  const variables = { data }
  console.log({ query, variables, operationName })
  const response = await fetch(`${process.env.NEXT_URL_BACK}/graphql`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Accept': 'application/json',
    },
    body: JSON.stringify({ query, variables }),
  })
  const res = response.json()
    return res;
}
