export interface Question {
  id: number;
  question: string;
  answer: string;
  created_at: string;
  answered_at: string;
}

export interface QuestionStats {
  asked: number;
  answered: number;
}

const DEV_QUESTIONS: Question[] = [
  {
    id: 1,
    question: "What is a fact about octopuses?",
    answer: "An octopus has three hearts and blue blood.",
    created_at: "2026-03-23T18:10:00.000Z",
    answered_at: "2026-03-23T19:00:00.000Z",
  },
  {
    id: 2,
    question: "What is a fact about axolotls?",
    answer:
      "An axolotl can regrow limbs, parts of its heart, and even parts of its brain.",
    created_at: "2026-03-24T02:15:00.000Z",
    answered_at: "2026-03-24T05:45:00.000Z",
  },
  {
    id: 3,
    question: "What is a fact about crows?",
    answer: "Crows can recognize human faces and remember them for years.",
    created_at: "2026-03-25T08:30:00.000Z",
    answered_at: "2026-03-25T09:05:00.000Z",
  },
  {
    id: 4,
    question: "What is a fact about wombats?",
    answer: "Wombats produce cube-shaped poop.",
    created_at: "2026-03-25T11:10:00.000Z",
    answered_at: "2026-03-25T11:40:00.000Z",
  },
  {
    id: 5,
    question: "What is a fact about mantis shrimp?",
    answer:
      "A mantis shrimp can punch so fast it creates tiny cavitation bubbles in water.",
    created_at: "2026-03-25T13:00:00.000Z",
    answered_at: "2026-03-25T13:18:00.000Z",
  },
  {
    id: 6,
    question: "What is a fact about sloths?",
    answer:
      "Some sloths can hold their breath longer than dolphins by slowing their heart rate.",
    created_at: "2026-03-25T14:25:00.000Z",
    answered_at: "2026-03-25T15:00:00.000Z",
  },
  {
    id: 7,
    question: "What is a fact about owls?",
    answer:
      "An owl cannot rotate its eyes, so it turns its whole head instead.",
    created_at: "2026-03-25T16:05:00.000Z",
    answered_at: "2026-03-25T16:21:00.000Z",
  },
  {
    id: 8,
    question: "What is a fact about capybaras?",
    answer:
      "Capybaras are the largest rodents in the world and are excellent swimmers.",
    created_at: "2026-03-25T18:45:00.000Z",
    answered_at: "2026-03-25T19:07:00.000Z",
  },
  {
    id: 9,
    question: "What is a fact about penguins?",
    answer: "Penguins have solid bones, which help them dive instead of float.",
    created_at: "2026-03-25T21:20:00.000Z",
    answered_at: "2026-03-25T21:55:00.000Z",
  },
  {
    id: 10,
    question: "What is a fact about bats?",
    answer: "Bats are the only mammals capable of sustained powered flight.",
    created_at: "2026-03-26T00:10:00.000Z",
    answered_at: "2026-03-26T00:32:00.000Z",
  },
];

const DEV_QUESTION_STATS: QuestionStats = {
  asked: 16,
  answered: DEV_QUESTIONS.length,
};

export async function getQuestions(): Promise<Question[]> {
  if (import.meta.env.DEV) return DEV_QUESTIONS;

  const res = await fetch("/api/questions");
  if (!res.ok) throw new Error("Failed to fetch questions");
  return res.json() as Promise<Question[]>;
}

export async function getQuestionStats(): Promise<QuestionStats> {
  if (import.meta.env.DEV) return DEV_QUESTION_STATS;

  try {
    const res = await fetch("/api/questions/stats");
    if (!res.ok) throw new Error("Failed to fetch question stats");
    return res.json() as Promise<QuestionStats>;
  } catch {
    const questions = await getQuestions();
    return {
      asked: questions.length,
      answered: questions.length,
    };
  }
}

export async function submitQuestion(question: string): Promise<void> {
  const res = await fetch("/api/questions", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ question }),
  });
  if (!res.ok) {
    if (res.status === 429)
      throw new Error("Too many questions. Please try again later.");
    throw new Error("Failed to submit question");
  }
}
