import { getWithAuth, postWithAuth, patchWithAuth, deleteWithAuth } from '../fetchWithAuth';
import { extractApiError } from './apiError';

const API_BASE = `${import.meta.env.VITE_EFC_API_URL}/datastage/datastages/`;

export async function fetchTaskStatus(task_id) {
  const url = `${import.meta.env.VITE_EFC_API_URL}/datastage/datastages/task-status/?task_id=${encodeURIComponent(task_id)}`;
  const res = await getWithAuth(url);
  if (!res.ok) throw new Error(await extractApiError(res));
  return res.json();
}

export async function fetchDatastages(page = 1, page_size = 10) {
  const url = `${API_BASE}?page=${page}&page_size=${page_size}`;
  const res = await getWithAuth(url);
  if (!res.ok) throw new Error(await extractApiError(res));
  return res.json();
}

export async function fetchDatastageDetail(id) {
  const res = await getWithAuth(`${API_BASE}${id}/`);
  if (!res.ok) throw new Error(await extractApiError(res));
  return res.json();
}

export async function createDatastage(data) {
  const res = await postWithAuth(API_BASE, data);
  if (!res.ok) throw new Error(await extractApiError(res));
  return res.json();
}

export async function updateDatastage(id, data) {
  const res = await patchWithAuth(`${API_BASE}${id}/`, data);
  if (!res.ok) throw new Error(await extractApiError(res));
  return res.json();
}

export async function deleteDatastage(id) {
  const res = await deleteWithAuth(`${API_BASE}${id}/`);
  if (!res.ok) throw new Error(await extractApiError(res));
  return true;
}
