import ApiService from "./ApiService";

export interface CreateDomainData {
  title: string;
}

export interface DomainResponse {
  ID: number;
  Title: string;
}

export interface DomainsListResponse {
  message: string;
  error: boolean;
  code: number;
  results: {
    current_page: number;
    data: DomainResponse[];
    first_page_url: string;
    from: number;
    last_page: number;
    last_page_url: string;
    links: any[];
    next_page_url: string | null;
    path: string;
    per_page: number;
    prev_page_url: string | null;
    to: number;
    total: number;
  };
}

export interface GetDomainsParams {
  search?: string;
  per_page?: number;
  page?: number;
  sort_by?: string;
  sort_order?: 'asc' | 'desc';
}

export async function apiGetDomains(params?: GetDomainsParams) {
  return ApiService.request<DomainsListResponse>({
    url: "v1/domains",
    method: "get",
    params: params || {},
  });
}

export async function apiCreateDomain(data: CreateDomainData) {
  return ApiService.request<{
    message: string;
    error: boolean;
    code: number;
    results: DomainResponse;
  }>({
    url: "v1/domains",
    method: "post",
    data,
  });
}

export async function apiUpdateDomain(id: number, data: Partial<CreateDomainData>) {
  return ApiService.request<{
    message: string;
    error: boolean;
    code: number;
    results: DomainResponse;
  }>({
    url: `v1/domains/${id}`,
    method: "put",
    data,
  });
}

export async function apiDeleteDomain(id: number) {
  return ApiService.request<{
    message: string;
    error: boolean;
    code: number;
    results: [];
  }>({
    url: `v1/domains/${id}`,
    method: "delete",
  });
}
